Oracle® Fusion Middleware Oracle Application Development Frameworkモバイル開発者ガイド 11g リリース2 (11.1.2.4.0) B70750-02 |
|
前 |
次 |
この章ではADFモバイル・アプリケーションの開発を行う方法を説明します。
この章には次の項が含まれます:
ADFモバイル・アプリケーションの設計を最適化するために、反復型の段階的な開発プロセスに従うことをお薦めします。
ADFモバイル・アプリケーション自体に加えてアプリケーション機能を開発することが可能ですが、このワークフローは必ずしも標準的ではありません。アプリケーション開発には、ADFモバイル・アプリケーションの作成と、別の開発者が作成可能なアプリケーション機能の埋込みが含まれます。つまり、ADFモバイル・アプリケーションは、開発者が自分で作成したコンテンツと、別の開発者が別途開発してADFモバイル・アプリケーションに統合したコンテンツを結合することで作成します。ADFモバイル・アプリケーション自体と、アプリケーション機能の特定のコンテンツのどちらを作成する場合でも、XcodeまたはAndroidのアプリケーション開発に関する知識は特に必要ありません。
詳細は、第4章「ADFモバイル・アプリケーション開発の開始」を参照してください。
ターゲットのプラットフォームによって開発ニーズは様々ですが、ADFモバイル・アプリケーションを作成、構築およびテストするための最小要件は次のとおりです。
Oracle JDeveloper
ADFモバイル用のOracle JDeveloper拡張機能
プラットフォーム固有のツール(Xcode、Android SDKなど)
モバイル・デバイスまたはそのシミュレータ
前提条件の詳細は、第3.2項「ADFモバイル・アプリケーション開発の前提条件」を参照してください。
ADFモバイルは、次のプラットフォームをサポートしています。
iOS 5以上
Android 2.3以上
次のモバイル・デバイスがサポートされています。
Apple iPhone
Apple iPad
Apple iPod
Androidデバイス
動作保証済およびサポート対象のモバイル・デバイスおよびプラットフォームの詳細は、Oracle JDeveloperおよびADFの動作保証およびサポート・マトリクスに記載されている、モバイル・デバイスとオペレーティング・システムに関する項を参照してください。
サポートされるデータベースはSQLiteです(第11章「ローカル・データベースの使用方法」を参照)。
ADFモバイル・アプリケーションに対して考えられるアーキテクチャは次のとおりです。
基本的な接続アプリケーション: このタイプのアプリケーションには、Webサービス・データ・コントロールによって直接支えられているユーザー・インタフェースが含まれています。このWebサービス・データ・コントロールは、サーバーでホストされているWebサービスを起動します。ただし、データ・コントロールによって排他的にアクセスできるのは、REST-XMLおよびSOAPベースのデータ・サービスのみです。
中程度または複雑なデータ・サービスを使用する接続アプリケーション: このタイプのアプリケーションには、Java Beanデータ・コントロールによって支えられているユーザー・インタフェースが含まれます。さらに、Javaクラス(POJO)を使用して次の処理を実行します。
さらに複雑なデータ・ソースからデータを取得して保持する。
ユーザー・インタフェースにデータが渡される前にサーバーから取得したデータを操作する。データ・ソースがREST-XMLまたはSOAPフォーマットに基づいている場合、アプリケーションはJava Beanデータ・コントロールによって支えられ、さらにこのデータ・コントロールは、データの保持およびWebサービス・データ・コントロールからのデータの取得を行うPOJOによって支えられています。一般的な実装例には、ユーザー・インタフェースを支えるJavaクラスや、データ取得ロジックをホストする別のクラスなどが含まれます。
アプリケーションがJavaScript Object Notation (JSON)データを使用する場合は、Webサービス・データ・コントロールも、SOAPおよびREST-XMLのWebサービスも必要ありません。そのかわり、JSONサービスを直接呼び出して、アプリケーション・コード内でJSONデータを解析する必要があります。
切断されたアプリケーション: このタイプのアプリケーションには、データの移入されたローカル・データベースが必要です。通常は、次のような2つのコード・モジュールが必要です。
最初のコード・モジュールでは、ユーザー・インタフェースによってローカル・データベースからデータを取得できます。このモジュールは、Java BeanとJava Beanデータ・コントロールを作成し、ユーザー・インタフェースにデータを提供する役割を果たします。ローカル・データベース上のCRUD操作は、JDBCコードを使用して実行されます。
2つ目のコード・モジュールには、JDBCコードによってサーバーからデータを取得してローカル・データベースに移入するJavaクラスの実装が含まれます。バックグラウンド・データの同期化の実装を選択した場合、このモジュールによってバックグラウンド・スレッドを実行することもできます。これらのJavaクラスは、データ・コントロールを介したデータの取得(REST-XMLまたはSOAPデータを使用する場合)か、JSONデータ・ソースからの直接的なデータの取得のいずれかを担当します。
詳細は、次を参照してください:
一般的に、ADFモバイル・アプリケーションを構築するときには、次のアクティビティを実行します。
要件の収集
設計
開発
デプロイ
テスト
デバッグ
保護
サーバー側データへのアクセスの有効化(オプション)
再デプロイ
再テストとデバッグ
公開
ADFモバイル・アプリケーションの一般的な構築手順は次のようになります。
設計段階では、モバイル・ユーザーの実行するタスクを検討します。この際、ハンドヘルド・コンピュータの使用方法はラップトップまたはデスクトップ・コンピュータとは異なることに注意します。ADFモバイル・アプリケーションによってユーザーのジョブ実行を支援する方法や、ユーザーがデバイスと対話する方法について検討します。アプリケーションがすっきりと合理化されるほど、ユーザーの使用が増加します。
次の手順では、アプリケーションを接続モードと切断モードのどちらで動作させる必要があるのかを決定し、デバイス・サービスの統合要件を理解し、サーバー側のデータ・ソースとプロトコルを決定します。
サーバー側サービスを設計するときには、モバイル・アクセスの最適化を実現することが非常に重要です。サーバー側のWebサービスが非常に複雑な場合、モバイル・アプリケーションでこれらを使用するのは困難になります。これは、渡されるデータ量のみの問題ではなく、結果を処理するために記述する必要があるクライアント側ロジックの分量の問題でもあります。特にモバイル用に提供されている一連のサーバー側インタフェースを公開することをお薦めします。また、すべてのJavaモジュールや、作成する必要があるデータ・コントロールなど、開発する必要があるクライアント・ビジネス・サービスを理解することも必要です。さらに、アプリケーションのビューやタスク・フローのワイヤフレームを作成することも必要です。これにより、アプリケーション機能を視覚化し、開発プロセスを支援できます。
設計の最終手順として、全体のアプリケーション機能を、機能グループおよび関連するビューを表す個別のアプリケーション機能にパーティション化する方法を検討する必要があります。これで、ワイヤフレームを作成することで、クライアント・ユーザー・インタフェースとタスク・フローの設計を開始できます。
詳細は、Fusionアプリケーション: 完璧なユーザーの操作性を実現する新しい標準(http://www.oracle.com/webfolder/ux/applications/Fusion/index.html
)を参照してください。
作業環境を設定するときには、ADFモバイルの拡張機能をダウンロードおよびインストールして、必要なコンポーネントをインストールし、開発およびデプロイに必要な設定を行います。詳細は、第3章「ADFモバイル環境の設定」を参照してください。
JDeveloperを使用してADFモバイル・アプリケーションを作成する場合は、ADFモバイル・アプリケーションの作成ウィザードを使用します。アプリケーション作成の結果として作成されるアーティファクトには、ADFモバイル・アプリケーションおよびアプリケーション機能の識別子ファイル、サポートされるすべてのプラットフォームに対応するアイコンおよびタブのデフォルト・イメージ、およびモバイル・デバイスのサービス(カメラ、GPS、電子メールなど)にアクセスするために使用する一連のデータ・コントロールが含まれます。
詳細は、次を参照してください:
アプリケーション機能を実装するときには、ビジネス・ニーズの徹底的な評価を行って、ADFモバイル・アプリケーション内に含める必要があるアプリケーション機能を決定します。ADFモバイルが提供する概要エディタを使用する場合、アプリケーション機能を実装するためのタスクには、アプリケーション機能のタイプ(HTML、リモートURL、ADFモバイルAMX)、表示プロパティ(表示名、ナビゲーション・バー、Springboardアイコン)、およびモバイル・デバイスの機能とユーザー・ロールの両方によって指定される表示動作の特定などが含まれます。
詳細は、次を参照してください:
アプリケーション・デプロイメント段階では、最初に、それぞれのプラットフォームに対応するデバイスとシミュレータをサポートするデプロイメント・プロファイルを作成します。デプロイメント・プロファイルの作成には、ADFモバイル・アプリケーション自体で様々な向き(縦や横など)で使用する表示アイコンの選択や、アプリケーションの署名オプション(デバッグやリリースなど)の設定などが含まれます。
次に、モバイル・デバイスまたはシミュレータへのアプリケーションのデプロイへと進みます。
注意: ADFモバイル・アプリケーションでは、デバイスまたはシミュレータは、テストとデバッグを行う前にデプロイする必要があります(第19章「ADFモバイル・アプリケーションのテストとデバッグ」を参照)。アプリケーションはデプロイするまで実行できません。 |
詳細は、第17章「ADFモバイル・アプリケーションのデプロイ」を参照してください。
テストおよびデバッグ段階では、アプリケーションのテスト、デバッグおよび最適化を行います。詳細は、第19章「ADFモバイル・アプリケーションのテストとデバッグ」を参照してください。
アプリケーションのセキュリティを有効化して構成する場合、通常はOracle Identity Connectサーバーなどのログイン・サーバーの構成が必要です。これは、基本的なHTTP認証メカニズムによって保護されているWebページにすることもできます。さらに、アクセス制御サーバーを設定する必要がある場合もあります。
詳細は、第18章「ADFモバイル・アプリケーションのセキュリティ」を参照してください。
基本レベルで想定どおりにアプリケーションが機能することを確認したら、サーバー側データにアクセスするためのJavaコードを実装できます。
接続アプリケーションの場合、これらのJavaクラスによってWebサービスを直接呼び出す必要があります。アプリケーションがSOAPまたはREST XMLベースのデータ・ソースを使用している場合、データ・コントロールを介してWebサービスを呼び出します。この場合は、コードから呼び出すことのできる一連のヘルパー・クラスにより、データ・コントロールを呼び出し、データを戻します。アプリケーションがJSONベースのデータ・ソースを使用している場合、コードによってJSONサービスを直接呼び出してデータを戻し、その後、サーバーでJSONデータを解析して、対応するデータ・コレクションを保持しているオブジェクトに移入する必要があります。
切断されたアプリケーションの場合は、コードによってローカルのSQLiteデータベースにデータを移入する必要があります。次に、Webサービスを直接呼び出すかわりに、ユーザー・インタフェースを支えるコードがSQLiteデータベースからデータを取得できます。
詳細は、次を参照してください:
第2回目のデプロイメントでは、アプリケーションにセキュリティを追加し、サーバー側データへのアクセスを有効にした後、アプリケーション・デプロイメントが想定どおりに実行され、アプリケーションで最後のテストおよびデバッグを行う準備ができていることを確認します。
最終回のテストとデバッグでは、セキュリティとサーバー側データのアクセス機能に重点を置き、これらの機能をアプリケーションと統合したときに、エラーや予期しない動作が発生しないことを確認します。
アプリケーションを本番環境にデプロイする場合、通常は、エンタープライズ・サーバー、Apple App Storeまたはアプリケーション・マーケットプレイス(Google Playなど)への公開が行われます。ADFモバイル・アプリケーションを公開すると、エンド・ユーザーは自分のモバイル・デバイスにダウンロードしたり、指定されたアイコンをタッチしてアクセスできるようになります(付録D「ADFモバイル・アプリケーションの使用方法」を参照)。アプリケーション機能は指定された表示アイコンで表され、エンド・ユーザーやユーザーのデバイスに適した表示が行われます。
ADFモバイル・アプリケーションのライフサイクルは、モバイル・デバイスのオペレーティング・システム、JVMおよびADFモバイルのレベルで発生するイベントによって駆動されます。これらのイベントに対するアプリケーションのリアクションは、oracle.adfmf.application.LifeCycleListener
のメソッドを使用することで有効化されます。詳細は、第5.6項「ライフサイクル・イベント・リスナーについて」を参照してください。
デプロイメント環境の設定(第3章「ADFモバイル環境の設定」を参照)が完了したら、使用するデプロイメント・コンピュータのjdev_install
/jdeveloper/jdev/extensions/oracle.adf.mobile/Samples
ディレクトリ内のPublicSamples.zip
ファイルにあるADFモバイルのサンプル・アプリケーションを実行できます。
サンプル・アプリケーションは次の方法を示しています。
基本的なHelloWorld ADFモバイル・アプリケーションの作成方法。
アプリケーションがライフサイクル・イベントに反応できるようにする方法。
スキニングの使用方法。
ADFモバイルAMXアプリケーション機能の開発方法(ユーザー・インタフェース、ページ間のナビゲーション、マネージドBean、データ変更イベントなど)。
詳細は、付録F「サンプルのADFモバイル・アプリケーション」を参照してください。
ADFモバイルAMXは、ADFモバイル内のサブフレームワークで、iOSとAndroidの両方のユーザー操作で適切に動作するアプリケーション機能が作成可能になる一連のレイアウト、フィールド、データ・コンポーネントを提供しています。ADFモバイルAMXは、次のレイヤーに属するいくつかのOracle ADFコンポーネント、データ・コントロール、バインディング、式言語をサポートしています。
モデル・レイヤー。第8章「バインディングの使用とデータ・コントロールの作成」を参照してください。
ユーザー・インタフェース(UI)レイヤー。次の章を参照してください:
式言語。第8.2項「ELのサポートの理解」を参照してください。
モバイル・アプリケーションとWebアプリケーションとは本質的に異なるため、すべてのレイヤーに違いがあります。詳細は、第2.9項「ADFモバイルとサーバー・ベースのOracle ADFとの比較」を参照してください。
表2-1では、ADFモバイルによってサポートされる機能、コンポーネント、テクノロジをまとめ、サーバー・ベースのOracle ADFアプリケーションによってサポートされる内容と比較しています。
表2-1 ADFモバイルとサーバー・ベースのOracle ADFアプリケーションとの違い
レイヤー | ADFモバイルによってサポートされる内容 | サーバー・ベースのOracle ADFによってサポートされる内容 |
---|---|---|
ADFモデル |
|
データ・ソースとデータ・コントロールの全範囲 |
ビュー |
|
|
コントローラ |
ADFモバイルAMXアプリケーション機能の場合(第2.8項「ADFモバイルAMXアプリケーション機能」を参照):
|
完全なADFタスク・フロー |
Javaサポート |
JavaME CDCおよびJava 1.4 |
最新のJavaによるJava EE |
表2-1に示すように、ADFモバイルでは、ビュー・レイヤーで、ユーザー・インタフェースの表示のためにローカルでレンダリングされたビューを使用するのか、サーバーでレンダリングされたビューを使用するのかを選択できます。ADFモバイルAMXでは、最もシームレスなユーザー・インタフェースを使用できます。サーバー・ベースのOracle ADFの場合、ユーザー・インタフェースはサーバー上でレンダリングされ、主にADF Facesリッチ・クライアント・コンポーネントまたはTrinidadコンポーネントを使用して提供されます。これらは両方ともJSFテクノロジに基づいています。
コントローラ・レイヤーでは、モバイル・アプリケーションでADFモバイルAMXコンテンツが使用されると、コンポーネントのサブセットをサポートするADFタスク・フローの短縮版が提供されます。ADFモバイルのタスク・フローでは、ビュー、制御フロー・ケース、ワイルド・カード、ワイルドカード制御フロー・ケース、メソッド・コールおよびルーターがサポートされますが、リージョンはサポートされません。ADFモバイルでは、ページ・フロー・ロジック全体がモバイル・デバイスに存在しているため、サーバーにラウンドトリップすることなくページのナビゲーションを行うことができます。
ADFモバイルは、ADFモデル・レイヤーで、SOAP、REST XMLおよびREST JSONをサーバー側のデータ・ソースとしてサポートします。また、ADFモバイルは、ローカル・データベースへのJDBC接続とAPIをサポートしますが、ADFビジネス・コンポーネントはサポートしません。さらに、ADFモバイルは、サーバー・ベースのADFによってサポートされるJavaメソッドをすべて実装するわけではありません。たとえば、プログラムによるアクセス・バインディング・コンテキストは使用できません。そのかわり、式言語(EL)の式を呼び出すことで、バインディング・データにアクセスできます。また、ADFモバイルは、WebサービスにプログラムによってアクセスするためにWebサービスのJavaプロキシをサポートしていないので、データ・コントロールをWebサービス起動ヘルパー・クラスと組み合せて使用する必要があります。
Javaのサポートのために、ADFモバイルの埋込みJava仮想マシンはJavaME CDC仕様に従っています。この仕様はJava 1.4に基づいているため、Java 1.5以上の機能はJavaコード内で使用できません。