ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.0
E56274-01
  目次へ移動
目次

前
 
次
 

1 Oracle Mobile Application Frameworkの概要

この章では、Oracle Mobile Application Framework (MAF)の概要を紹介し、iOSとAndroidの両方の電話およびタブレット上でネイティブに実行するモバイル・アプリケーションを作成可能なソリューションについて説明します。

この章には次の項が含まれます:

1.1 モバイル・アプリケーション・フレームワークの概要

ハイブリッド・モバイル・アーキテクチャであるOracle Mobile Application Frameworkは、Webビューでのユーザー・インタフェースのレンダリングにはHTML5とCSSを、アプリケーション・ビジネス・ロジックにはJavaを、GPSアクティビティや電子メールなどのデバイス機能へのアクセスにはApache Cordovaを使用します。MAFではこれらのクロス・プラットフォーム・テクノロジを使用するため、プラットフォーム固有のツールを使用する必要なく、AndroidとiOSの両方のデバイス用に同じアプリケーションを構築できます。これらをデバイスにデプロイした後、MAFアプリケーションは、Objective CやAndroid SDKなどのプラットフォーム固有のツールを使用して作成されたアプリケーションのように動作します。さらに、MAFを使用すると、スマートフォンまたはタブレット用に同じアプリケーションを構築できるため、同じアプリケーションのビジネス・ロジックを再利用して、様々なタイプのデバイス、画面サイズおよび機能をターゲットにできます。

MAFアプリケーションのコンテンツは、アプリケーション機能として知られる1つ以上の埋込みアプリケーションで構成されており、これらのアプリケーションは、図1-1に示すように、アプリケーションのSpringboardまたはナビゲーション・バー内のアイコンとして表されます。

図1-1 モバイル・アプリケーションのSpringboard

このイメージについては周囲のテキストで説明しています。

アプリケーション機能は、本質的に、モバイル・アプリケーションを構築するブロックです。MAFアプリケーションに統合された各アプリケーション機能によって一連の特定のタスクが実行され、これらの機能をグループ化して、相互の機能が補完されるようにできます。たとえば、顧客のコンタクト先を提供するアプリケーション機能を、製品在庫用のアプリケーション機能と組み合せることができます。各アプリケーション機能には独自のクラス・ローダーとWebビューが存在し、機能が相互に依存しないため、これにより、複数の異なる開発チームが作成したアプリケーション機能から、単一のMAFアプリケーションをアセンブルできます。また、アプリケーション機能を他のMAFアプリケーションで再利用することもできます。MAFアプリケーション自体を別のアプリケーションのベースとして再利用できることにより、ISV (独立系ソフトウェア・ベンダー)は、特定の顧客が構成できるアプリケーションを作成できます。

デバイス上でローカルに実行するハイブリッド・モバイル・アプリケーションに加え、モバイル・アプリケーションおよび使用可能なリソースの要件に応じて、アプリケーション機能を次のモバイル・アプリケーション・タイプのいずれかとして実装できます。

1.2 モバイル・アプリケーション・フレームワーク・ランタイム・アーキテクチャについて

図1-2に示すように、モバイル・アプリケーション・フレームワークは、デバイスにデプロイされたシン・ネイティブ・コンテナです。これはModel-View-Controller (MVC)の開発方法を表現しており、この方法では、モデル・レイヤーとコントローラ・ロジックから表示を分離します。シン・ネイティブ・コンテナを使用すると、MAFアプリケーションは、ローカルSQLiteデータベース、Cordova APIおよびサーバー側リソースとの相互作用によって、両方のプラットフォーム(iOSとAndroid)上でネイティブ・アプリケーションとして機能できます。プッシュ通知も有効になります。

図1-2 Oracle Mobile Application Frameworkランタイム・アーキテクチャ

この図は周囲のテキストで説明しています

ネイティブ・コンテナと相互作用するリソースは、次のとおりです。

デバイス・ネイティブ・コンテナを使用すると、次のサーバー側リソースにアクセスできます。

1.3 Oracle Mobile Application Frameworkを使用したアプリケーションの開発について

モバイル・アプリケーションのコンポーネントは単一の開発者が作成できますが、アプリケーションは、様々な開発ロールによって提供されたリソースから構築することが一般的です。アプリケーション開発者は、アプリケーション・データおよびユーザー・インタフェース・ロジックを、アプリケーションまたはアプリケーション機能で使用できる再利用可能なプログラムとして構築します。アプリケーション・アセンブラでは様々なアプリケーション機能を収集して単一のアプリケーションにし、ナビゲート可能なわかりやすい順序に配置します。アプリケーション・デプロイメントは、アプリケーション・デプロイヤによって制御されます。たとえば、MAFアプリケーションのデプロイメントで、証明書およびApple App StoreやGooglePlayなどのパブリック・ベンダー・サイトへのアップロードが必要となる場合があります。


注意:

アプリケーション開発チームのサイズや所属する組織に応じて、1人の個人に複数の異なるロールが割り当てられる場合があります。


一般的に、MAFアプリケーションを構築するときには、次のアクティビティを実行します。

MAFアプリケーションを構築するために実行する手順は、次のようなものです。

  1. 要件の収集: ユーザーが誰で、その不可欠なタスクは何か、およびこれらのタスクはどのような場所やコンテキストで実行するかを説明するユーザー・データを収集して、モバイル・ユースケース(またはユーザー・シナリオ)を作成します。タスクの実行に必要な情報のタイプ、ユーザーが使用できる情報、情報のアクセス方法や提供方法などの要因を考慮します。

  2. 設計: ユースケースを作成した後、アプリケーションのタスク・フロー内のすべてのステップ(および関連するユーザー・ビュー)を示すワイヤフレームを作成します。タスク・フローを作成するときには、ユーザー間でいつどのように相互作用が発生するかを考慮します。データの表示(プッシュ通知など)は、タスクを実行するのに十分ですか。そうでない場合、このタスクにはどの程度のデータ入力量が必要でしょうか。モバイル・コンテキスト内でこれらのタスクを構成するには、デスクトップ・アプリケーションを使用したタスクの実行とモバイル・アプリケーションを使用したタスクの実行とを比較します。単一のデスクトップ・アプリケーションで、複数の異なるモバイル・アプリケーション(または、MAFのコンテキストでは、モバイル・アプリケーションに埋め込まれた複数の異なるアプリケーション機能)にパーティション化された複数の機能を有効化できます。一般的に、モバイル・アプリケーションは短時間(一度に2分程度)で集中的に使用されるため、簡単にナビゲートでき、モバイル・デバイスの制限されたデータ入力に対応している必要があります。

    モバイル・アプリケーションでは複雑なWebサービスを介して提供されるデータ量に対応できない可能性があるため、設計および開発フェーズでは、モバイル・アプリケーションには、一連のモバイル固有のサーバー側リソースが必要となる場合があることに注意します。また、モバイル・アプリケーションには、サービスによって戻された大量のデータを処理するために、クライアント側の拡張ロジックが必要となる場合もあります。

  3. 開発: アプリケーションに最適なテクノロジを選択します。MAF Webビューでは、Apache Trinidad (ADFモバイル・ブラウザ)またはADF Facesリッチ・クライアントのコンポーネントを使用して作成可能なリモート・コンテンツがサポートされていますが、これらのアプリケーションではオフライン使用がサポートされていません。MAF AMXで作成されたアプリケーションは、クライアント上で実行されますが、デバイス・サービスに統合されているため、エンド・ユーザーは、ファイルを表示したりGPSサービスを利用できるだけでなく、電話番号をタップして電話を発信したりテキストを送信して、相互に共同作業を行うこともできます。MAF AMXコンポーネント・セットにはデータ資格化ツール(DVT)が含まれており、このツールを使用すると、分析を追加してモバイル画面上で適切にレンダリングできます。MAF AMXアプリケーションでは、リモート・ソースからデータを転送してローカルで格納することでオフライン使用をサポートしているため、エンド・ユーザーは、接続されていないときに情報を表示できます。

    MAFでは、基本的なアプリケーション自体だけでなく、MAF AMXやローカルHTMLコンテンツから実装されるアプリケーション機能も構築する、一連のウィザードおよびエディタが提供されています。これらのツールを使用すると、モバイル・アプリケーションの構成やそのアプリケーション機能の組込みのための識別子ファイル、スプラッシュ画面用の一連のデフォルト・イメージ、Springboard、サポートされているプラットフォームのフォーム・ファクタに適切なナビゲーション・バー・アイテムなどのアーティファクトが提供されます。

    詳細は、次を参照してください。

  4. デプロイ: MAFアプリケーションは、デバイスまたはシミュレータにデプロイされるまで実行できないため、エンド・ユーザーへの公開というコンテキストだけでなく、テストおよびデバッグ目的でもデプロイします。開発のフェーズに応じて、資格証明署名オプション(デバッグまたはリリース)を指定します。テストの場合は、アプリケーションをモバイル・デバイスまたはシミュレータにデプロイします。本番の場合は、Apple App StoreやGoogle Playなど、アプリケーション・マーケットへの配布用にパッケージ化します。

    アプリケーションをデプロイするには、最初に、ターゲット・プラットフォームおよびそのデバイスとシミュレータを記述するデプロイメント・プロファイルを作成します。デプロイメント・プロファイルの作成には、異なる向き(縦または横)や異なるデバイス(電話またはタブレット)でアプリケーションに使用する、スプラッシュ画面および起動アイコンの選択が含まれます。詳細は、第19章「モバイル・アプリケーションのデプロイ」を参照してください。

  5. テストおよびデバッグ: テストおよびデバッグのステージでは、アプリケーションを様々なシミュレータとデバイスにデバッグ・モードでデプロイした後、JDeveloperおよびプラットフォーム固有のツールで提供されるデバッグ出力を確認して、アプリケーションを最適化します。詳細は、第22章「MAFアプリケーションのテストおよびデバッグ」を参照してください。

  6. 保護: アプリケーションの開発プロセス全体を通して、セキュリティ上のリスクを評価します。モバイル・アプリケーションには固有のセキュリティ上の問題が存在すると同時に、リモートで供給されるデータにアクセスするすべてのアプリケーションと同じ脆弱性も共有しています。クライアント側のセキュリティを保証するために、MAFでは次のような機能を提供しています。

    • クロスサイト・スクリプティング(XSS)やクロスサイト・リクエスト・フォージェリ(CSRF)などのインジェクション攻撃を防ぐホワイトリスト

    • SQLiteデータベースへのアクセスを保護する強いパスワードを生成し、そのデータを暗号化および復号化するAPI

    • SSLをサポートする一連のWebサービス・ポリシー

    • SSLでのデプロイメントを強制する、信頼性のある認証局のcacertsファイル

    MAFのセキュリティ構成には、Oracle Access Mobile and Socialサーバーなどのログイン・サーバーまたは基本的なHTTP認証メカニズムによって保護されているいずれかのWebページの選択や、セッション管理(セッション・タイムアウトおよびアイドル・タイムアウト)の構成が含まれ、また、アプリケーションのユーザー・ロールをホストするアクセス制御サービスのWebサービスへのエンドポイントの設定も含まれます。詳細は、第21章「モバイル・アプリケーションの保護」を参照してください。

  7. サーバー側データへのアクセスの有効化: 基本レベルで想定どおりにアプリケーションが機能することを確認したら、サーバー側データにアクセスするためのJavaコードを実装できます。詳細は、第1.3.1項「接続アプリケーションおよび切断されたアプリケーションについて」を参照してください。

  8. 再デプロイ: 後続のデプロイメントでは、アプリケーションにセキュリティを追加し、サーバー側データへのアクセスを有効にした後、アプリケーション・デプロイメントが想定どおりに実行され、アプリケーションで最後のテストおよびデバッグを行う準備ができていることを確認します。

  9. 再テストおよびデバッグ: 最終回のテストとデバッグでは、セキュリティとサーバー側データのアクセス機能に重点を置き、これらの機能をアプリケーションと統合したときに、エラーや予期しない動作が発生しないことを確認します。

  10. 公開: アプリケーションを本番環境にデプロイする場合、通常は、エンタープライズ・サーバー、Apple App StoreまたはGoogle Playへの公開が行われます。MAFアプリケーションを公開すると、エンド・ユーザーは自分のモバイル・デバイスにダウンロードしたり、指定されたアイコンをタッチしてアクセスできるようになります(付録D「MAFアプリケーションの使用方法」を参照)。アプリケーション機能は指定された表示アイコンで表され、エンド・ユーザーやユーザーのデバイスに適した表示が行われます。

1.3.1 接続アプリケーションおよび切断されたアプリケーションについて

Javaレイヤーを使用すると、接続モードまたは非接続モードで実行可能なMAFアプリケーションを開発できます。次に例を示します。

  • Webサービス・データ・コントロールによって直接支えられているユーザー・インタフェースを含む基本的な接続アプリケーション(このWebサービス・データ・コントロールは、サーバーでホストされているWebサービスを起動します)。

  • 中程度の(または複雑な)データ・サービスを使用する接続アプリケーション。このタイプのアプリケーションのユーザー・インタフェース・ロジックは、マネージドBeanによって支えられます。データ・ロジックは、JavaBeanデータ・コントロールを介して公開されます。これらのデータ・コントロールを介して公開されたJavaクラス(POJO)によって、ユーザー・インタフェースとサービス・データ・ソース間のデータ問合せがディスパッチされます。具体的には、これらのPOJOにより、次の機能が実行されます。

    • さらに複雑なデータ・ソースからデータを取得して保持します。

    • サーバーから取得されたデータをユーザー・インタフェースに渡す前に処理します。

    データ・ソースがREST-XML形式またはSOAP形式に基づく場合は、データはPOJOにより保持され、RESTまたはWebサービスのデータ・コントロールから取得されます。

    アプリケーションでREST WebサービスからのJavaScript Object Notation (JSON)ペイロードを使用する場合は、Webサービス・データ・コントロールもSOAPまたはREST-XMLのWebサービスも必要ありません。かわりに、リモート・データの問合せや更新を行うPOJOにRESTサービス・アダプタ機能をカプセル化できます。その後、このPOJOをJavaBeanデータ・コントロールとして公開します。

  • アプリケーション・ユーザーがオフラインで作業できるように、データが移入されたSQLiteデータベースを使用する非接続アプリケーションを作成できます。アプリケーションはデータベースに格納されたデータを操作し、データベースをサーバーと同期化します。これらの機能領域のコードは、次のような2つのモジュールに分割できます。

    • 最初のコード・モジュールでは、ユーザー・インタフェースによってローカル・データベースからデータを取得できます。JavaBeanデータ・コントロールにより、ユーザー・インタフェースにデータが供給されます。JDBC APIにより、SQLiteデータベースでCRUD操作が実行されます。

    • 2つ目のコード・モジュールには、JDBC APIによってサーバーからデータを取得してローカル・データベースに移入するJavaクラスの実装が含まれます。バックグラウンド・データの同期化の実装を選択した場合、このモジュールによってバックグラウンド・スレッドが実行されます。


      注意:

      これらのJavaクラスは、REST-XMLまたはSOAPのWebサービスを使用してデータが取得されるときに、データ・コントロールとして公開されます。アプリケーションでREST Webサービスから生成されたJSONレスポンスを使用する場合、これは直接コールされます。


1.4 サンプル・アプリケーション

デプロイメント環境の設定(第2章「開発環境の設定」を参照)が完了したら、jdev_install/jdeveloper/jdev/extensions/oracle.maf/Samplesディレクトリ内のPublicSamples.zipファイルにあるMAFサンプル・アプリケーションを実行できます。

図1-3に示すようなWorkBetterアプリケーションなどのサンプル・アプリケーションは、アプリケーションでWebサービスを使用してリモート・データと連動させたり、SQLiteデータベースと相互作用する方法など、MAFアプリケーション機能の範囲を示しています。サンプル・アプリケーションは次の方法を示しています。

詳細は、付録F「サンプルのモバイル・アプリケーション・フレームワーク・アプリケーション」を参照してください。

図1-3 WorkBetterサンプル・アプリケーション

このイメージについては周囲のテキストで説明しています。