Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.2.0 E69896-01 |
|
![]() 前 |
![]() 次 |
この章の内容は次のとおりです。
MAFは、ハイブリッド・モバイル・アーキテクチャで、ユーザー・インタフェースのレンダリングにHTML5およびCSSを使用し、アプリケーション・ビジネス・ロジックにJavaを使用し、GPSアクティビティや電子メールなどのデバイス機能へのアクセスにApache Cordovaを使用します。MAFではこれらのクロス・プラットフォーム・テクノロジを使用するため、プラットフォーム固有のツールを使用する必要なく、AndroidとiOSの両方のデバイス上で動作するアプリケーションを構築できます。MAFアプリケーションをデバイスにデプロイすると、そのアプリケーションはObjective CやAndroid SDKなどのプラットフォーム固有のツールを使用して作成されたアプリケーションと同じように動作します。さらに、MAFを使用すると、スマートフォンまたはタブレット用に同じアプリケーションを構築できるため、同じアプリケーションのビジネス・ロジックを再利用して、様々なタイプのデバイス、画面サイズおよび機能をターゲットにできます。
MAFアプリケーションは、ユーザーのデバイスのその他のアプリケーションと同様にデバイスにインストールします。
図1-1 デバイスにインストールされたMAFアプリケーション
MAFアプリケーションは、1つまたは複数のアプリケーション機能で構成されます。アプリケーション機能は再利用可能な、アプリケーションの機能性を持つ自己完結型モジュールです。各アプリケーション機能によって一連の特定のタスクが実行され、これらの機能をグループ化して、相互の機能が補完されるようにできます。たとえば、顧客のコンタクト先を提供するアプリケーション機能を製品在庫のアプリケーション機能とペアにすることができます。各アプリケーション機能には独自クラス・ローダーおよびWebビュー(基本的には、ブラウザとして機能するネイティブUIコンポーネント)があるため、機能は相互に独立しており、1つのMAFアプリケーションを、いくつかの異なる開発チームにより作成されたアプリケーション機能が集められたものとすることができます。アプリケーション機能を他のMAFアプリケーション機能で再利用することもできます。MAFアプリケーション自体を別のアプリケーションのベースとして再利用できるため、ISV(独立系ソフトウェア・ベンダー)は特定の顧客が構成できるアプリケーションを作成できるようになります。
デバイス上でローカルに実行するハイブリッド・モバイル・アプリケーションに加え、モバイル・アプリケーションおよび使用可能なリソースの要件に応じて、アプリケーション機能を次のモバイル・アプリケーション・タイプのいずれかとして実装できます。
モバイルWebアプリケーション: これらのアプリケーションはサーバー上でホストされます。プラットフォーム間でコードを移植できるものの、これらのアプリケーションはデバイスのブラウザによって管理されるため、アプリケーションからのデバイス機能およびローカル記憶域へのアクセスは制限される可能性があります。
ネイティブ・アプリケーション: これらのアプリケーションはXcodeまたはAndroid SDKのいずれかを使用して作成されているため、両方のプラットフォームへの対応には制限があります。コードの再利用も同様に制限されます。
図1-2に示すように、MAFはデバイスにデプロイされたシン・ネイティブ・コンテナです。MAFは、モデル・レイヤーとコントローラ・ロジックからプレゼンテーションを区別するmodel-view-controller (MVC)開発アプローチに従っています。ネイティブ・コンテナによって、MAFアプリケーションが両方のプラットフォーム(iOSとAndroid)でネイティブ・アプリケーションとして機能できます。また、プッシュ通知も可能になります。
図1-2 MAFランタイム・アーキテクチャ
Webビュー: モバイル・デバイスのWebエンジンを使用してWebベースのコンテンツを表示して処理します。MAFアプリケーションでは、Webビューはアプリケーション・マークアップをHTML 5としてレンダリングすることによってユーザー・インタフェースを提供します。次のコンテンツ・タイプのいずれかを実装して、MAFアプリケーション機能用のユーザー・インタフェースを作成できます。様々なコンテンツ・タイプから実装されたアプリケーション機能は、同じMAFアプリケーション内に共存でき、相互作用することもできます。
MAF AMXビュー: デバイスのプラットフォーム固有の言語で作成されたアプリケーションのように、コンテンツがMAF Application Mobile XML (AMX)ビューとして実装されたアプリケーションはデバイスに常駐し、最も信頼できるデバイス・ネイティブなユーザー操作性を提供します。MAFでは、モバイル・デバイスのフォーム・ファクタに合せたコンポーネントからユーザー・インタフェースを宣言的に作成できるコード・エディタのセットが提供されます。これらのコンポーネントを使用して、リスト・ビューなどのページ・レイアウトおよび入力テキストなどの入力コンポーネントを作成できます。MAF AMXビューを開発する際には、データ・コントロールを使用できます。これらのコンポーネントを使用すると、データ・バインドされたユーザー・インタフェース・コンポーネントを宣言的に作成し、Webサービスおよびモバイル・デバイス(カメラ、GPSまたは電子メールなど)のサービスにアクセスできます。実行時に、WebビューのJavaScriptエンジンが、MAF AMXビュー定義をHTML5およびJavaScriptにレンダリングします。詳細は、次を参照してください。
タスク・フロー: コントローラは、MAFアプリケーションのページ間のフローを制御し、アプリケーションのフローをより小さい再利用可能なタスク・フローに分割でき、メソッド・コールや決定点などの非ビジュアル・コンポーネントを含めることができます。詳細は、「タスク・フローの作成」を参照してください。
サーバーHTML: このコンテンツ・タイプでは、ユーザー・インタフェースは、アプリケーション機能のWebビュー内で開くことができる、サーバーが生成したWebページから提供されます。MAFのコンテキストにおいて、このコンテンツ・タイプはリモートURLと呼ばれます。これらのブラウザベースのページのリソースは、デバイス上には存在しません。そのかわりに、ユーザー・インタフェース、ページ・フロー・ロジック、ビジネス・ロジックがリモート・サーバーから提供されます。リモートでホストされたこれらのWebページのいずれかがWebビュー内で開くことを許可されている場合、Cordova JavaScript APIを使用して、指定されたデバイス・ネイティブな機能またはサービス(カメラやGPS機能など)にアクセスできます。リモートURLコンテンツを使用した機能を実装する場合、モバイル使用に最適化された既存のブラウザベース・アプリケーションを活用したり、特定のタイプのモバイル・デバイスにあわせて特別に記述されたブラウザベース・アプリケーションを使用できます。デスクトップまたはタブレットのいずれかのブラウザ内で実行可能なアプリケーションの場合は、Oracle ADF Facesのリッチ・クライアント・ベースのコンポーネントによって作成されたアプリケーションを使用して、リモートURLコンテンツを実装できます。詳細は、「リモートURLを使用したアプリケーション機能コンテンツの実装」を参照してください。
注意:
コンテンツはリモートで提供されるため、リモートURLを使用する機能はサーバー接続がアクティブな場合にのみ使用できます。
ローカルHTML: MAFアプリケーションの一部としてデバイス上で実行されるHTMLページです。ローカルHTMLファイルは、CordovaおよびJavaScript APIを介して、デバイス・ネイティブな機能サービスにアクセスできます。
Cordova: デバイスのネイティブ機能およびサービスをMAFアプリケーションに統合するApache Cordova JavaScript APIです。これらのAPIには、Javaコードからプログラムで(またはMAFアプリケーションをローカルHTMLとして実装している場合にはJavaScriptを使用して)アクセスできますが、これらのAPIはMAFによってデータ・コントロールとしてパッケージ化されるため、MAF AMXページを作成するときにデバイス統合を宣言的に追加できます。
Java仮想マシン: JavaではMAFアプリケーション用のJava Runtime Environmentが提供されます。このJava仮想マシン(JVM)は、デバイス・ネイティブなコードに実装され、MAFアプリケーションの各インスタンスに、ネイティブ・アプリケーション・バイナリの一部として埋め込まれます(コンパイルされます)。JVMは、JavaME Connected Device Configuration (CDC)仕様に基づいています。
ビジネス・ロジック: MAFアプリケーション内のビジネス・ロジックはJavaで記述できます。マネージドBeanは、サーバーから戻されたデータを処理するための追加のビジネス・ロジックを提供するなど、MAFの機能拡張のために作成できるJavaクラスです。マネージドBeanは、埋込みのJavaサポートによって実行され、JavaME CDC仕様に準拠しています。詳細は、「MAF AMXでのバインディングの使用とデータ・コントロールの作成」を参照してください。
モデル: ビジネス・ロジック・コンポーネントをユーザー・インタフェースに接続するバインディング・レイヤーが含まれます。また、このバインディング・レイヤーでは、RESTまたはSOAPベースのWebサービスを起動するための実行ロジックが提供されます。詳細は、「接続アプリケーションおよび非接続アプリケーションについて」を参照してください。
JDBC: JDBC APIでは、CRUD (作成、読取り、更新および削除)操作を介して、暗号化されているSQLiteデータベースのデータにアクセスできます。
アプリケーション構成とは、Webサービス用のURLエンドポイントやリモートURL接続など、アプリケーション構成をダウンロードおよびリフレッシュできるサービスのことです。アプリケーション構成サービスは、WebDavベースのサーバー側サービスから構成情報をダウンロードします。詳細は、「MAFアプリケーションで使用するエンド・ポイントの構成」を参照してください。
資格証明管理、シングル・サインオン(SSO)およびアクセス制御: MAFでは、Oracle Access Management Mobile and Social (OAMMS) IDM SDKを使用して、ユーザー認証および資格証明管理を処理します。MAFアプリケーションはオフライン認証を実行するので、接続されているときにユーザーがアプリケーションにログインすると、MAFがユーザー名およびパスワードをデバイスのローカルで管理するため、認証サーバーへの接続が不可になった場合にもユーザーはアプリケーションへのアクセスを継続できます。MAFは、ローカルに保存された情報およびローカルのSQLiteデータベースに保存されたデータを暗号化します。ログイン・サーバーに対する認証後、ユーザーはこの接続によって保護されているすべてのアプリケーション機能にアクセスできるようになります。MAFは、アプリケーション機能(またはアプリケーション機能の特定のファンクション)へのアクセスを制限することによって、アクセス・コントロールの概念もサポートします。リモートで提供されるWebコンテンツには、MAFはホワイトリストを使用して、確実に目的のURIのみがアプリケーション機能のWebビュー内で開く(およびデバイス機能にアクセスする)ことができるようにします。詳細は、「MAFアプリケーションの保護」を参照してください。
プッシュ・ハンドラ: MAFアプリケーションがiOSまたはAndroidの通知サーバーからイベントを受信できるようにします。通知処理は、Javaレイヤーで処理されます。
ネイティブ・コンテナと相互作用するリソースは、次のとおりです。
暗号化されたSQLiteデータベース: 埋込みSQLiteデータベースは軽量のクロスプラットフォームのリレーショナル・データベースで、ローカルに格納されているデータを保護し、JDBCを使用してコールされます。このデータベースは暗号化されるため、デバイスが紛失したり盗難にあった場合にデータを保護します。正しいユーザー名およびパスワードを入力したユーザーのみがローカル・データベースのデータにアクセスできます。詳細は、「MAF AMXでのローカル・データベースの使用方法」を参照してください。
デバイス・サービス: デバイスにネイティブな、Cordova APIによってアプリケーション機能に統合されたサービスと機能です。
デバイス・ネイティブ・コンテナを使用すると、次のサーバー側リソースにアクセスできます。
構成サーバー: アプリケーション構成サービスによって使用される構成ファイルをホストするWebDavベースのサーバー。構成サーバーは、リファレンス実装として提供されます。J2EEサーバー上でホストされている共通のWebDavサービスはどれでも、この目的で使用できます。詳細は、「MAFアプリケーションで使用するエンド・ポイントの構成」を参照してください。
サーバーが生成したHTML: ブラウザ・ベースのアプリケーション機能に使用されるリモート・サーバーにホストされるWebコンテンツ。詳細は、「リモートURLを使用したアプリケーション機能コンテンツの実装」を参照してください。
APNおよびGCMのプッシュ・サービス: Apple Push Notification Service (APNs)およびGoogle Cloud Messaging (GCM)は、通知イベントをMAFアプリケーションに送信する通知プロバイダです。
SOAPおよびRESTサービス: リモートでホストされているSOAPベースまたはRESTベースのWebサービスで、Javaレイヤーまたはデータ・コントロールを介してアクセスできます。詳細は、「MAF AMXでのWebサービスの使用方法」を参照してください。
MAFアプリケーションのコンポーネントは単一の開発者が作成できますが、アプリケーションは、様々な開発ロールによって提供されたリソースから構築することが一般的です。アプリケーション開発者は、アプリケーションまたはアプリケーション機能で使用できる再利用可能なプログラムとして、アプリケーション・データおよびユーザー・インタフェース・ロジックを構築します。アプリケーション・アセンブラは、様々なアプリケーション機能を1つのアプリケーションに集め、それらをユーザーフレンドリでナビゲート可能な順に配置します。アプリケーション・デプロイヤは、制御されたアプリケーションのデプロイメントを確認します。たとえば、MAFアプリケーションのデプロイメントでは、証明書およびApple App StoreやGooglePlayなどの公開のベンダー・サイトへのアップロードが必要となる場合があります。
注意:
アプリケーション開発チームのサイズや所属する組織に応じて、1人の個人に複数の異なるロールが割り当てられる場合があります。
一般的に、MAFアプリケーションを構築するときには、次のアクティビティを実行します。
要件の収集
設計
開発
デプロイ
テストおよびデバッグ
保護
サーバー側データへのアクセスの有効化
再デプロイ
再テストとデバッグ
公開
MAFアプリケーションを構築するために実行する手順は、次のようなものです。
要件の収集: ユーザーが誰で、その不可欠なタスクは何か、およびこれらのタスクはどのような場所やコンテキストで実行するかを説明するユーザー・データを収集して、モバイル・ユースケース(またはユーザー・シナリオ)を作成します。タスクの実行に必要な情報のタイプ、ユーザーが使用できる情報、情報のアクセス方法や提供方法などの要因を考慮します。
設計: ユースケースの構成後、アプリケーションのタスク・フローのすべての手順(および関連するユーザー・ビュー)を示すワイヤーフレームを作成します。タスク・フローの作成時には、様々なユーザーがどのように、いつ相互作用するかを考慮します。表示データ(プッシュ通知など)はタスクの完了に十分か。十分でない場合、タスクではどのくらいのデータ・エントリが必要か。これらのタスクをモバイル・コンテキスト内で組み立てるには、デスクトップ・アプリケーションを使用して完了タスクをモバイル・アプリケーションと比較します。単一のデスクトップ・アプリケーションで、複数の異なるモバイル・アプリケーション(または、MAFのコンテキストでは、MAFアプリケーションに埋め込まれた複数の異なるアプリケーション機能)にパーティション化された複数の機能を有効化できます。モバイル・アプリケーションは一般に短いバースト(一度に約2分)で使用されるため、容易にナビゲートでき、モバイル・デバイスの制限されたデータ・エントリに対応する必要があります。
設計および開発段階中は、モバイル・アプリケーションは、複雑なWebサービスから提供されるデータ量を消費できない場合があるため、モバイル固有のサーバー側リソースのセットが必要な場合があることに注意してください。さらに、モバイル・アプリケーションには、サービスによって戻されるデータを処理するための広範なクライアント側ロジックが必要になる場合もあります。サーバー側のモバイル・アプリケーションに送られてくるデータの形状を指定して、大量すぎるデータを強制的にクライアントで処理させないことが、通常は最適です。
開発: アプリケーションに最適なテクノロジを選択します。MAF WebビューがApache TrinidadまたはADF Facesリッチ・クライアント・コンポーネントを使用して作成されたリモート・コンテンツをサポートしているときには、これらのアプリケーションはオフラインの使用をサポートしません。MAF AMXで作成されたアプリケーションは、クライアント上で実行されますが、デバイス・サービスに統合されているため、エンド・ユーザーは、ファイルを表示したりGPSサービスを利用できるだけでなく、電話番号をタップして電話を発信したりテキストを送信して、相互に共同作業を行うこともできます。MAF AMXコンポーネント・セットにはデータ視覚化ツール(DVT)が含まれており、このツールを使用すると、分析を追加してモバイル画面上で適切にレンダリングできます。MAF AMXアプリケーションでは、リモート・ソースからデータを転送してローカルで格納することでオフライン使用をサポートしているため、エンド・ユーザーは、接続されていないときに情報を表示できます。
MAFでは、基本のアプリケーション自体だけでなく、MAF AMXおよびローカルのHTMLコンテンツから実装されるアプリケーション機能も構築するウィザードおよびエディタのセットが提供されます。これらのツールを使用すると、MAFアプリケーションの構成やそのアプリケーション機能の組込みのためのディスクリプタ・ファイル、スプラッシュ画面用の一連のデフォルト・イメージ、Springboard、サポートされているプラットフォームのフォーム・ファクタに適切なナビゲーション・バー・アイテムなどのアーティファクトが提供されます。
詳細は、次を参照してください。
デプロイ: MAFアプリケーションは、デバイスまたはシミュレータにデプロイされるまで実行できないため、エンド・ユーザーへの公開というコンテキストだけでなく、テストおよびデバッグ目的でもデプロイします。開発のフェーズに応じて、資格証明署名オプション(デバッグまたはリリース)を指定します。テストの場合は、アプリケーションをモバイル・デバイスまたはシミュレータにデプロイします。本番の場合は、Apple App StoreやGoogle Playなど、アプリケーション・マーケットへの配布用にパッケージ化します。
アプリケーションをデプロイするには、最初に、ターゲット・プラットフォームおよびそのデバイスとシミュレータを記述するデプロイメント・プロファイルを作成します。デプロイメント・プロファイルの作成には、異なる向き(縦または横)や異なるデバイス(電話またはタブレット)でアプリケーションに使用する、スプラッシュ画面および起動アイコンの選択が含まれます。詳細は、「MAFアプリケーションのデプロイ」を参照してください。
テストおよびデバッグ: テストおよびデバッグのステージでは、アプリケーションを様々なシミュレータとデバイスにデバッグ・モードでデプロイした後、JDeveloperおよびプラットフォーム固有のツールで提供されるデバッグ出力を確認して、アプリケーションを最適化します。詳細は、「MAFアプリケーションのテストおよびデバッグ」を参照してください。
保護: アプリケーションの開発プロセス全体を通して、セキュリティ上のリスクを評価します。モバイル・アプリケーションには固有のセキュリティ上の問題が存在すると同時に、リモートで供給されるデータにアクセスするすべてのアプリケーションと同じ脆弱性も共有しています。クライアント側のセキュリティを保証するために、MAFでは次のような機能を提供しています。
クロスサイト・スクリプティング(XSS)やクロスサイト・リクエスト・フォージェリ(CSRF)などのインジェクション攻撃を防ぐホワイトリスト
SQLiteデータベースへのアクセスを保護する強いパスワードを生成し、そのデータを暗号化および復号化するAPI
SSLをサポートする一連のWebサービス・ポリシー
SSLでのデプロイメントを強制する、信頼性のある認証局のcacerts
ファイル
MAFのセキュリティ構成には、Oracle Access Mobile and Socialサーバーまたは基本的なHTTP認証メカニズムで保護されたWebページなどのログイン・サーバーを選択し、セッション管理(セッションおよびアイドル・タイムアウト)を構成し、またアプリケーションのユーザー・ロールをホストするアクセス・コントロール・サービスのWebサービスへのエンドポイントを設定することが含まれます。詳細は、「MAFアプリケーションの保護」を参照してください。
サーバー側データへのアクセスの有効化: 基本レベルで想定どおりにアプリケーションが機能することを確認したら、サーバー側データにアクセスするためにJavaコードを実装したり、データ・コントロールを使用できます。詳細は、「接続アプリケーションおよび非接続アプリケーションについて」を参照してください。
再デプロイ: 後続のデプロイメントでは、アプリケーションにセキュリティを追加し、サーバー側データへのアクセスを有効にした後、アプリケーション・デプロイメントが想定どおりに実行され、アプリケーションで最後のテストおよびデバッグを行う準備ができていることを確認します。
再テストおよびデバッグ: 最終回のテストとデバッグでは、セキュリティとサーバー側データのアクセス機能に重点を置き、これらの機能をアプリケーションと統合したときに、エラーや予期しない動作が発生しないことを確認します。
公開: アプリケーションを本番環境にデプロイする場合、通常は、エンタープライズ・サーバー、Apple App StoreまたはGoogle Playなどへの公開が行われます。MAFアプリケーションを公開すると、エンド・ユーザーは自分のモバイル・デバイスにダウンロードしたり、指定されたアイコンをタッチしてアクセスできるようになります。アプリケーション機能は指定された表示アイコンで表され、エンド・ユーザーやユーザーのデバイスに適した表示が行われます。
MAFアプリケーションは、ネットワークへの接続中に機能しますが、携帯電話の信号がないような切断モードでも機能します。次に例を示します。
Webサービス・データ・コントロールによって直接支えられているユーザー・インタフェースを含む基本的な接続アプリケーション(このWebサービス・データ・コントロールは、サーバーでホストされているWebサービスを起動します)。
中程度の(または複雑な)データ・サービスを使用する接続アプリケーション。このタイプのアプリケーションの場合、データ・コントロールにより公開されたJavaクラス(POJO)は、ユーザー・インタフェースとサービス・データ・ソースの間のデータ問合せをディスパッチします。
SQLiteデータベースに格納されたデータを操作する、切断されたアプリケーションでは、アプリケーション・ユーザーがオフラインで作業できます。アプリケーションはWebサービスからデータを取得する必要がある場合がありますが、接続が失われている場合、接続がリストアされると、データはローカルに格納され、同期されます。
デプロイメント環境の設定(『Oracle Mobile Application Frameworkのインストール』を参照)が完了したら、jdev_install
/jdeveloper/jdev/extensions/oracle.maf/Samples
ディレクトリ内のPublicSamples.zip
ファイルにあるMAFサンプル・アプリケーションを実行できます。
図1-3に示すようなWorkBetterアプリケーションなどのサンプル・アプリケーションは、アプリケーションでWebサービスを使用してリモート・データと連動させたり、SQLiteデータベースと相互作用する方法など、MAFアプリケーション機能の範囲を示しています。サンプル・アプリケーションは次の方法を示しています。
基本的なHello Worldアプリケーションの作成方法
アプリケーションがライフサイクル・イベントに反応できるようにする方法
スキニングの使用方法
MAF AMXアプリケーション機能の開発方法(ユーザー・インタフェース、ナビゲーション、マネージドBean、データ変更イベントなど)
詳細は、「サンプルのMAFアプリケーション」を参照してください。
図1-3 WorkBetterサンプル・アプリケーション