プライマリ・コンテンツに移動
Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発
リリース2.1.3
E67371-01
  目次へ移動
目次

前
 
次
 

1 Oracle Mobile Application Frameworkの概要

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

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

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

MAFは、ハイブリッド・モバイル・アーキテクチャで、ユーザー・インタフェースのレンダリングにHTML5およびCSSを使用し、アプリケーション・ビジネス・ロジックにJavaを使用し、GPSアクティビティや電子メールなどのデバイス機能へのアクセスにApache Cordovaを使用します。MAFではこれらのクロス・プラットフォーム・テクノロジを使用するため、プラットフォーム固有のツールを使用する必要なく、AndroidとiOSの両方のデバイス上で動作するアプリケーションを構築できます。MAFアプリケーションをデバイスにデプロイすると、そのアプリケーションはObjective CやAndroid SDKなどのプラットフォーム固有のツールを使用して作成されたアプリケーションと同じように動作します。さらにMAFでは、スマートフォンやタブレット用に同じアプリケーションを構築できるため、同じアプリケーションでビジネス・ロジックを再利用でき、様々なタイプのデバイス、画面サイズおよび機能を対象にできます。開発環境の設定、構成および移行の詳細は、Oracle Enterprise Pack Oracle Enterprise Pack for Eclipseのインストールを参照してください。

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

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

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

アプリケーション機能は再利用可能な、アプリケーションの機能性を持つ自己完結型モジュールです。各アプリケーション機能によって一連の特定のタスクが実行され、これらの機能をグループ化して、相互の機能が補完されるようにできます。たとえば、顧客のコンタクト先を提供するアプリケーション機能を製品在庫のアプリケーション機能とペアにすることができます。各アプリケーション機能には独自クラス・ローダーおよびWebビュー(基本的には、ブラウザとして機能するネイティブUIコンポーネント)があるため、機能は相互に独立しており、1つのMAFアプリケーションを、いくつかの異なる開発チームにより作成されたアプリケーション機能が集められたものとすることができます。アプリケーション機能を他のMAFアプリケーション機能で再利用することもできます。MAFアプリケーション自体を別のアプリケーションのベースとして再利用できるため、ISV(独立系ソフトウェア・ベンダー)は特定の顧客が構成できるアプリケーションを作成できるようになります。

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

  • モバイルWebアプリケーション: これらのアプリケーションはサーバー上にホストされます。コードはプラットフォーム間で移植可能ですが、これらのアプリケーションはデバイスのブラウザによって管理されるため、デバイス機能およびローカル・ストレージへのアクセスは制限されることがあります。

  • ネイティブ・アプリケーション: これらのアプリケーションはXcodeまたはAndroid SDKのいずれかによって作成されるため、両プラットフォームへの対応の点で制限されます。コードの再利用も同様に制限されます。

1.2 MAFランタイム・アーキテクチャについて

図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アプリケーションのページ間のフローを制御し、アプリケーションのフローをより小さい再利用可能なタスク・フローに分割でき、メソッド・コールや決定点などの非ビジュアル・コンポーネントを含めることができます。詳細は、第12.2項「タスク・フローの作成」を参照してください。

    • サーバーHTML: このコンテンツ・タイプでは、ユーザー・インタフェースは、アプリケーション機能のWebビュー内で開くことができる、サーバーが生成したWebページから提供されます。MAFのコンテキストにおいて、このコンテンツ・タイプはリモートURLと呼ばれます。これらのブラウザベースのページのリソースは、デバイス上には存在しません。そのかわりに、ユーザー・インタフェース、ページ・フロー・ロジック、ビジネス・ロジックがリモート・サーバーから提供されます。リモートでホストされたこれらのWebページのいずれかがWebビュー内で開くことを許可されている場合、Cordova JavaScript APIを使用して、指定されたデバイス・ネイティブな機能またはサービス(カメラやGPS機能など)にアクセスできます。リモートURLコンテンツを使用した機能を実装する場合、モバイル使用に最適化された既存のブラウザベース・アプリケーションを活用したり、特定のタイプのモバイル・デバイスにあわせて特別に記述されたブラウザベース・アプリケーションを使用できます。デスクトップまたはタブレットのブラウザ内で実行できるアプリケーションでは、Oracle ADF Facesのリッチ・クライアント・ベースのコンポーネントにより作成されたアプリケーションを使用してリモートURLコンテンツを実装できます。特に携帯電話をターゲットとするアプリケーションの場合は、ADFモバイル・ブラウザを使用して作成されたWebページから、リモートURLコンテンツを配信できます。ADFモバイル・ブラウザを使用して作成されたアプリケーションは、様々なスマートフォンでレンダリングできるだけでなく、Apache TrinidadのJavaServer Faces (JSF)コンポーネントを使用して作成されたユーザー・インタフェースおよび動的に選択されるスタイルシートによって、フィーチャー・フォンで使用できるように、問題ない範囲で機能を縮小することもできます。詳細は、第21章「リモート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仕様に準拠しています。詳細は、第14章「MAF AMXでのバインディングの使用とデータ・コントロールの作成」を参照してください。

      • モデル: ビジネス・ロジック・コンポーネントをユーザー・インタフェースに接続するバインディング・レイヤーが含まれます。また、このバインディング・レイヤーでは、RESTまたはSOAPベースのWebサービスを起動するための実行ロジックが提供されます。詳細は、第1.3.1項「接続アプリケーションおよび非接続アプリケーションについて」を参照してください。

      • JDBC: JDBC APIでは、CRUD (作成、読取り、更新および削除)操作を介して、暗号化されているSQLiteデータベースのデータにアクセスできます。

    • アプリケーション構成とは、Webサービス用のURLエンドポイントやリモートURL接続など、アプリケーション構成をダウンロードおよびリフレッシュできるサービスのことです。アプリケーション構成サービスは、WebDavベースのサーバー側サービスから構成情報をダウンロードします。詳細は、第18章「MAFアプリケーションで使用するエンド・ポイントの構成」を参照してください。

    • 資格証明管理、シングル・サインオン(SSO)およびアクセス制御: MAFでは、Oracle Access Management Mobile and Social (OAMMS) IDM SDKを使用して、ユーザー認証および資格証明管理を処理します。MAFアプリケーションはオフライン認証を実行するので、接続されているときにユーザーがアプリケーションにログインすると、MAFがユーザー名およびパスワードをデバイスのローカルで管理するため、認証サーバーへの接続が不可になった場合にもユーザーはアプリケーションへのアクセスを継続できます。MAFは、ローカルに保存された情報およびローカルのSQLiteデータベースに保存されたデータを暗号化します。ログイン・サーバーに対する認証後、ユーザーはこの接続によって保護されているすべてのアプリケーション機能にアクセスできるようになります。MAFは、アプリケーション機能(またはアプリケーション機能の特定のファンクション)へのアクセスを制限することによって、アクセス・コントロールの概念もサポートします。リモートで提供されるWebコンテンツには、MAFはホワイトリストを使用して、確実に目的のURIのみがアプリケーション機能のWebビュー内で開く(およびデバイス機能にアクセスする)ことができるようにします。詳細は、第30章「MAFアプリケーションの保護」を参照してください。

    • プッシュ・ハンドラ: MAFアプリケーションがiOSまたはAndroid通知サーバーからイベントを受信できるようにします。Javaレイヤーが通知処理を行います。

ネイティブ・コンテナと相互作用するリソースには次のものがあります。

  • 暗号化されたSQLiteデータベース: 埋込みSQLiteデータベースは軽量のクロスプラットフォームのリレーショナル・データベースで、ローカルに格納されているデータを保護し、JDBCを使用してコールされます。このデータベースは暗号化されるため、デバイスが紛失したり盗難にあった場合にデータを保護します。正しいユーザー名およびパスワードを入力したユーザーのみがローカル・データベースのデータにアクセスできます。詳細は、第20章「MAF AMXでのローカル・データベースの使用方法」を参照してください。

  • デバイス・サービス: デバイスにネイティブで、Cordova APIによりアプリケーション機能に統合されたサービスおよび機能。

デバイス・ネイティブ・コンテナは、次のサーバー側リソースへのアクセスを可能にします。

  • 構成サーバー: アプリケーション構成サービスによって使用される構成ファイルをホストするWebDavベースのサーバー。構成サーバーは、リファレンス実装として提供されます。J2EEサーバー上でホストされている共通のWebDavサービスはどれでも、この目的で使用できます。詳細は、第18章「MAFアプリケーションで使用するエンド・ポイントの構成」を参照してください。

  • サーバーが生成したHTML: ブラウザ・ベースのアプリケーション機能に使用されるリモート・サーバーにホストされるWebコンテンツ。詳細は、第21章「リモートURLを使用したアプリケーション機能コンテンツの実装」を参照してください。

  • APNsプッシュ・サービス: Apple Push Notification Service (APNs)は、MAFアプリケーションに通知イベントを送信する通知プロバイダです。

  • SOAPおよびRESTサービス: リモートでホストされているSOAPおよびRESTをベースとしたWebサービスです。これらのサービスは、Javaレイヤーを介してアクセスされます。

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

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


注意:

アプリケーション開発チームの規模および組織に応じて、一人の人が多くの異なるロールを務める場合があります。

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

  • 要件の収集

  • 設計

  • 開発

  • デプロイ

  • テストおよびデバッグ

  • 保護

  • サーバー側データへのアクセスの有効化

  • 再デプロイ

  • 再テストとデバッグ

  • 公開

MAFアプリケーションの構築の手順は、次のようなものです。

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

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

    設計および開発段階中は、モバイル・アプリケーションは、複雑なWebサービスから提供されるデータ量を消費できない場合があるため、モバイル固有のサーバー側リソースのセットが必要な場合があることに注意してください。さらに、モバイル・アプリケーションには、サービスによって戻されるデータを処理するための広範なクライアント側ロジックが必要になる場合もあります。サーバー側のモバイル・アプリケーションに送られてくるデータの形状を指定して、大量すぎるデータを強制的にクライアントで処理させないことが、通常は最適です。

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

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

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

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

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

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

  6. 保護: アプリケーション開発プロセス全体においてセキュリティ・リスクを評価します。モバイル・アプリケーションには独自のセキュリティ懸念事項があり、リモートで提供されるデータにアクセスするアプリケーションと同じ脆弱性を共有します。クライアント側のセキュリティを確保するため、MAFは次のような機能を提供します。

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

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

    • SSLをサポートするWebサービス・ポリシーのセット。

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

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

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

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

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

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

1.3.1 接続アプリケーションおよび非接続アプリケーションについて

MAFはネットワークに接続された状態で機能できますが、携帯信号がない場合のように切断モードでも機能できます。これには次のような例があります。

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

  • 適度(または複雑な)データ・サービスを使用する接続アプリケーション。このタイプのアプリケーションの場合、データ・コントロールを介して公開されているJavaクラス(POJO)は、ユーザー・インタフェースとサービス・データ・ソースの間でデータ照会をディスパッチできます。

  • SQLiteデータベースに格納されたデータを操作する切断されたアプリケーションでは、アプリケーション・ユーザーはオフラインで作業できます。アプリケーションはWebサービスからデータを取得する必要が生じることがあり、接続が失われている場合、接続がリストアされると、データはローカルに格納され同期されます。

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

開発環境を設定したら(Oracle Enterprise Pack Oracle Enterprise Pack for Eclipseのインストールを参照)、「ファイル」→「新」→「MAFサンプル」を選択してMAFサンプル・アプリケーションを調査できます。

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

  • 基本的なHelloWorldアプリケーションの作成方法

  • アプリケーションがライフサイクル・イベントに反応できるようにする方法

  • スキニングの使用方法

  • MAF AMXアプリケーション機能の開発方法(ユーザー・インタフェース、ナビゲーション、マネージドBean、データ変更イベントなど)

詳細は、付録G「サンプルのMAFアプリケーション」を参照してください。

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

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