27.12.2014 Views

Android RIA - Magic Software DEVNET Japan

Android RIA - Magic Software DEVNET Japan

Android RIA - Magic Software DEVNET Japan

SHOW MORE
SHOW LESS

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 />

ります。

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!