ヘッダーをスキップ

Oracle® Fusion Middleware Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.0.1 E57592-01 |
| 目次

前 | 次 |

# 3 モバイル・アプリケーション開発のスタート・ガイド

この章では、Oracle JDeveloperのウィザードおよびツールを使用してOracle Mobile Application Framework (MAF)を使用する基本的なアプリケーションを作成する方法について説明し、さらに、アプリケーションの作成時に自動的に生成されるアーティファクトについても説明します。

この章の内容は次のとおりです。

- 第3.1項「MAFアプリケーションの宣言的な開発の概要」

- 第3.2項「アプリケーション・ワークスペースの作成」

- 第3.3項「ADFモバイル・アプリケーションの移行」

## 3.1 MAFアプリケーションの宣言的な開発の概要

MAFはJDeveloperデザインタイム内に統合されているため、単純なモバイル・アプリケーション(およびより複雑なモバイル・アプリケーションの大部分)は、コードを1行も記述することなく作成、デプロイおよびテストできます。

## 3.2 アプリケーション・ワークスペースの作成

Oracle Mobile Application Framework拡張機能により、JDeveloperには、基本ファイルによって完全なプロジェクトをシードするアプリケーション・テンプレートが提供されています。MAFアプリケーションを作成する最初のステップは、名前を割り当て、ソース・ファイルを保存するディレクトリを指定することです。JDeveloperに用意されているアプリケーション・テンプレートを使用してアプリケーションを作成すると、ワークスペースが必要な構成ファイルとともに自動的に編成され、プロジェクトに含められます。

### 3.2.1 モバイル・アプリケーション用のワークスペースの作成方法

アプリケーションの作成ウィザードを使用して、アプリケーションを作成します。

始める前に

MAFアプリケーション拡張機能をダウンロードする必要があります。詳細は、第2.3項「JDeveloperの設定」を参照してください。すべてのターゲット・プラットフォームに対して、MAFアプリケーション拡張機能をダウンロードおよび構成する必要がある場合もあります。

モバイル・アプリケーションを作成するには:

1. 「ファイル」→「新規」→「アプリケーション」を選択します。

   図3-1 MAFアプリケーション・テンプレートの選択

2. 図3-1に示す「新規ギャラリ」で、「モバイル・アプリケーション・フレームワーク」を選択して「OK」をクリックします。

3. 「アプリケーション名」フィールドに、アプリケーションの名前を入力します(図3-2ではMobileApplication)。必要に応じて、「ディレクトリ」フィールドにプロジェクトの新しい場所を入力します。「アプリケーション・パッケージの接頭辞」フィールドに接頭辞を入力することで、アプリケーション・パッケージが一意となるようにします。「次へ」をクリックします。

   アプリケーションは、MAFアプリケーションの最上位構造になります。アプリケーションは、このウィザードの後続ページで定義する様々なプロジェクト層をまとめます。

   図3-2 MAFアプリケーションのネーミング

4. 図3-3に示すように、プロジェクト1の名前ページで、(必要に応じて)アプリケーション・コントローラ・プロジェクトの名前と場所を変更します。変更しない場合は、プロジェクトのデフォルト名、ApplicationControllerをそのまま使用します。このページの「プロジェクトの機能」ウィンドウには、アプリケーション・コントローラ・プロジェクトで使用できるテクノロジがリストされます。

   このプロジェクトにはアプリケーション全体のリソースがすべて格納されます。詳細は、表3-1を参照してください。

   図3-3 アプリケーション・コントローラ・プロジェクトとそのプロジェクト機能

5. 「次へ」をクリックして、アプリケーション・コントローラ・プロジェクトのJava設定ページ(図3-4に示すプロジェクト1のJava設定)に移動します。アプリケーション・コントローラ・プロジェクトのデフォルトのパッケージ名(`application`)と、Java `SOURCEPATH`ディレクトリ(`src`)およびJava出力ディレクトリ(`classes`)の場所を、そのまま使用するか変更します。

   図3-4 アプリケーション・コントローラ・プロジェクトのJava設定の構成

6. 「次へ」をクリックして、必要に応じてビュー・コントローラ・プロジェクトの名前を変更できるプロジェクト2の名前ページに移動します。このページの「プロジェクトの機能」ウィンドウ(図3-5を参照)には、MAFビュー・コントローラ・プロジェクトで使用できるテクノロジがリストされます。ビュー・コントローラ・プロジェクト内で作成されるアーティファクトの詳細は、表3-2を参照してください。

   図3-5 MAFビュー・コントローラ・プロジェクト

7. 「次へ」をクリックします。ビュー・コントローラ・プロジェクトのJava設定ページ(図3-6を参照)で、アプリケーション・コントローラ・プロジェクトのデフォルトのパッケージ名(`mobile`)と、プロジェクトのJava `SOURCEPATH`ディレクトリ(`src`)およびJava出力ディレクトリ(`classes`)の場所を、そのまま使用(または変更)します。

   図3-6 ビュー・コントローラ・プロジェクトのJava設定

8. 「終了」をクリックして、MAFアプリケーションとそのプロジェクトの作成を完了します。

ヒント: 前述の手順に従ってMAFアプリケーションを作成する以外にも、(開発用コンピュータの`jdev_install``/jdeveloper/jdev/extensions/oracle.maf/Samples`ディレクトリ内の`PublicSamples.zip`ファイルにある) HelloWorldサンプル・アプリケーションを開き、アプリケーション作成ウィザードの完了後にJDeveloperによって生成されたアーティファクトを表示できます。

### 3.2.2 MAFアプリケーションの作成時に行われる処理

MAFアプリケーション・プロジェクトを作成すると、JDeveloperによってアプリケーション・レベルおよびプロジェクト・レベルのアーティファクトが追加され、これらには、「アプリケーション」(図3-7を参照)からアクセスできます。これらのアーティファクトには、2つのスタブ・ディスクリプタ・ファイルが含まれています。1つは、アプリケーション名、アプリケーション・ライフサイクル・リスナー(`LifeCycleListenerImpl.java`)、埋込みアプリケーション機能用のログイン・サーバー接続など、MAFアプリケーション自体の構成に使用されるファイルで、もう1つは、MAFアプリケーションを構成するアプリケーション機能が記述されたファイルです。これらのファイル(`maf-application.xml`および`maf-feature.xml`)については、第3.2.2.1項「アプリケーション・コントローラ・プロジェクト・レベルのリソースについて」および第3.2.2.2項「ビュー・コントローラ・プロジェクトのリソースについて」でそれぞれ説明します。

JDeveloperでは、DeviceFeaturesデータ・コントロールも作成されます。このデータ・コントロールによってApache Cordova Java APIが抽象化され、MAF AMXとして実装されているアプリケーション機能は、デバイスに埋め込まれている様々なサービスにアクセスできるようになります。さらにJDeveloperは、ApplicationFeaturesデータ・コントロールも作成します。これによってSpringboardページの構築が可能になります。DeviceFeaturesデータ・コントロールによって提供される操作をMAF AMXページにドラッグ・アンド・ドロップすることで(第7.11項「DeviceFeaturesデータ・コントロールの使用方法」を参照)、デバイスに格納されたユーザーのコンタクト先の管理、電子メールとSMSテキスト・メッセージの作成と送信、デバイスの場所の確認、デバイスのカメラの使用、およびデバイスのファイル・システムに格納されたイメージの取得を行う機能を追加します。

図3-7 JDeveloperによって生成されるMAFアプリケーションのアーティファクト

#### 3.2.2.1 アプリケーション・コントローラ・プロジェクト・レベルのリソースについて

JDeveloperでは、アプリケーション・コントローラ・プロジェクト内にMAFアプリケーション用のファイルが生成されます。これらのファイル(表3-1を参照)は、MAFアプリケーションのメタデータを記述した構成情報を含んでいます。これらのファイルには、「アプリケーション」ウィンドウの「アプリケーション・リソース」ペイン(図3-8を参照)からアクセスします。

図3-8 「アプリケーション・リソース」ペインからアクセスされるモバイル・アプリケーション・アーティファクト

アプリケーション全体のリソースが含まれるアプリケーション・コントローラ・プロジェクトは、モバイル・デバイスでのアプリケーションの表示方法を構成するためのメタデータ・ファイルが含まれるという点で、MAFアプリケーションのプレゼンテーション・レイヤーを提供しています。このプロジェクトはMAFアプリケーションのセキュリティを指定するもので、アプリケーションのログイン・ページ、およびアプリケーション全体のリソースを含めることができます。アプリケーション・コントローラ・プロジェクトは、本質的には、アプリケーション機能とそのコンテンツを定義するビュー・コントローラ・プロジェクトのコンシューマです。詳細は、第3.2.2.2項「ビュー・コントローラ・プロジェクトのリソースについて」を参照してください。

ヒント: アプリケーション・コントローラ・プロジェクト内には、アプリケーション・レベルのライフサイクル・リスナーなど、アプリケーション全体の機能をサポートするコードを配置してください。

表3-1 アプリケーション・リソースを介してアクセスされるモバイル・アプリケーション・レベルのアーティファクト

アーティファクト | ファイルの場所 | 説明
--- | --- | ---
`maf-application.xml` | `アプリケーション・ワークスペース・ディレクトリ``\.adf\Meta-INF` 次に例を示します。 `JDevloper\mywork\アプリケーション名\.adf\META-INF` | アプリケーションレベルの情報を定義するXMLファイル。アプリケーションの内容、ナビゲーションの動作およびそのユーザー認証要件を定義できます。詳細は、第4.2項「モバイル・アプリケーションの構成ファイルについて」を参照してください。
`maf-config.xml` | `アプリケーション・ワークスペース・ディレクトリ``\.adf\Meta-INF` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\.adf\META-INF` | MAFアプリケーションに使用されるデフォルト・スキンの構成に使用されます。詳細は、第4.12項「モバイル・アプリケーションのスキニング」を参照してください。
アプリケーション・イメージ | `アプリケーション・ワークスペース・ディレクトリ`\`Application Resources\resources\ios` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\resources\ios` | iOSおよびAndroidアプリケーションのデプロイメントに必要とされる一連のイメージ。ここには、アプリケーション・アイコンやスプラッシュ画面のPNGイメージも含まれます。iPhoneなどのiOSデバイスへのデプロイメントでは、様々なサイズのイメージ・セットが必要です。 プロジェクトで提供されるデフォルトのiOSイメージは次のとおりです。 デバイスが縦方向と横方向の両方の場合に使用されるイメージ。 Retinaディスプレイに使用されるイメージ(つまり、`icon.png`および`icon@2x.png`) iPadイメージ(`icon-72.png`) これらのイメージをオーバーライドするには、第19.2.4.3項「iOSアプリケーションへのカスタム・イメージの追加」を参照してください。
`cacerts` | `アプリケーション・ワークスペース・ディレクトリ`\`Application Resources\resources\Security\cacerts` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\resources\Security\cacerts` | システム全体のキーストアである`cacerts`証明書ファイル。JVM 1.4に対するCA証明書を識別します。このファイルは、Java keytoolユーティリティを使用して更新できます。第21.8項「SSLのサポート」で説明するように、keytoolを使用してカスタム証明書ファイルを作成できます。証明書ファイルはすべて`Security`ディレクトリ内に配置する必要があります。
`logging.properties` | `アプリケーション・ワークスペース・ディレクトリ``\ src\.META-INF\logging.properties` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\src\META-INF\logging.properties` | ロギング・レベルやロギング・コンソールなど、アプリケーション・エラーのロギングを設定できます。詳細は、第22.4項「ロギングの使用方法と構成」を参照してください。
`cvm.properties` | `アプリケーション・ワークスペース・ディレクトリ``\src\.META-INF\cvm.properties` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\src\META-INF\cvm.properties` | Java仮想マシン、JVM 1.4の構成ファイル。このファイルを使用して、アプリケーションの起動やヒープ領域の割当て、JavaおよびJavaScriptのデバッグ・オプションを構成します。詳細は、第22.3.5項「JavaコードおよびJavaScriptのデバッグを有効にする方法」を参照してください。
`adf-config.xml` | `アプリケーション・ワークスペース・ディレクトリ``\.adf\META-INF` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\.adf\META-INF` | 構成サービス・パラメータなど、アプリケーション・レベルの設定の構成に使用します。第9章「MAFアプリケーションで使用されるエンド・ポイントの構成」も参照してください。
`connections.xml` | `アプリケーション・ワークスペース・ディレクトリ`\`.adf\META-INF` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\.adf\META-INF` | MAFアプリケーションで定義されているすべての接続のリポジトリ。
`wsm-assembly.xml` | `アプリケーション・ワークスペース・ディレクトリ`\`.adf\META-INF` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\.adf\META-INF` | 保護されたWebサービスに使用されるWebサービス・ポリシー定義を格納します。

JDeveloperでは、アプリケーション・コントローラ・プロジェクト(図3-9を参照)自体の中に、表3-2にリストされた、次のアーティファクトが作成されます。

図3-9 アプリケーション・コントローラ・プロジェクト

表3-2 アプリケーション・コントローラのアーティファクト

アーティファクト | ファイルの場所 | 説明
--- | --- | ---
`LifeCycleListenerImpl.java` | `アプリケーション・ワークスペース・ディレクトリ``\ApplicationController\src\application` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\ApplicationController\src\application` | MAFアプリケーションのデフォルトのアプリケーション・ライフサイクル・リスナー(ALCL)。 詳細は、第4.7項「モバイル・アプリケーションでのライフサイクル・リスナーの使用」を参照してください。
`maf-skins.xml` | `アプリケーション・ワークスペース・ディレクトリ``\ApplicationController\src\META-INF` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\ApplicationController\src\META-INF` | 使用可能なスキンを定義するもので、新しいスキンを定義することもできます。 詳細は、第4.12項「モバイル・アプリケーションのスキニング」を参照してください。
`adfm.xml` | `アプリケーション・ワークスペース・ディレクトリ` `\ApplicationController\adfmsrc\META-INF` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\ApplicationController\adfmsrc\META-INF` | `.cpx`、`.dcx`、`.jpx`および`.xcfg`ファイル(メタデータのレジストリ)のパス(および相対パス)を維持します。
`DataControls.dcx` | `アプリケーション・ワークスペース・ディレクトリ``\ApplicationController\adfmsrc\` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\ApplicationController\adfmsrc\` | データ・コントロールのレジストリ。デバイスのサービスを活用するDeviceFeaturesデータ・コントロールの使用方法の詳細は、第7項「バインディングの使用とデータ・コントロールの作成」を参照してください。埋込みアプリケーション機能をコールするSpringboardページを作成できるようにするApplicationFeaturesデータ・コントロールの詳細は、第4.5.5項「MAF AMXコンテンツによるカスタムSpringboardアプリケーション機能に関する必知事項」を参照してください。

#### 3.2.2.2 ビュー・コントローラ・プロジェクトのリソースについて

ビュー・コントローラ・プロジェクト(`ViewController`というデフォルト名で生成されます(図3-10参照))には、アプリケーション機能のリソースが格納されます。第3.2.2.1項「アプリケーション・コントローラ・プロジェクト・レベルのリソースについて」で説明されているアプリケーション・コントローラ・プロジェクトとは異なり、ビュー・コントローラ・プロジェクトのメタデータ・ファイルでは、アプリケーション機能レベルのリソース、特に、実行時にモバイル・デバイスでMAFアプリケーション自体のSpringboard内またはそのナビゲーション・バーに表示できるように1つのMAFアプリケーションに集約可能な様々なアプリケーション機能が記述されます。さらに、アプリケーション機能のメタデータ・ファイルでは、アプリケーション機能をHTMLページかMAF AMXページのどちらで構成するのかが記述されます。また、ビュー・コントローラ・プロジェクトには、これらのアプリケーション・ページと、アプリケーション機能レベルのリソース(MAFアプリケーション用に定義された、Springboardおよびナビゲーション・バー上のアプリケーション機能を表すアイコン・イメージなど)を含めることができます。

ヒント: ビュー・コントローラ・プロジェクト内には、アプリケーション機能に固有のコードを格納します。アプリケーション・コントローラ・プロジェクトは、(特に別々のビュー・コントローラ・プロジェクト内で定義されている)アプリケーション機能間で共有されるコードの場所として使用してください。

ビュー・コントローラ・プロジェクトはアプリケーション・コントローラ・プロジェクトと分離して、別のモバイル・アプリケーションで再使用できるように、アーカイブ・ファイルとしてデプロイできます(第4.13項「機能アーカイブ・ファイルの使用」を参照)。また、稀なケースとして、アプリケーション・コントローラ・プロジェクトが複数のビュー・コントローラ・プロジェクトを使用することもできます。

注意: MAFビュー・コントローラ・プロジェクトを別のMAFビュー・コントローラ・プロジェクトの依存性またはMAFアプリケーション・コントローラ・プロジェクトの依存性として追加すると、MAFアプリケーションをデプロイできなくなります。詳細は、第4.6.2項「機能参照IDと機能IDに関する必知事項」を参照してください。

図3-10 ビュー・コントローラ・プロジェクト

表3-3に示すように、これらのリソースには、`maf-feature.xml`という名前のアプリケーション機能の構成ファイルが含まれます。

表3-3 ビュー・コントローラのアーティファクト

アーティファクト | ファイルの場所 | 説明
--- | --- | ---
`maf-feature.xml` | `アプリケーション・ワークスペース・ディレクトリ``\src\META_INF\maf-feature.xml` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\ViewController\src\META-INF` | アプリケーション機能を定義できるようにする、スタブXMLの識別子ファイル。詳細は、第4.8項「モバイル・アプリケーション機能の構成ファイルについて」を参照してください。第2.3.1項「プラットフォームとフォーム・ファクタに応じた開発環境の構成方法」の説明に従ってモバイル・プリファレンスを構成した後は、デフォルトのデプロイメント・プロファイル設定を使用して、このアプリケーションをデプロイできます。詳細は、第19章「モバイル・アプリケーションのデプロイ」を参照してください。
アプリケーション固有のコンテンツ | `アプリケーション・ワークスペース・ディレクトリ``\ViewController\public_html` 次に例を示します。 `JDeveloper\mywork\アプリケーション名\ViewController\public_html` | `maf-feature.xml`で定義されたアプリケーション機能は、`public_html`ディレクトリに表示されます。モバイル・コンテンツには、MAF AMXページ、CSSファイルおよびタスク・フローを含めることができます。アプリケーション機能に追加するカスタム・イメージは、このディレクトリ内に配置する必要があります。詳細は、第4.10.2項「外部リソースの選択に関する必知事項」を参照してください。

#### 3.2.2.3 自動的に生成されるデプロイメント・プロファイルについて

デプロイメント・プロファイルは、ターゲット環境(モバイル・デバイス、エミュレータ、iOs App Storeのようなアプリケーション・マーケットプレイスなど)にデプロイされるアーカイブにアプリケーションがパッケージ化される方法を定義します。デプロイメント・プロファイルには、次の役割があります。

- 作成されるアーカイブ・ファイルのフォーマットと内容を指定します。

- パッケージ対象となるソース・ファイル、デプロイメント・ディスクリプタ、およびその他の補助ファイルをリストします。

- 作成されるアーカイブ・ファイルのタイプおよび名前を記述します。

- 依存情報、プラットフォーム固有の指示、およびその他の情報を示します。

アプリケーションを作成すると、MAFによって、デフォルトの設定とイメージ・ファイルでシードされたデプロイメント・プロファイルが生成されます。環境を正しく構成した場合、これらのプロファイルを使用して、MAFアプリケーションを作成直後にデプロイできます。これを行うには、図3-11に示すように、「アプリケーション」を選択した後、「デプロイ」を選択します。

図3-11 デフォルトのデプロイメント・プロファイル

その後、「デプロイメント・アクション」ページ(図3-12を参照)を使用し、適切なデプロイメント・ターゲットを選択します。

図3-12 デプロイメント・ターゲットの選択

注意: iOSおよびAndroidアプリケーションをシミュレータとデバイスにデプロイする場合、それらの環境設定と構成に関する要件はそれぞれ異なります。詳細は、第19.3項「Androidアプリケーションのデプロイ」および第19.4項「iOSアプリケーションのデプロイ」を参照してください。 Androidアプリケーションをシミュレータにデプロイする場合は、Android SDK ManagerにあるGoogle Cloud Messaging Library (リビジョン3以上)用のパッケージをインストールしてください。詳細は、第19.2.3項「Androidデプロイメント・プロファイルの作成方法」を参照してください。

図3-11に示すように、MAFでは、サポートされる両方のプラットフォーム(iOSとAndroid)に対応したアプリケーション・レベルのプロファイルが作成され、それらにiOS1およびAndroid1という名前が付けられます。

注意: MAFでは、新しいデプロイメント・プロファイルが作成されるたびに、その名前に付加される数字が1ずつ増加します。たとえば、iOS2、iOS3のようになります。

これらのプロファイルには、デフォルト値をそのまま使用するか、「アプリケーションのプロパティ」ダイアログの「デプロイメント」ページでプロファイルの名前を選択し、「編集」をクリックすることによって、それらの値を編集することもできます。図3-13は、デフォルトのAndroidアプリケーション・プロファイルの「オプション」ページを示しています。MAFアプリケーション・プロファイル用に構成する値の詳細は、第19.2.3項「Androidデプロイメント・プロファイルの作成方法」および第19.2.4項「iOSデプロイメント・プロファイルの作成方法」を参照してください。

図3-13 デフォルトのデプロイメント・プロファイルの編集

MAFでは、アプリケーション・コントローラ・プロジェクトとビュー・コントローラ・プロジェクトは、別々の機能アーカイブ(FAR)ファイルとしてパッケージ化されます。このようなMAFファイルのJARファイルは、他のアプリケーションのリソースとして使用されます(第19.5項「機能アーカイブ・ファイル(FAR)のデプロイ」を参照)。MAFでは、これらのFARファイルがMAFアプリケーション・プロファイルへの依存性として作成されるため、「アプリケーションのプロパティ」ダイアログの「プロファイルの依存性」ページを使用して、これらのファイルを追加または除外できます(図3-14を参照)。

注意: アプリケーション・コントローラ・プロジェクトに含まれるFARプロファイルの依存性は1つである必要があります。そうでない場合、デプロイメントは失敗します。

図3-14 MAFプロジェクトからのFARコンテンツの編集

「プロジェクト・プロパティ」ダイアログのファイル・グループに関連するページを使用すると、ビュー・コントローラのFARファイルに含まれるコンテンツをカスタマイズできます(図3-15を参照)。「プロジェクト・プロパティ」ダイアログの詳細は、Oracle JDeveloperのオンライン・ヘルプおよびOracle Fusion Middleware Oracle JDeveloperによるアプリケーションの開発のデプロイメント・プロファイルの構成に関する項を参照してください。

図3-15 ビュー・コントローラ・プロジェクトのFARの編集

MAFでは、プラットフォーム固有のデプロイメント・プロファイルに加えて、MAFアプリケーションをモバイル・アプリケーション・アーカイブ(`.maa`)・ファイルとしてパッケージ化するために使用できるデプロイメント・プロファイルも作成されます。このファイルを使用すると、`.maa`ファイルとしてパッケージ化された既存のアプリケーションを使用する新しいMAFアプリケーションを作成できます。詳細は、第19.6項「モバイル・アプリケーション・アーカイブ・ファイルの作成」および第19.7項「署名のないデプロイメント・パッケージの作成」を参照してください。

このデプロイメント・ファイルには、MAFアプリケーション名に_archiveが続く形式の名前がデフォルトで付けられます。図3-11に示すように、このプロファイルはEmployees_archiveと呼ばれ、必要に応じ、「アプリケーションのプロパティ」ダイアログを使用して編集できます。

図3-16 「アプリケーションのプロパティ」ダイアログを使用したデフォルトのデプロイメント・プロファイルの編集

「アプリケーションのプロパティ」ダイアログのページを使用したデプロイメント・プロファイルの編集の詳細は、Oracle Fusion Middleware Oracle JDeveloperによるアプリケーションの開発のデプロイメント・プロファイルのプロパティの表示と変更に関する項と、Oracle JDeveloperオンライン・ヘルプの「アプリケーションのプロパティ」および「プロジェクト・プロパティ」ダイアログに関する項を参照してください。

### 3.2.3 MAFアプリケーションとアプリケーション機能の編集に関する必知事項

アプリケーションを作成すると`maf-application.xml`ファイルが生成され、これによりモバイル・アプリケーションおよび`maf-feature.xml`ファイルも構成できるようになります。このファイルを使用して、モバイル・アプリケーション内に埋め込まれるアプリケーション機能を追加、削除または編集します。MAF拡張機能によってこれら両方のファイルに対する概要エディタが提供されているので、これらのファイルを宣言的に変更できます。図3-17に、`maf-application.xml`ファイルの概要エディタの例を示します。

図3-17 モバイル・アプリケーションの概要エディタ

図3-17に示すように、`maf-application.xml`ファイルは、「アプリケーション」ウィンドウの「アプリケーション・リソース」パネルで、「ディスクリプタ」および「ADF META-INF」ノードの下に表示されます。このファイルは、この場所からダブルクリックで開くことができます。このファイルにアクセスすると、JDeveloperによって、関連付けられた概要エディタが開かれるだけでなく、関連するページ・コンポーネントが「コンポーネント」ウィンドウ内に表示されます。これは、エディタの「ソース」ページか「構造」ウィンドウにドラッグ・アンド・ドロップできます(図3-18を参照)。`maf-application.xml`ページのコンポーネントの詳細は、第4.2項「モバイル・アプリケーションの構成ファイルについて」を参照してください。

図3-18 MAFアプリケーションに対するソース・エディタ、「構造」ウィンドウおよびプロパティ・エディタの使用方法

図3-19に示すように、`maf-feature.xml`構成ファイルは、「アプリケーション」ウィンドウの「プロジェクト」パネルで、「view controller」および「META-INF」ノードの下にあります。このファイルを使用して、MAFアプリケーションのコンテンツを構成します。

図3-19 アプリケーション機能の概要エディタ

`maf-application.xml`ファイルの概要エディタと同じように、JDeveloperによって、`maf-features.xml`構成ファイルの要素を構築するために使用するMAFコンポーネントが提示されます(第4.8項「モバイル・アプリケーション機能の構成ファイルについて」を参照)。「概要」ページを使用することも、「コンポーネント」ウィンドウからコンポーネントを「構造」ウィンドウまたはソース・エディタ自体へドラッグ・アンド・ドロップすることもできます。`maf-feature.xml`ファイルを選択すると、JDeveloperによって「コンポーネント」ウィンドウにMAF機能コンポーネントが移入されます。

図3-20 アプリケーション機能に対するソース・エディタ、「構造」ウィンドウおよび「コンポーネント」ウィンドウの使用方法

### 3.2.4 MAF AMXアプリケーション用のアプリケーション・ワークスペースの作成

第5章「MAF AMXページの作成」で説明されているように、MAF AMXコンポーネントを使用すると、プラットフォーム固有の言語で作成されたページとまったく同じように実行されるページを作成できます。MAF AMXページでは、豊富なコンポーネント・セットを使用して、ユーザー・インタフェースを宣言的に作成できます。図3-21に、MAF AMXページの宣言的な開発を示します。

図3-21 MAF AMXページの作成

これらのページは、(MAFアプリケーションを作成し、その中にアプリケーション機能を埋め込む)アプリケーション・アセンブラによって作成される場合や、別の開発者によって作成され、アプリケーション機能またはMAFアプリケーションに対するリソースとしてMAFアプリケーションに組み込まれる場合もあります。

MAF AMXページを作成するプロジェクトによって、このページが単一のアプリケーション機能のユーザー・インタフェース・コンテンツの配信に使用されるのか、またはMAFアプリケーション全体に対するリソースとして使用されるのかが決まります。たとえば、図3-25に示すような、アプリケーション・コントローラ・プロジェクト内で作成されたページは、アプリケーション全体のリソースとして使用されます。

ヒント: ページの保守を容易にするために、ページをページ・フラグメントと呼ばれる再利用可能なセグメントに分割できます。MAF AMXページは、1つ以上のページ・フラグメントで構成されます。

MAFでは、MAFタスク・フローを介してMAF AMXビュー・ページおよび他のアクティビティを配置して適切なシーケンスにすることができます。第5.2項「タスク・フローの作成」で説明されているように、MAFタスク・フローはアプリケーションのフローの視覚的に表現したものです。これは、(図3-22に示すWorkBetterサンプル・アプリケーションのデフォルトのListページやDetailページなどのビュー・アクティビティのような) MAF AMXで作成されるユーザー・インタフェース・ページや、マネージドBeanでメソッドをコールできる非視覚的なアクティビティで構成されます。タスク・フローの非視覚的な要素は、EL式を評価したり、別のタスク・フローをコールするために使用できます。図3-22に示すように、MAFでは、タスク・フロー・コンポーネントをダイアグラマにドラッグして、タスク・フローを宣言的に作成できます。MAFには、バインド・タスク・フローとバインドなしタスク・フローという2種類のタスク・フローがあり、バインド・タスク・フローにはWorkBetterサンプル・アプリケーションのListページのような単一のエントリ・ポイントが含まれ、バインドなしタスク・フローにはアプリケーション・フローとなる複数のエントリ・ポイントが含まれることがあります。WorkBetterサンプル・アプリケーションは、開発コンピュータ上の`jdev_install``/jdeveloper/jdev/extensions/oracle.maf/Samples`ディレクトリの`PublicSamples.zip`ファイル内にあります。

図3-22 MAFタスク・フロー

図3-23に、MAFタスク・フロー、AMXページ、MAFページ・フラグメントと呼ばれるMAF AMXページの再利用可能な部分、およびアプリケーション機能を追加するためにMAFに提供されているウィザードを示します。これらのウィザードにアクセスするには、「アプリケーション」ウィンドウでビュー・コントローラ・プロジェクトまたはアプリケーション・コントローラ・プロジェクトを選択して、「ファイル」→「新規」を選択します。「クライアント層」内の「モバイル・アプリケーション・フレームワーク」を選択した後、いずれかのウィザードを選択します。

図3-23 アプリケーション機能のリソースを作成するウィザード

#### 3.2.4.1 MAF AMXページの作成方法

MAF AMXページ・ウィザードを使用して、アプリケーション機能のユーザー・インタフェースに使用されるAMXページや、MAFアプリケーションを構成するアプリケーション機能の間で共有可能なアプリケーション・レベルのリソース(ログイン・ページなど)として使用されるAMXページを作成できます。アプリケーション機能コンテンツの詳細は、第4.10.1項「アプリケーション・コンテンツの定義方法」を参照してください。

アプリケーション機能のコンテンツとしてMAF AMXページを作成するには:

1. 「アプリケーション」ウィンドウで、ビュー・コントローラ・プロジェクトを右クリックします。

2. 「ファイル」を選択し、「新規」を選択します。

3. 「新規ギャラリ」の「クライアント層」ノードで、「MAF AMXページ」を選択して、「OK」をクリックします。

4. 「ファイル名」フィールドに名前を入力して、「MAF AMXページの作成」ダイアログの入力を完了します(図3-24を参照)。「ディレクトリ」フィールドに、ファイルの場所を入力します。この場所は、ビュー・コントローラ・プロジェクトの`public_html`フォルダ内である必要があります。

   図3-24 ビュー・コントローラ・プロジェクト内でのMAF AMXページの作成

5. 「パネル・ページ」内で、ヘッダーおよびフッターの作成に使用する「ファセット」を選択(または選択解除)します。「OK」をクリックします。

   詳細は、第6.2.2項「パネル・ページ・コンポーネントの使用方法」を参照してください。

6. MAF AMXページを作成します。AMXコンポーネントの使用方法の詳細は、第5.3.1.2項「MAF AMXページの作成」を参照してください。第4.10.1項「アプリケーション・コンテンツの定義方法」も参照してください。

MAF AMXアプリケーションに対するリソースとしてMAF AMXページを作成するには:

1. 「アプリケーション」ウィンドウで、アプリケーション・コントローラ・プロジェクトを選択します。

2. 「ファイル」を選択し、「新規」を選択します。

3. 「新規ギャラリ」の「クライアント層」ノードで、「MAF AMXページ」を選択して、「OK」をクリックします。

4. 「ファイル名」フィールドに名前を入力して、「MAF AMXページの作成」ダイアログの入力を完了します(図3-25を参照)。「ディレクトリ」フィールドに、ファイルの場所を入力します。この場所は、アプリケーション・コントローラ・プロジェクトの`public_html`フォルダ内である必要があります。「OK」をクリックします。

   図3-25 アプリケーション・コントローラ・プロジェクト内でのMAF AMXページの作成

5. MAF AMXページを作成します。詳細は、第5.3.1.2項「MAF AMXページの作成」を参照してください。

#### 3.2.4.2 MAFタスク・フローの作成方法

アプリケーション機能のコンテンツをMAFタスク・フローとして配信できます。

アプリケーション機能のコンテンツとしてMAFタスク・フローを作成するには:

1. 「アプリケーション」ウィンドウで、ビュー・コントローラ・プロジェクトを選択します。

2. 「ファイル」を選択し、「新規」を選択します。

3. 「新規ギャラリ」の「クライアント層」ノードで、「MAFタスク・フロー」を選択して、「OK」をクリックします。

4. 「ファイル名」フィールドに名前を入力して、「MAFタスク・フローの作成」ダイアログの入力を完了します(図3-26を参照)。「ディレクトリ」フィールドに、ファイルの場所を入力します。この場所は、ビュー・コントローラ・プロジェクトの`public_html`フォルダ内である必要があります。「OK」をクリックします。

   図3-26 ビュー・コントローラ・プロジェクト内でのMAFタスク・フローの作成

5. タスク・フローを構築します。第5.2項「タスク・フローの作成」も参照してください。

#### 3.2.4.3 MAF AMXページおよびタスク・フローの作成時に行われる処理

JDeveloperは、MAF AMXページとタスク・フローを、ビュー・コントローラ・プロジェクトの「Webコンテンツ」ノードに配置します(図3-27の`custom_springboard.amx`および`ViewController-task-flow.xml`を参照。これらは、このプロジェクト内で作成されるタスク・フローのデフォルト名です)。第4.6項「モバイル・アプリケーション内のアプリケーション機能の構成」で説明されているように、これらのアーティファクトは`maf-feature.xml`ファイル内で参照されます。カスタマイズされたアプリケーション・スプラッシュ画面(または起動)イメージやナビゲーション・バーのイメージなど、その他のリソースも「Webコンテンツ」ノードに含まれています。詳細は、表3-3を参照してください。バインドなしタスク・フローを管理するために、JDeveloperでは`adfc-mobile-config.xml`ファイルが生成されます。このファイルを使用して、ビュー(ユーザー・インタフェース・ページ)、様々なアクティビティ間の遷移を定義する制御ルール、タスク・フローのレンダリング・ロジックを管理するマネージドBeanなど、様々なタスク・フロー・コンポーネントを追加することにより、タスク・フローを宣言的に作成または更新できます。

図3-27 アプリケーション・コントローラ・プロジェクトおよびビュー・コントローラ・プロジェクト内のMAF AMXページとタスク・フロー

JDeveloperは、MAF AMXページとタスク・フローを、モバイル・アプリケーションに対するアプリケーション・リソースとして、アプリケーション・コントローラ・プロジェクトの「Webコンテンツ」ノードに配置します。図3-27に示すように、MAF AMXページ用のファイルは`application_resource.amx`という名前で、タスク・フローのファイルは`ApplicationController-task-flow.xml`という名前です(デフォルト名)。

## 3.3 ADFモバイル・アプリケーションの移行

MAFでは、ADFモバイルのバージョン11.1.2.3.0および11.1.2.4.0で作成されたアプリケーションの構成が自動的に移行されます。ADFモバイル・アプリケーションのワークスペース(`.jws`)・ファイルを開くと、MAFでは、「警告」ダイアログ(図3-28を参照)が開いて、アプリケーションが現行バージョンでないという警告が表示され、移行を続行するか、ダイアログを閉じてファイルを閉じるかを選択するように求められます。

図3-28 「警告」ダイアログ

MAFでは、移行ステータスが「ログ」ウィンドウに書き込まれます(図3-29を参照)。移行プロセスで、移行するアプリケーションで古い構成サービスAPIが使用されていることが検出されると、次の警告も記録されます。

    The MAF 2.0 Configuration Service API is not backwards compatible with previous
    versions and cannot be migrated automatically. Refer to Section 9.3 "Migrating
    the Configuration Service API" in Oracle Fusion Middleware Developing Mobile
    Applications with Oracle Mobile Application Framework 2.0. for information on
    migrating to the new API.

詳細は、第9.6項「構成サービスの移行」を参照してください。

図3-29 移行ログ

### 3.3.1 ADFモバイル・アプリケーションの移行時に行われる処理

表3-4に、移行がADFモバイルのアーティファクトにどのような影響を与えるかを示します。

表3-4 ADFモバイルのアーティファクトおよび構成の移行

ファイル名 | 変更内容
--- | ---
`adfmf-feature.xml` | 移行によって次の変更が行われます。 ファイル名が`maf-feature.xml`に変更されます。 `credentials`属性が`securityEnabled=true`で置換されます。 ハイブリッド接続定義(`<authenticationMode value="hybrid"/>`)として(`local`か`remote`のいずれかとして定義されている) `credentials`属性定義が`connections.xml`ファイル内に複写されます。
`adfmf-application.xml` | 移行によって次の変更が行われます。 ファイル名が`maf-application.xml`に変更されます。 すべてのデバイス機能およびサービスへのアクセス権が付与されます(`access = true`)。不要なアクセス権は削除できます。
`connections.xml` | 移行によって、`<policy-references>`要素で定義されているセキュアなSOAP Webサービス接続が`connections.xml`ファイルから削除されます。これらの定義は、`wsm-assembly.xml`ファイルに移入されます。ADFモバイル・アプリケーションに`connections.xml`ファイルが含まれていない場合、移行ではスタブ・ファイル`connections.xml`および`wsm-assembly.xml`が作成されます。Webサービス・ポリシー定義を持たない`connections.xml`がADFモバイル・アプリケーションに含まれている場合、移行ではスタブ・ファイル`wsm-assembly`が作成されます。
`adfmf-config.xml` | 移行によって、ファイル名が`maf-config.xml`に変更されます。また、スキン・ファミリがデフォルト・スキン・ファミリであり、スキン・バージョンが指定されていない場合、そのスキン・ファミリのデフォルトのスキン・バージョンも追加されます。たとえば、次の値が含まれるように`maf-config.xml`を変更できます。
    <skin-family>mobileAlta</skin-family>  <skin-version>v1.1</skin-version>
`adfmf-skins.xml` | 移行によって、ファイル名が`maf-skins.xml`に変更されます。

アプリケーションがADFモバイル・フレームワーク・テクノロジから移行され、モバイル・アプリケーション・フレームワーク・テクノロジがプロジェクト機能として使用されるようになります。図3-30に、モバイル・アプリケーション・フレームワーク・テクノロジを使用するアプリケーション・コントローラ・プロジェクトの「機能」ページを示します。「プロジェクト・プロパティ」→「機能」を選択して、このダイアログを表示します。

図3-30 モバイル・アプリケーション・フレームワークのプロジェクト機能

MAFでは、ADFモバイル・アプリケーションに対して作成されたアイコン、スプラッシュ画面またはナビゲーション・バーのイメージはオーバーライドされず、アプリケーション・コントローラの`resources`ファイル内のイメージ・ファイルが保持されます。同様に、アプリケーション機能に使用されるイメージもすべて保持されます。第3.2.2.1項「アプリケーション・コントローラ・プロジェクト・レベルのリソースについて」も参照してください。

#### 3.3.1.1 Webサービス・ポリシー定義の移行について

MAFでは、Webサービス・ポリシー定義が`wsm-assembly.xml`ファイルに格納されます。ADFモバイル・アプリケーションはこの情報を`connections.xml`ファイルに格納します。例3-1は、`connections.xml`ファイル内の`<policy-references>`要素による`oracle/wss_username_token_client_policy`を示しています。

例3-1 connections.xmlファイル

    <policy-references xmlns="http://oracle.com/adf">policy-reference category="security"
                       uri="oracle/wss_username_token_client_policy"
                       enabled="true"
                       id="oracle/wss_username_token_client_policy" xmlns=""/>
    </policy-references>

例3-2は、`wsm-assembly.xml`ファイル内に定義されたポリシーを示しています。

例3-2 wsm-assembly.xmlファイル

    <wsp:PolicyReference xmlns:wsp="http://www.w3.org/ns/ws-policy"
                         DigestAlgorithm="http://www.w3.org/ns/ws-policy/Sha1Exc"
                         URI="oracle/wss_username_token_client_policy"
                         orawsp:status="enabled"
                         orawsp:id="2"/>

### 3.3.2 移行済アプリケーションにおけるFARに関する必知事項

MAFでは、機能アーカイブ(FAR)ファイル内にパッケージ化された`adfmf-feature.xml`ファイルは移行されません。移行済アプリケーションで使用されるADFモバイルFARを置換して、FARの`maf-feature.xml`ファイル内で`credentials`属性が`securityEnabled=true`で置換されていることを確認します。

アプリケーションの移行後、次の手順を実行します。

1. 「アプリケーションのプロパティ」→「ライブラリとクラスパス」を選択します。

2. FARを選択し、「削除」をクリックします。

3. 第4.13.1項「MAFアプリケーションでのFARコンテンツの使用方法」で説明されているように、移行済ビュー・コントローラが含まれるFARをインポートします。

4. FARとしてパッケージ化されたビュー・コントローラ・プロジェクトが含まれるADFモバイル・アプリケーションを移行します。

   注意: 1つのFARに`adfmf-feature.xml`ファイルと`maf-feature.xml`ファイルの両方を含めることはできません。

   1. ビュー・コントローラ・プロジェクトをFARとしてデプロイします。

   2. 第4.13.1項「MAFアプリケーションでのFARコンテンツの使用方法」で説明されているように、FARを移行済アプリケーションにインポートします。

### 3.3.3 ヘッドレス・モードでのアプリケーションの移行

Oracle JDeveloperには、`ojmigrate`コマンド行ユーティリティを使用してアプリケーションを移行するための一連のマイグレータが用意されています。ワークスペース(`.jws`)・ファイル(およびそのすべてのプロジェクト・ファイル)を移行するには、まず、Oracle JDeveloper 12cインストールの`jdev\bin`ディレクトリ(`Oracle_Home\jdeveloper\jdev\bin`)に移動し、コマンド・プロンプトで次のように入力します。

`ojmigrate` `workspace.jws`

このコマンドを使用して、1つ以上のワークスペースを移行できます。たとえば、次のように`.jws`ファイルの場所を入力します。

`ojmigrate C:\JDeveloper\mywork\ADFMobileApp1\ADFMobileApp1.jws`

`C:\JDeveloper\mywork\ADFMobileApp2\ADFMobileApp2.jws`

少数のワークスペース・ファイルはこの方法を使用して移行できますが、複数のファイルは、`.jws`ファイルの場所がリストされたテキスト・ファイルを使用して移行できます。構文は次のとおりで、テキスト・ファイルの場所の前にアットマーク(@)を付けます。

`ojmigrate @file`

たとえば、`ojmigrate @C:\migrate.txt`と入力します。

例3-3は、テキスト・ファイルの内容を示しています(ファイルの場所はそれぞれ改行して入力する必要があります)。

例3-3 テキスト・ファイル内の.jwsファイルの場所の一覧

    C:\JDeveloper\mywork\ADFMobileApp1\ADFMobileApp1.jws
    C:\JDeveloper\mywork\ADFMobileApp2\ADFMobileApp2.jws
    C:\JDeveloper\mywork\ADFMobileApp3\ADFMobileApp3.jws
    C:\JDeveloper\mywork\ADFMobileApp4\ADFMobileApp4.jws
    C:\JDeveloper\mywork\ADFMobileApp5\ADFMobileApp5.jws

ヒント: LINUXまたはUNIXの`find`コマンドを使用して次のように入力すると、テキスト・ファイルに`.jws`の場所を自動的に移入できます。 `find . -name "*.jws" -printf "%P\n" >` `filename`.`txt`

このコマンドの実行後、アプリケーションの移行が完了したことを確認します。

テキスト・ファイルにリストされた最初のアプリケーションの移行が失敗した後に移行を停止する場合は、`-failFast`オプション(`ojmigrate -failFast @``file`)を使用します。このコマンドを使用すると、移行の妨げとなっているエラーを分析できます。

アプリケーションに追加のデータが必要な場合は、次のように`-generateDefaults`オプションを使用して、それらのデータを名前/値のペアとしてリストした出力ファイルを作成できます。

    ojmigrate -generateDefaults @migrate.txt

アプリケーション・ファイルに追加のデフォルトが必要な場合、`-generateDefaults`オプションを使用すると、`.jws`ファイルに基づく名前のプロパティ・ファイル(`workspacefilename``.migration.properties`)が作成されます。`.properties`ファイルを調べて、それに応じて値を変更した後、`ojmigrate`コマンドを`-generateDefaults`オプションなしで使用して(例: `ojmigrate` @`file`)、ワークスペースを移行します。