Android RIA - Magic Software DEVNET Japan
Android RIA - Magic Software DEVNET Japan
Android RIA - Magic Software DEVNET Japan
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Android</strong> での<strong>Magic</strong> <strong>RIA</strong><br />
はじめの 一 歩
目 次<br />
目 的 と 前 提 条 件<br />
Hello <strong>Magic</strong> プログラム<br />
<strong>Android</strong> <strong>RIA</strong>プログラムの 特 性<br />
カスタムモジュールの 作 成<br />
付 録
目 的 と 前 提 条 件<br />
目 的 : <strong>Magic</strong> xpa 2.2 を 使 った、<strong>Android</strong> <strong>RIA</strong> プログラム 開 発 の 基 本<br />
を 理 解 することが 目 的 です。<br />
環 境 的 な 前 提 条 件 としては:<br />
Windows PC 上 に、<strong>Magic</strong> xpa 2.2 Enterprise Studio (あるいは<br />
体 験 版 ) をインストールしてあること。<br />
<strong>Android</strong> デバイスを 所 有 していて、テストに 使 えること。<br />
※ <strong>Android</strong> SDKのエミュレータでも 可 能 です。<br />
<strong>Magic</strong> xpa Studio のあるPCへ、<strong>Android</strong>からネットワーク 接 続 で<br />
きること。<br />
読 者 のスキルの 前 提 条 件 としては:<br />
<strong>Magic</strong> xpa 2.2 (あるいは uniPaaS V1Plus) で、Windows <strong>RIA</strong> シ<br />
ステムを 作 成 した 経 験 があること。<br />
<strong>Android</strong>アプリの 開 発 経 験 は 前 提 としません。( 経 験 あればもっと<br />
良 い)<br />
※ サポートしているWindowsバージョン、<strong>Android</strong>バージョン 等 については、<br />
弊 社 HPを 参 照 してください。<br />
http://devnet.magicsoftware.co.jp/magicxpa/magicxpa2/dbmsmagicxpa2/
本 資 料 について<br />
本 書 は、 製 品 添 付 「モバイル<strong>RIA</strong> 開 発 者 ガイド」をもとに、 基 本<br />
的 なことだけを 抜 き 出 し、ステップバイステップで 実 行 できるよう<br />
に 編 集 したものです。<br />
「モバイル<strong>RIA</strong> 開 発 者 ガイド」は、モバイル <strong>RIA</strong> (<strong>Android</strong>, iOS<br />
共 に) に 固 有 な 技 術 情 報 を 包 括 的 にまとめてあり、 本 書 に 掲 載<br />
されていない 詳 しい 情 報 も 多 くありますので、モバイル<strong>RIA</strong> 開 発<br />
に 先 立 ち、そちらもご 一 読 ください。
Hello <strong>Magic</strong> プログラム<br />
何 はともあれ、まずは 最 も 簡 単 なプログラムを 例 に<br />
取 って、<strong>Android</strong> <strong>RIA</strong>を 動 かしてみましょう
PC 側 準 備<br />
<strong>Android</strong> デバイス 上 で 実 行 する 前 に、まずPC 上 での 準 備 をしておき<br />
ましょう。<br />
1. <strong>Magic</strong> xpa Enterprise Studio をインストールします( 説 明 省 略 )<br />
2. Pervasive PSQL をインストールします ( 説 明 省 略 )<br />
3. <strong>RIA</strong>サンプルプログラム Hello <strong>Magic</strong> を 作 成 します。<br />
4. Windows <strong>RIA</strong>で 動 作 確 認 します。
Hello <strong>Magic</strong> プログラム 作 成<br />
<strong>Android</strong> <strong>RIA</strong> アプリケーションも、Windows <strong>RIA</strong>と 同 じようにして 作<br />
成 します。<br />
1. Hello プロジェクト 作 成<br />
2. Hello <strong>Magic</strong> プログラム 作 成 ( 公 開 名 hello)<br />
変 数 表 示 のみのタスク<br />
※ 「 外 部 」 にチェックを 入 れるのを 忘 れないように
フォームエディッタ
F7 実 行 (Windows <strong>RIA</strong>)で 確 認<br />
Studio プログラムリポジトリから、F7 でテ<br />
スト 実 行 してみます。<br />
<strong>Magic</strong>が 正 しくインストールされていれば、<br />
問 題 なく 実 行 されるはずです。<br />
ここで 何 らかのエラーが 出 るようであれば、<br />
<strong>Android</strong> に 進 む 前 に、エラーを 解 決 してお<br />
いてください。<br />
F7 実 行
<strong>Android</strong> 上 で 実 行 してみましょう<br />
Windows <strong>RIA</strong>で 実 行 を 確 認 したら、いよいよ <strong>Android</strong> 上 で 実 行<br />
してみましょう。<br />
手 順 は、 大 きく 分 けて、 以 下 のようになります:<br />
1. <strong>Android</strong>モジュールをインストールします。<br />
2. DevProps.txt を 編 集 、Webサーバ 上 に 置 きます。<br />
3. <strong>RIA</strong>サーバを 待 機 状 態 にしておきます。<br />
4. <strong>Android</strong>モジュールを 起 動 します。<br />
→ これで 動 くはず!!
インストールに 先 立 って 準 備<br />
<strong>Android</strong>のデフォルトの 設 定 では、Google Play からダウンロー<br />
ドしたアプリしかインストールできないようになっています。(エ<br />
ラーが 出 ます)<br />
<strong>Magic</strong> の<strong>RIA</strong>モジュールをインストールするには、この 制 限 を 解<br />
除 しておく 必 要 があります。<br />
※ インストール 時 にだけ 解 除 して、インストール 後 には 元 に 戻<br />
して 良 いです。
アプリインストール 制 限 を 解 除 するには<br />
<strong>Android</strong> の「 設 定 」 → セキュリティ<br />
→ 提 供 元 不 明 のアプリ にチェック<br />
を 入 れます。<br />
これで 解 除 されます。<br />
制 限 をもとに 戻 すには、このチェッ<br />
クを 外 します。
<strong>Android</strong> モジュールをインストール<br />
<strong>Magic</strong> xpa の <strong>Android</strong> <strong>RIA</strong> 用 のモジュールは、<br />
<strong>RIA</strong>Modules¥<strong>Android</strong>¥ MyApp.apk にあります。
<strong>Android</strong>モジュールをインストール<br />
1. アプリ MyApp.apk を<strong>Android</strong> デバイスにコピーします。<br />
※ ファイルをコピーするには、 次 のいずれかの 方 法 によります。<br />
Webサーバからダウンロード<br />
(IISのMIME 設 定 必 要 → 付 録 参 照 )<br />
マイクロSD<br />
USB 接 続<br />
メール<br />
クラウドファイル 共 有 サービス<br />
2. MyApp.apk をダブルクリックします。<br />
→ モジュールがインストールされます。
MyApp.apk の 注 意 事 項<br />
添 付 MyApp.apk は、 開 発 時 動 作 確 認 用 の 暫 定 モジュールで<br />
す。<br />
実 運 用 時 には、MyApp.apk は 使 わず、アプリケーション 用 にカ<br />
スタマイズしたモジュールをビルドして 利 用 します。<br />
カスタマイズの 項 目 と 方 法 → 別 冊 で 説 明 。
DevProps.txtファイルを 編 集 します<br />
DevProps.txtは、 実 行 しようとするMobile <strong>RIA</strong> アプリケーション<br />
について、サーバ 側 情 報 を 定 義 したファイルです。<br />
C:¥InetPub¥wwwroot¥DevProps.txt に、 以 下 のような 内 容 で<br />
ファイルを 作 成 します。<br />
※ サーバ 構 成 /プロジェクト 名 / 公 開 プログラム 名 に 合 わせて、 設 定<br />
を 変 更 してください。<br />
<br />
<br />
( 補 足 ) DevProps.txt という 名 前 について<br />
DevProps.txt という 名 前 は、 任 意 に 変 更 して 構 いません。<br />
以 下 では、DevProps.txt という 名 前 を 前 提 に 説 明 します。 異<br />
なる 名 前 にした 場 合 には、それに 応 じて 変 更 してください。<br />
拡 張 子 は .txt のままにしておくのが 無 難 です。<br />
※ 拡 張 子 を 変 えると、IISのセキュリティ 機 能<br />
に 引 っかかることがあります。
DevProps.txt を 確 認 します<br />
Webサーバでアクセスできることを 確 認 してください。<br />
例 : ファイルが<br />
C:¥InetPub¥wwwroot¥DevProps.txt<br />
に 置 いてあれば、URL は<br />
http://MGSTUDIO/DevProps.txt<br />
となります。<br />
Webブラウザから、このURLを 指 定 して、DevProps.txt の 内<br />
容 が 正 しく 表 示 されることを 確 認 します。<br />
※ この URL は、<strong>RIA</strong>クライアント 起 動 時 にアクセスします
DevProp.txtの 確 認 の 補 足<br />
DevProps.txt は、PC 上 のWebブラウザだけでなく、<strong>Android</strong>デ<br />
バイス 上 でのWebブラウザからも 行 なってみてください。<br />
( 経 験 上 ) <strong>Android</strong>では、LAN 上 のホスト 名 解 決 ができないこと<br />
があるようです。その 場 合 には、「サーバが 見 つからない」という<br />
ようなエラーとなります。<br />
もし、Windows PC 上 のWebブラウザではOKなのに、<strong>Android</strong><br />
のWebブラウザでダメならば、Windows PCのホスト 名<br />
(MGSTUDIO) を 数 字 のIPアドレス ( 例 :192.168.1.8 とか。<br />
ネットワーク 環 境 により 違 います)に 変 えてみてください。<br />
※ その 場 合 には、DevProps.txt 内 のホスト 名 も、IPアドレスに 変<br />
えてください。
メインプログラム 画 面 の 表 示 を 抑 制 します<br />
サーバを 待 機 状 態 にしておく<br />
前 に、 一 点 、プロジェクトを 修<br />
正 します。<br />
メインプログラム → タスク 特<br />
性 → インターフェース タブ →<br />
ウィンドウ 表 示 を No に 設 定 し<br />
ます。<br />
これにより、メインプログラム<br />
の 画 面 が 表 示 されないように<br />
なります。<br />
参 考 : メインプログラムの 画 面 を 非 表 示 にする 理 由<br />
は、 付 録 「メインプログラムのウィンドウ 表 示 」を 参 照<br />
してください。
サーバを 待 機 状 態 にしておきます<br />
「デバッグ → プロジェクトの 実 行 (J)」で<br />
待 機 状 態 にします→ タイトルが<br />
Executing… になります。
MyApp 起 動<br />
<strong>Android</strong> 上 で、MyApp をタップし<br />
ます。<br />
アプリケーション 情 報 を 入 力 する<br />
ダイアログが 出 るので、<br />
DevProps.txt のURLを 指 定 しま<br />
す。<br />
成 功 !!(のはず)<br />
‣ このURLの 情 報 は 記 憶 されるので、 最 初 に<br />
一 度 入 力 したら、 二 回 目 以 降 は 出 て 来 ま<br />
せん。<br />
‣ ホスト 名 が 正 しく 認 識 されない 場 合 には、<br />
IPアドレスを 指 定 してください。
MyApp を 終 了 するには・・・<br />
終 了 するには 「 戻 る」ボタンを 押 します。
気 になる 背 景 色 を 変 更 しましょう<br />
背 景 が 黒 色 で 表 示 されている。 変 えたい・・・<br />
← フォームの 色 1 が、Windows システム 色 のためです。<br />
※ Windows システム 色 の 場 合 、<strong>Android</strong> のデフォルトの 動 作 (= 黒 色 ) となります。
色 定 義 ファイルを 変 更 します<br />
clr_rnt.jpnをコピーして、このアプリケーション 専 用 の 色 設 定 ファ<br />
イルにしましょう。<br />
プロジェクトのフォルダの 下 に、ENVフォルダを 作 成 します。<br />
clr_rnt.jpn を、プロジェクトのENVフォルダにコピーして、<br />
clr_hello.jpn に 改 名 します。<br />
このファイルを、アプリケーション 特 性 → 外 部 参 照 ファイル<br />
タブ → アプリケーション 基 本 色 定 義 ファイル に 設 定 します。<br />
ズームして、アプリケーション 用 基 本 色 テーブルを 表 示 しま<br />
す。<br />
色 1 の 背 景 で、システム 色 の 設 定 を 外 します。
再 度 実 行 して 確 認 しましょう<br />
再 度 実 行 してみます。<br />
→ 今 度 は 背 景 が 白 色 になったはずです。
<strong>Android</strong> <strong>RIA</strong>の 特 性 を 理 解 しましょう
<strong>Android</strong> <strong>RIA</strong>の 特 性<br />
<strong>Android</strong> のような、MobileデバイスとWindows PCを 比 べると、<br />
デバイスのハードウェア 特 性 の 違 い、OS の 違 い、ユーザ・イン<br />
ターフェース (UI) の 基 本 動 作 やコンポーネントなどが 大 きく 違<br />
います。<br />
このため、Windows <strong>RIA</strong>の 開 発 と 同 じ 感 覚 で 作 成 していると、<br />
<strong>Android</strong> デバイス 上 で 実 行 すると、 非 常 に 使 いにくいものになっ<br />
てしまう 可 能 性 があります。<br />
アプリケーションを 開 発 するに 先 立 って、<strong>Android</strong> デバイスの 動<br />
作 の 特 徴 をよく 理 解 して、アプリケーションを 設 計 しましょう。
<strong>Android</strong> <strong>RIA</strong>アプリのフォーム 表 示 について<br />
Mobile デバイス (<strong>Android</strong>、iOSとも) 上 のアプリの 一 般 的 な 特<br />
性 として、Windows アプリとはUIがかなり 異 なります。<br />
( 基 本 的 に) すべてフルスクリーン 画 面 → モーダル<br />
タスクの 終 了 = 「 戻 る」ボタン (ESCキーに 相 当 )<br />
HOMEキーでは 終 了 しない ( 背 後 で 動 作 し 続 けている)
テスト 用 親 子 タスク<br />
※ 簡 単 な 親 子 タスクを 作 って、 実 際 に 確 認 してみましょう。<br />
ボタンで 子 タスクを 呼 び 出 すだけの、 簡 単 な 親 子 タスクを 作 りま<br />
す。
Windows <strong>RIA</strong>では・・・<br />
親 タスク、 子 タスクの 画 面 が、フォームエディタで 定 義 された<br />
通 りの 大 きさと 位 置 で 表 示 されます。
<strong>Android</strong> <strong>RIA</strong>では・・・<br />
DevProps.txt を 編 集 し、 公 開 名 を、 新 たに 作 成 した 親 子 タスクに 変 更<br />
します。<br />
<br />
実 行 すると、 子 タスクはフルスクリーンで 表 示 され、 親 タスクのフォー<br />
ム 全 体 を 覆 うように 表 示 されます。<br />
APP<br />
起 動<br />
戻 る<br />
ボタン<br />
フルスクリーン<br />
で 表 示 される。<br />
コール<br />
戻 る<br />
ボタン<br />
子 タスクが 親<br />
タスクのフォー<br />
ム 全 体 を 覆 う<br />
ように 表 示 さ<br />
れる。<br />
アプリが 終 了<br />
する。
「ホーム」ボタンの 動 作 は<br />
<strong>Android</strong> には、「 戻 る」ボタンの 他 に、「ホーム」ボタンがあります。<br />
どちらを 押 しても、アプリの 画 面 が 消 えるので、 一 見 、どちらでも<br />
良 さそうに 思 えますが、 動 作 に 大 きな 違 いがあります。<br />
ホームボタンでは、アプリは 終 わりません。<br />
ホームボタンは、アプリの 画 面 を 隠 すだけ。Windowsの「 最<br />
小 化 」みたいなものです。<br />
再 度 アプリを 起 動 すると、 直 前 の 画 面 が 復 元 されます。
APP<br />
起 動<br />
コール<br />
ホームボタン<br />
再 度 APP 起 動<br />
背 後 でまだ 動 いている。<br />
( 終 了 していない)<br />
ホームボタン<br />
を 押 す
正 しいアプリの 終 わり 方 は<br />
最 初 のタスクで、「 戻 る」ボタンを 押 す。<br />
最 初 のタスクで、「クローズ(C)」 イベントを 発 行 する。<br />
「 終 了 (X)」イベントを 発 行 する。<br />
※ 「 終 了 」イベントではありません。
キーボード 入 力 は<br />
<strong>Android</strong>デバイスでは、 基 本 的 にハードウェアキーボードやマウスがついてい<br />
ません。<br />
次 のようなケースではハードウェアキーボードを 使 えますが、 一 般 的 には 使 え<br />
ないという 前 提 でアプリケーションを 設 計 する 必 要 があります。<br />
タブレット 型 のデバイスには、ハードウェアキーボードが 付 いているものも<br />
あります。<br />
Bluetooth キーボードをサポートしているものもあります。<br />
データ 入 力 は、 次 のものを 使 って 行 います。<br />
指 でのタップ (マウス 代 わり)<br />
ソフトキーボード<br />
ハードウェアキーボードがないので、Windows <strong>RIA</strong>で 当 たり 前 にできていたこ<br />
とができなくなることが 多 々あります。<br />
「 何 ができて、 何 ができないか」は、ソフトキーボードの 機 能 に 大 きく 依 存 しま<br />
す。<br />
<strong>Android</strong>の 場 合 、ソフトキーボードは 各 社 各 様 ですので、 利 用 予 定 のデバイス<br />
に 付 属 のソフトキーボードの 仕 様 も 把 握 しておく 必 要 があります。
ソフトキーボード 例
ソフトキーボードでの 制 約 は<br />
※ ソフトキーボードは 各 社 各 様 ですが、 一 般 的<br />
な 制 約 事 項 を 挙 げると・・・<br />
Tab キーがない → 指 でタップして 移 動<br />
Ctrl キーがない →<br />
モード 変 更 (Ctrl+M, Ctrl+E、Ctrl+Q) で<br />
きない<br />
コピペ (Ctrl+C、Ctrl+P、Ctrl+V)できない<br />
ファンクションキーがない<br />
ズーム (F5)、キャンセル (Ctrl+F2) 不 可<br />
矢 印 キーがない (↑、↓、→、←)<br />
カーソル 移 動 は 指 でタップするしかない<br />
新 規 行 作 成 できない
キーボードの 代 わりの 手 段 を 提 供 しましょう<br />
これらの 制 限 に 対 応 する 手 段 を 提 供 す<br />
るようにしましょう。<br />
ボタンの 追 加 : 行 作 成 、 行 削 除 、タ<br />
スクモード 切 り 替 えなどをボタンに 割<br />
り 当 てます。<br />
メニュー: メニューに 内 部 イベントを<br />
設 定 します。<br />
プログラムロジック: 行 の 最 後 の 項<br />
目 に 入 力 がされれば、「 次 行 」イベン<br />
トを 発 行 する、などのロジックを 組 込<br />
みます。
フォームやコントロールの 特 性 を 理 解 しましょう<br />
<strong>Magic</strong> Studio のフォームエディッタは、Windows のGUI 部 品 によって<br />
表 示 されます。<br />
一 方 、<strong>Android</strong>デバイス 上 で 実 行 する 際 は、 <strong>Android</strong> のGUI 部 品 に<br />
よって 表 示 されます。<br />
したがって、フォームエディタ 上 と 実 際 の 画 面 で 見 え 方 が 異 なります。<br />
アプリのフォーム 設 計 を 始 める 前 に、フォームエディタと 実 際 の 表 示 と<br />
の 違 いについて、よく 把 握 しておきましょう。<br />
主 な 確 認 項 目 は 次 のようなものです:<br />
フォームサイズ<br />
文 字 の 大 きさ<br />
コントロールの 形 状 (エディット、プッシュボタン、コンボボックス、<br />
チェックボックス) とサイズ<br />
Windowsシステム 色 の 効 果<br />
<strong>Android</strong> 独 自 のフォント
フォームサイズ<br />
iOS の 場 合 には、iPhone、iPad、iPad mini で、デバイスの 種<br />
類 はそう 多 くはありません。<br />
<strong>Android</strong>の 場 合 には、 非 常 に 多 種 多 様 なデバイスがあり、 画 面<br />
解 像 度 も 全 部 違 います。<br />
「すべてのデバイスに 対 応 したフォーム」を 設 計 するのは、 事 実<br />
上 不 可 能 です。<br />
利 用 予 定 の 機 種 を 選 定 し、それを 前 提 としたフォーム 設 計 を 行<br />
います。
フォームサイズの 測 定<br />
フォーム 設 計 の 第 一 歩 は、フォームサイズの 把 握 です。<br />
大 きすぎても、 左 右 ・ 上 下 にスクロールして 見 ることはでき<br />
ますが、 使 用 感 は 悪 くなります(※)。<br />
<strong>Magic</strong>のフォームサイズ 自 動 調 整 機 能 は 有 効 で、 多 少 の<br />
画 面 サイズの 違 いは、これで 吸 収 可 能 です。<br />
しかし、あまり 大 きく 違 うと 画 面 が 間 延 びしたり、 重 なってご<br />
ちゃごちゃ 詰 め 込 みすぎになったりしてしまいます。<br />
※ スクロールについての 注 意 事 項 があります → 「フォームのスクロー<br />
ルの 基 本 」 以 下 参 照 。
自 動 調 整 がうまく 行 かず、ご<br />
ちゃごちゃしすぎの 画 面<br />
まのびしすぎた 画 面
画 面 サイズを 測 りましょう<br />
寸 法 単 位 は、「C=センチメートル」にするのが、 一 番 簡 単 なよ<br />
うです。<br />
実 際 のデバイスの 画 面 サイズを cm で 測 り、フォームのサイ<br />
ズとします。
理 屈 通 りにはいかない・・・<br />
現 実 の <strong>Android</strong> デバイスで 表 示 させてみ<br />
ると・・・<br />
寸 法 単 位 を「C=センチメートル」として<br />
も、 指 定 した 通 りのサイズに 表 示 され<br />
るとは 限 りません。<br />
更 に、 縦 と 横 で 長 さが 微 妙 に 違 うもの<br />
もあります。<br />
右 のような 画 面 を 作 って、 実 際 のサイ<br />
ズを 計 測 してみましょう。
画 面 サイズ 計 測 例<br />
フォームエディタ 上 で 10 cm のものが・・・<br />
Samsung Galaxy SC-01C: ほぼ 10cm で 表 示 された。<br />
( 正 確 )<br />
Samsung Galaxy Tab 7.7 (SC-01E): 8.1cmで 表 示 され<br />
た。<br />
Nexus 7: 横 は9.1cm、 縦 は9.4cm で 表 示 された<br />
参 考 : なぜ、このような 結 果 になるのですか<br />
‣ <strong>Magic</strong>は、<strong>Android</strong> OS のAPIを 通 して、 画 面 の dpi (Dot per inch) を<br />
取 得 して、それをもとにコントロールのサイズ 計 算 を 行 います。<br />
‣ フォームエディタ 上 で10cmになるはずのものが、10cmで 表 示 され<br />
ないのは、APIが 返 すdpi 値 と、 現 実 のdpi 値 とが 異 なっているため<br />
です。
フォームサイズの 計 算<br />
画 面 の 物 理 サイズ = フォームサイズ ✕ 縮 小 倍 率<br />
なので、<br />
フォームサイズ = 画 面 の 物 理 サイズ ÷ 縮 小 倍 率<br />
となります<br />
例 : Galaxy Tab 7.7 SC-01E の 場 合<br />
画 面 の 物 理 サイズ (タイトル 部 分 を 除 く): 10.3 ✕ 15.5 cm<br />
縮 小 倍 率 : 10cm のものが 8.1cm で 表 示 されたのだから、0.81<br />
∴ フォームサイズは<br />
横 (W): 10.3/0.81 = 12.7cm<br />
縦 (H): 15.5/0.81 = 19.1 cm
フォームモデルを 登 録 しましょう<br />
基 本 のフォームサイズが 決 まったら、モデルに 登 録 しておきま<br />
しょう
基 本 フォームサイズを 決 めます<br />
上 記 のような 計 測 を、 利 用 予 定 の 各 デバイスについて 行 います。<br />
その 中 で、 小 さめのものを 基 準 にして、 基 本 フォームサイズを 決<br />
定 しましょう。<br />
画 面 の 大 きさが 大 きく 異 なるフォームモデルを、2~3 種 類 ほど<br />
登 録 しておくのがよいでしょう。<br />
大 → タブレット 向 け<br />
小 → スマホ 向 け<br />
中 → ( 必 要 に 応 じ) 小 型 タブレット
コントロールのサイズ<br />
コントロールについても、Studio のフォームエディタ 上 の 表 示 と、<br />
<strong>Android</strong> デバイス 上 での 実 際 の 見 え 方 は 異 なります。<br />
エディットコントロール<br />
プッシュボタン<br />
コンボボックス<br />
チェックボックス<br />
一 般 に、Windows <strong>RIA</strong>と 比 べ、<br />
余 白 や 境 界 線 が 大 きいので、そのままだと 文 字 が 潰 れます。<br />
サイズを 大 きめに 作 成 してください。<br />
機 種 により 見 え 方 が 異 なるので、 実 機 で 確 認 しましょう。
Galaxy SC-01C Nexus 7
文 字 の 大 きさを 確 認 しましょう<br />
フォームが 決 まったら、 次 に、 標 準 文<br />
字 サイズを 決 めましょう。<br />
同 じ9ptのフォントでも、 実 際 に 表 示 さ<br />
れる 大 きさが 異 なることが 多 いようで<br />
す。<br />
文 字 が 大 きすぎると、 表 示 できる 内 容<br />
が 少 なくなります。 小 さすぎると 読 み<br />
にくくなります。<br />
ボタンが 小 さすぎると、 指 で 押 すのに<br />
苦 労 します。<br />
これも、 実 機 で 使 用 感 を 確 認 しておき<br />
ましょう。
エディットコントロールでのデータ 入 力<br />
<strong>Android</strong> 上 でエディットコントロールにデータを 入 力 するには、 一<br />
般 的 にはソフトキーボードを 使 います。<br />
ソフトキーボード 操 作 については、すでに「ソフトキーボードでの<br />
制 約 は」 以 下 で 説 明 しました。<br />
それ 以 外 に 次 のような 点 に 留 意 してください。<br />
マスク 文 字 の 扱 い: 入 力 完 了 後 に 適 用 されます。<br />
IME 制 御 (「 漢 字 入 力 」 特 性 ): ソフトキーボードの 種 類 の 自<br />
動 設 定 として 実 装 されています。<br />
日 付 ・ 時 刻 型 : DateTime Picker が 使 えます。<br />
ソフトキーボードを 表 示 させないようにするには
マスク 文 字 の 扱 い<br />
入 力 中 は、マスク 文 字<br />
が 適 用 されません。<br />
エディットコントロール<br />
から 抜 けた 時 点 で 適<br />
用 されます。<br />
初 期 状 態 : マ<br />
スク 文 字 が 表<br />
示 されている<br />
入 力 中 : マス<br />
ク 文 字 は 表 示<br />
されない。<br />
参 考 : ソフトキーボードの<br />
入 力 予 測 機 能 を 活 用 する<br />
ための 仕 様 です。<br />
入 力 終 了 後 (フォーカ<br />
ス 移 動 ): 入 力 データ<br />
にマスク 文 字 が 適 用<br />
されて 表 示 される。
IME 制 御<br />
<strong>Android</strong> <strong>RIA</strong>でのIME 制 御 機 能 は、ソフトキーボードの 種 類 の<br />
指 定 、という 形 で 実 現 されています。
IME 制 御 : 文 字 型 およびUNICODE 型 の 場 合<br />
標 準 : かな 漢 字 入 力 あり。 入 力<br />
予 測 あり。<br />
半 角 英 数 : かな 漢 字 機 能 なし。<br />
入 力 予 測 なし。<br />
「 漢 字 入 力 」 特 性 では、8 ( 半 角 英 数 )<br />
のみ 有 効 。<br />
K 書 式 では、K0 および K8 (いずれも、<br />
半 角 英 数 )のみ 有 効 。<br />
注 意 : ソフトキーボードの 機<br />
能 に 依 存 します。
IME 制 御 : 数 値 型 の 場 合<br />
数 値 : 数 字 キーパッドが 表 示 されます。<br />
かな 漢 字 機 能 、 入 力 予 測 はありません。
日 付 ・ 時 刻 型 : DateTimePickerが 使 えます<br />
日 付 型 、あるいは 時 刻 型 のエディット 項<br />
目 にカーソルが 移 動 すると、<br />
DateTimePicker が 表 示 され、 値 を 設<br />
定 することができます。<br />
( 注 意 ) 時 刻 型 でDateTimePickerを 使<br />
うと、 秒 単 位 の 指 定 ができません。 秒 は<br />
00 になります。<br />
TimePicker<br />
DatePicker
DateTimePickerが 出 ないようにするには・・・<br />
DateTimePicker を 表 示 させないで、<br />
ソフトキーボードで 入 力 できるように<br />
したい 場 合 には、エディットコント<br />
ロールの「 追 加 情 報 」 特 性 に、<br />
picker=0 と 指 定 します。<br />
ソフトキーボード<br />
が 表 示 される
ソフトキーボードを 表 示 させないようにしたい・・・<br />
ソフトキーボードは、 画 面 の1/3 ~ 半 分 の 領 域 を 占 有 してし<br />
まうので、 入 力 を 行 わない 項 目 では、ソフトキーボードを 表 示 さ<br />
せないようにしたい、と 思 うことがあります。<br />
ソフトキーボードは、 入 力 ( 修 正 )ができないところでは 表 示 され<br />
ないので、<strong>Magic</strong>プログラム 側 で、 修 正 できないように 設 定 して<br />
やります。<br />
タスクを 照 会 モードとする → 全 てのエディットコントロールで、<br />
ソフトキーボードが 出 ないようになります。<br />
エディットコントロールの「 修 正 許 可 」 を No にします。
Windows システム 色 の 効 果<br />
※ Windowsシステム 色 が 指 定 されると、<strong>Android</strong>のネイティブの 表 示<br />
方 法 で 表 示 されます。<br />
フォーム: 背 景 が 黒 になります
エディット:<br />
大 きめの 枠 が 表 示 されま<br />
す<br />
コンボボックス:<br />
下 矢 印 が 表 示 されます
フォントを 変 えたいときには・・・<br />
<strong>Android</strong> に 標 準 で 備 わっているフォントの 数 は 限 られていま<br />
す。<br />
sans-serif → 飾 りが 無 い (ゴシック 似 )<br />
serif → 飾 りがある ( 明 朝 似 )<br />
monospace → 文 字 幅 が 一 定<br />
これらの 名 前 のフォントはStudioのフォントテーブルでは 設 定<br />
できないので、フォント 定 義 ファイルにテキストエディッタで 直<br />
接 修 正 します。
<strong>Android</strong> フォント 設 定 例<br />
・・・<br />
iOS Zapfino,Zapfino,9,128,0<br />
iOS,Helvetica,9,128,0<br />
メイリオ,メイリオ,9,128,0<br />
<strong>Android</strong> Sans,sans-serif,14,128,0<br />
<strong>Android</strong> Serif,serif,14,128,0<br />
<strong>Android</strong> Sans Mono,monospace,14,128,0<br />
<strong>Android</strong> Bold Serif,serif,14,128,0,Bold
<strong>Android</strong>フォント 表 示 結 果
フォーム 「 追 加 情 報 」<br />
フォームの「 追 加 情 報 」 欄 にフラグを 指 定 して、 以 下 のようなことが<br />
できます。<br />
orientation: 縦 長 、または 横 長 に 強 制 的 に 設 定 する。<br />
popup: ポップアップフォームにする。<br />
VerticalScroll, HorizontalScroll: スクロールの 方 法 を 指 定 。
フォーム 「 追 加 情 報 」 1 Orientation<br />
方 向 の 固 定 をしたい 場 合 には・・・<br />
orientation=Portrait ( 横 長 に 固 定 )<br />
orientation=Landscape ( 縦 長 に 固 定 )
フォーム 追 加 情 報 2 Popup<br />
ポップアップフォーム<br />
popup=Y<br />
→ ポップアップウィンドウになります。
フォームのスクロールの 基 本<br />
フォームが 画 面 サイズより 大 きい 場 合 、スワイプ 動 作 でスクロー<br />
ルできますか<br />
→ フォーム 全 体 がスクロールします。( 縦 方 向 、 横 方 向 ともに 可<br />
能 )<br />
スクロール
テーブルがある 場 合 のスクロール<br />
ただし、テーブルがある 場 合 には<br />
レコードがスクロールします ( 縦 方 向 )<br />
横 方 向 、フォーム 全 体 はスクロールしません。<br />
‣ ※ iOS の 場 合 には、テーブル 内 のレコードのスクロール、<br />
フォーム 全 体 のスクロール 両 方 が 可 能 でしたが、<strong>Android</strong> の<br />
場 合 にはどちらか 一 方 だけが 可 能 です。(これは<strong>Android</strong>の 制<br />
限 事 項 です)<br />
‣ この 動 作 は、テーブルの 他 に、ブラウザ、サブフォームがある<br />
場 合 にも 適 用 されます。
テーブルがある 場 合 のスクロール<br />
レコードのスクロールは<br />
できる。<br />
フォーム 全 体 のスク<br />
ロールはできない。<br />
( 縦 、 横 とも)
テーブルがある 場 合 のスクロール<br />
ということは・・・<br />
画 面 外 、 右 下 にあるボタンは、 表 示 できません。<br />
右 側 にはみ 出 したカラムは 表 示 できません。<br />
これが 画 面 範 囲 と<br />
すると・・・<br />
はみ 出 た 部 分 は 表<br />
示 できません
スクロール 関 係 の「 追 加 情 報 」 特 性<br />
デフォルトの 動 作 を 変 えたい 場 合 には・・・<br />
スクロールの 動 作 を 指 定 するため、フォームの「 追 加 情 報 」 特 性<br />
に、 以 下 を 指 定 します。<br />
ScrollVertical=Y/N ( 縦 方 向 のスクロール 指 定 )<br />
ScrollHorizontal=Y/N ( 横 方 向 のスクロール 指 定 )<br />
ScrollVertical= Y N<br />
フォーム 全 体 スクロールする スクロールしない<br />
テーブル 内 レコード スクロールしない<br />
スクロールする<br />
ScrollHorizontal= Y N<br />
フォーム 全 体 スクロールする スクロールしない<br />
テーブル 内 レコード スクロールしない<br />
スクロールしない
テーブルのある 場 合 のスクロール( 続 )<br />
縦 方 向 にはレコードのスクロールをして、 横 方 向 にはフォーム 全 体 の<br />
スクロールをする ( 右 側 にはみ 出 したカラムも 表 示 させたい)、という<br />
動 作 を 可 能 にするには、<br />
ScrollVertical=N,ScrollHorizontal=Y<br />
と 設 定 しておく。<br />
※ モデルに 登 録 しておく<br />
と 便 利
サブフォーム 内 のスクロール<br />
サブフォームの 中 の 子 タスクのスクロールについては、<br />
デフォルトの 動 作 として、フォーム 全 体 がスクロールされます。<br />
→ サブフォーム 中 のテーブルのレコードはスクロールしません。<br />
テーブルレコードをスクロールさせるには、<br />
VerticalScroll=N をサブフォームの「 追 加 情 報 」に 指 定 しま<br />
す。<br />
※ ブラウザコントロールの 場 合 も 同 様 です。
パフォーマンスに 関 する 考 慮 事 項<br />
Mobile デバイスは、CPUのパワーや、ソフトウェアの 実 装 方 法<br />
の 違 いにより、Windows PCよりかなり 遅 いです。<br />
∴ <strong>Magic</strong> のMobile <strong>RIA</strong>も 遅 いです。<br />
ということは、 画 面 設 計 、ロジックに 考 慮 が 必 要 になります。<br />
実 験 : 精 密 な 測 定 ではないが、 傾 向 を 見 てみましょう。<br />
ブロックWhileでループ<br />
コントロール 数 の 影 響
ブロック While ループ<br />
純 粋 な<strong>Magic</strong>クライアントモジュールの 処 理 速 度 比 較 として、ブロッ<br />
ク While コマンドで、10,000 回 のループを 回 すプログラムを 実 行 し、<br />
時 間 を 計 測 してみます。<br />
Windows <strong>RIA</strong>: 0.47 秒<br />
(Core2 Quad Q6600 @2.4GHz → 4 年 前 のCPU)<br />
<strong>Android</strong> <strong>RIA</strong>: 29.7 秒<br />
(Galaxy Tab 7.7、APQ8060 1.5GHz(Dual Core) → 最 新 の<br />
CPU)<br />
※ その 差 60 倍 以 上 !<br />
※ クアッドコアのCPUだと、 何 割 か 早 くなるが、 劇 的 な 改 善 は 期 待 でき<br />
ない。
コントロール 数 の 多 寡 による 違 い<br />
次 に、 画 面 上 のコントロール 数<br />
が 多 くなると、 処 理 速 度 がどう 変<br />
わるかを 見 てみましょう。<br />
APGでテーブル 形 式 表 示 プログ<br />
ラムを 作 成 します。<br />
タスク 起 動 から、 全 データが 表<br />
示 されるまでの 時 間 を 計 測 しま<br />
す。<br />
表 示 するカラムを 追 加 ・ 削 除 して、<br />
表 示 する 全 コントロール 数 を 変<br />
えて、 測 定 ・ 比 較 します。
計 測 結 果<br />
Windows <strong>RIA</strong>: 1 秒 以 内 に 表 示 されます。<br />
<strong>Android</strong> <strong>RIA</strong>:<br />
7カラム×25 行 (175コントロール) → 5.3 秒<br />
22カラム×25 行 (550コントロール) → 16 秒<br />
コントロール 数 が 増 えると、 非 常 に 遅 くなります。<br />
( 画 面 上 に 表 示 されているか 否 か、「 可 視 」 特 性 の 設 定 に 関 わり<br />
ません)<br />
スクロールも 同 様 に 遅 くなります。<br />
例 : 22×25のテーブルなどでは、ほとんど 動 かないと 言 ってい<br />
いほどの 遅 さになります。
パフォーマンスの 考 慮 (まとめ)<br />
Mobile デバイスは、Windows PCに 比 べて、 文 字 通 り 桁 違 いに<br />
非 力 です。(iOS デバイスでも、 同 様 のレベルです)<br />
Windows <strong>RIA</strong>と 同 じ 感 覚 で 多 くのコントロールを 配 置 して 画 面<br />
設 計 していると、 非 常 に 遅 くなる 可 能 性 があります。<br />
画 面 に 配 置 するコントロール 数 は 極 力 減 らすようにしてください。<br />
ロジックも 簡 単 化 してください。<br />
チャンクサイズは、 処 理 レコード 数 に 影 響 するので、 大 きすぎる<br />
とやはり 遅 くなります。 必 要 最 小 限 にしてください。<br />
参 考 : サーバ 側 ロジック (バッチタスクなど)は、<br />
サーバ 上 で 実 行 されるものなので、Mobile <strong>RIA</strong>でも<br />
Windows <strong>RIA</strong>でも 処 理 時 間 は 同 じです。
付 録
<strong>Android</strong> <strong>RIA</strong>で 使 えるコントロールは<br />
<strong>Android</strong> <strong>RIA</strong>では、 以 下 のコントロールが 利 用 できます。<br />
ラベル<br />
エディット<br />
ボタン<br />
グループ<br />
ライン<br />
イメージ<br />
ブラウザ<br />
チェックボックス<br />
コンボボックス<br />
テーブル<br />
カラム<br />
サブフォーム<br />
注 意 : これ 以 外 のコントロールは、<br />
Studio のフォームエディッタで 配 置 して<br />
も、 実 行 時 に 無 視 されます。
メインプログラムのウィンドウ 表 示<br />
Hello <strong>Magic</strong> 実 行 前 に、プロジェクトの 変 更 を 行 い、メインプログ<br />
ラム → タスク 特 性 → インターフェース タブ → ウィンドウ 表 示<br />
に No を 設 定 しました。<br />
これはなぜ 必 要 だったのでしょうか
この 設 定 をしておかないと・・・<br />
「ウィンドウ 表 示 」 特 性 を 設 定 しない (Yesのまま) で、「デバッグ<br />
→ プロジェクトの 実 行 (J)」で 待 機 状 態 にすると、ランタイムの 画<br />
面 が 表 示 されます。<br />
この 状 態 で、<strong>Android</strong> <strong>RIA</strong> を 起 動 すると、エラー -138 が 出 ます。<br />
エラーコード -138 の 意 味 は、「オンラインのMDIが 開 いている<br />
場 合 、リッチクライアントのリクエストは 処 理 できません」です。<br />
※ Mgerror.log にも 記 録 されます。
対 応 方 法 は<br />
待 機 状 態 で、オンライン<br />
の MDI 画 面 を 開 かない<br />
ようにしておく 必 要 があり<br />
ます。<br />
この 画 面 が 出 な<br />
いようにする 必<br />
要 がある。
対 応 方 法 1: バックグラウンドで 起 動<br />
動 作 環 境 の「 実 行 モード」を「B=<br />
バックグラウンド」にセットして<br />
Studio を 起 動 すると、オンライン<br />
のMDI 画 面 が 表 示 されないので、<br />
エラーが 出 なくなります。<br />
<strong>RIA</strong>サーバで 実 際 に 運 用 する 場 合<br />
には、この 設 定 で 実 行 します。<br />
Studioでこの 設 定 を 使 っていると、<br />
オンラインのプログラムが 実 行 で<br />
きません。<br />
例 : データリポジトリからAPGで 表<br />
示 、プログラムリポジトリからF7で<br />
オンラインプログラムの 実 行 など<br />
ができない。<br />
→ 開 発 時 にはちょっと 不 便 な 設 定<br />
かも。
対 応 方 法 2: ウィンドウ 表 示 をNoに<br />
別 の 対 応 方 法 としては、メインプログラムの「ウィンドウ 表 示 」を<br />
No にしておけば、オンラインのMDI 画 面 が 表 示 されなくなりま<br />
す。<br />
メインプログラムの 画 面 が 出 なくなるだけで、テーブルリポジトリ<br />
からのAPGとか、プログラムリポジトリから F7 でのオンライン<br />
実 行 などは、できます。<br />
Studio で 開 発 時 には、こうしておくのが 便 利 でしょう。<br />
参 考 : より 細 かな 制 御 をしたい 場 合<br />
には、RunMode() 関 数 を 使 って、<br />
「ウィンドウ 表 示 」を 式 で 設 定 するこ<br />
とも 考 えられます。
.apk ファイルをIISでダウンロード 可 能 にするには<br />
.apk ファイルをWebサーバの 仮 想 ディレクトリ 上 に 置 いて、<br />
<strong>Android</strong> のWebブラウザからダウンロードしようとすると、エ<br />
ラーが 出 ます。<br />
ダウンロード 可 能 にするには、IISでMIME 設 定 が 必 要 です。
MyApp.apk をIIS<br />
のルートディレ<br />
クトリに 置 く。<br />
<strong>Android</strong>からダ<br />
ウンロードしよう<br />
とするとエラー<br />
になる。<br />
参 考 : IISのバー<br />
ジョンにより、エ<br />
ラーメッセージ<br />
が 違 うことがあ<br />
ります。
IIS のMIME 設 定<br />
エラーを 回 避 するには、 以 下 のように、IISでMIME 設 定 を 行 う 必 要<br />
があります。<br />
拡 張 子 : .apk<br />
MIMEの 種 類 : application/vnd.android.package-archive
IISサービスマネージャ<br />
Default Web Site<br />
→ MIMEの 種 類<br />
追 加<br />
拡 張 子 とMIMEの 種<br />
類 を 設 定 。
このようになれば、ダウンロードできるようにな<br />
ります。