Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.3.3 E82940-01 |
|
前 |
次 |
この章の内容は次のとおりです。
アプリケーション機能のコンテンツ・タイプには、ユーザー・インタフェースの形式が記述されます。このコンテンツ・タイプは、MAF AMXコンポーネントまたはHTML(5)タグを使用して構成できます。また、アプリケーション機能では、モバイル・コンテキストに適したコンテンツを含む、リモートでホストされたページから、自身のコンテンツを導出することもできます。このようなWebページとして考えられるのは、スマートフォン向けのApache Trinidadで作成されたJavaServerページや、タブレット・デバイス上で実行されるアプリケーション向けのADF Facesコンポーネントから構成されたページです。MAFアプリケーションに埋め込まれた各アプリケーション機能では、様々なコンテンツ・タイプを保持できます。
MAFアプリケーションには、様々なコンテンツ・タイプを持つアプリケーション機能が含まれますが、アプリケーション機能自体も、ユーザーおよびデバイス固有の要件に応じた様々なコンテンツ・タイプを保持する場合があります。アプリケーション機能で異なるコンテンツ・タイプを配信する方法の詳細は、「アプリケーション機能に関する制約の設定」を参照してください。<adfmf:content>
要素に子要素を追加すると(例5-1を参照)、アプリケーション機能でユーザー・インタフェースを実装する方法を定義できます。
概要エディタの「コンテンツ」タブ(図5-1を参照)には、例5-1に示したターゲット・コンテンツ関連の要素と属性を定義するためのドロップダウン・リストとフィールドが表示されます。このタブのフィールドを使用すると、アプリケーション機能用に配信されるコンテンツのタイプと、そのコンテンツ・タイプで使用するナビゲーションとSpringboardアイコンのイメージを制御できる制約を設定できます。
各コンテンツ・タイプには、独自のパラメータ・セットがあります。たとえば、図5-1に示すように、MAF AMXコンテンツとして実装するアプリケーション機能のMAF AMXページまたはタスク・フローの場所を指定する必要があります。さらにオプションで、アプリケーション機能に他のアプリケーション機能(またはMAFアプリケーション自体)とは異なるルック・アンド・フィールを設定するCSSファイルを選択したり、MAF AMXコンポーネントのアクションを制御するJavaScriptファイルを選択することもできます。
図5-1 アプリケーション機能の実装の定義
例5-1 <adfmf:content>要素
<adfmf:content id="Feature1"> <adfmf:amx file="FeatureContent.amx"> </adfmf:content>
概要エディタの「コンテンツ」タブ(図5-1を参照)には、例5-1に示したターゲット・コンテンツ関連の要素と属性を定義するためのドロップダウン・リストとフィールドが表示されます。このタブのフィールドを使用すると、アプリケーション機能用に配信されるコンテンツのタイプと、そのコンテンツ・タイプで使用するナビゲーションとSpringboardアイコンのイメージを制御できる制約を設定できます。
始める前に:
各コンテンツ・タイプには、次のような独自の前提条件があります。
リモートURL: Webアプリケーションへの参照。既存のWebアプリケーションをモバイル用に拡張し、さらにデバイス・サービスを拡張できます。リモート・コンテンツでは、ローカル・データ・キャッシュや、サーバー側データおよび機能の一式を提供することによって、MAF AMXおよびローカルHTMLコンテンツの両方を補完できます。リモートURL実装には、有効なWebアドレスが必要です。詳細は、「リモートURLを使用したアプリケーション機能コンテンツの実装」を参照してください。
ローカルHTML: MAFアプリケーション内にパッケージ化されたHTMLページを参照します。「サンプルのMAFアプリケーション」で説明されているHelloWorld
サンプル・アプリケーションが示すように、このようなHTMLページはJavaScriptを参照できます。MAFが自分のアプリケーションの機能の実装に最適ではない場合に、Cordova JavaScript APIの使用によるアプリケーション機能を実装するため、このコンテンツ・タイプの使用を検討してください。JavaScript APIおよびMAFの詳細は、「ローカルHTMLおよびアプリケーション・コンテナAPI」を参照してください。
アプリケーション・コンテンツをリモートURLまたはローカルHTMLとして定義するには:
概要エディタの「コンテンツ」タブ(図5-1を参照)には、例5-1に示したターゲット・コンテンツ関連の要素と属性を定義するためのドロップダウン・リストとフィールドが表示されます。このタブのフィールドを使用すると、アプリケーション機能用に配信されるコンテンツのタイプと、そのコンテンツ・タイプで使用するナビゲーションとSpringboardアイコンのイメージを制御できる制約を設定できます。
始める前に:
各コンテンツ・タイプには、次のような独自の前提条件があります。
MAF AMX: アプリケーション機能に対するデフォルトのコンテンツ・タイプ。MAF AMXページの詳細は、「MAF AMXページの作成」を参照してください。
MAF AMXとして実装されるアプリケーション機能には、ビュー(単一のMAF AMXページ)か、バインド・タスク・フローまたはバインドなしタスク・フローが必要です。JavaScriptファイルを追加すると、MAF AMXコンポーネントに対するレンダリング・ロジックが提供されるか、既存のレンダリング・ロジックがオーバーライドされます。アプリケーション機能に対するカスタムのルック・アンド・フィールを指定するセレクタを持つスタイル・シート(CSS)を含めます。これは、MAFアプリケーション・レベルで定義されたスタイル(アプリケーション機能にデフォルトで使用されるスタイル)をオーバーライドします。つまり、アプリケーション機能全体で確実に独自のルック・アンド・フィールを持つようになります。
MAF AMXページとこれらを格納するMAFアプリケーションは、両方とも「新規ギャラリ」のウィザードを使用して作成できます。これらのウィザードにアクセスするには、まず「アプリケーション」ウィンドウでビュー・コントローラ・プロジェクトを強調表示してから、次に「新規」を選択します。
注意:
maf-feature.xml
ファイル内にある、タスク・フロー、MAF AMXページ、CSSおよびJavaScriptファイルへの参照を手動で編集する場合、デバイスで使用されているファイル・システムによって大文字と小文字が区別され、特殊文字が許可されない可能性があることに注意してください。これらのファイルを確実に参照できるようにするには、モバイル・デバイスの仕様を確認してください。
MAFタスク・フロー: アプリケーション機能の制御フローの定義にモジュール型アプローチを提供します。タスク・フローを使用して、1つのタスクを構成する一連のアクティビティを定義します。タスク・フローに含めることのできるアクティビティには、ビュー(MAF AMXページの表示に使用)、メソッド・コール(マネージドBeanのメソッドの起動に使用)、タスク・フロー・コール(別のタスク・フローのコールに使用)などがあります。タスク・フローの詳細は、「タスク・フローの作成」を参照してください。
MAF AMXページまたはタスク・フローをアプリケーション機能のコンテンツとして使用する手順:
iOS 9デバイスにデプロイされている場合、MAFアプリケーションでは、AMXコンテンツのレンダリングにデフォルトでWKWebViewが使用されます。
WKWebViewは、UIWebViewと比べてパフォーマンスが改善されている、より新しいiOS Webビューです。ローカルHTMLまたはリモートURLコンテンツ・タイプを使用するアプリケーション機能では、デフォルトでUIWebViewが使用されます。これは、このWebビューでは、JavaScript APIへのアクセスのために/~maf.device~/
仮想パスがサポートされているためです。/~maf.device~/
仮想パスが必要ない場合は、ローカルHTMLおよびリモートURLコンテンツ・タイプを使用するアプリケーション機能を、WKWebViewを使用するよう構成できます。必要な場合は、AMXコンテンツを使用するアプリケーション機能を、古いUIWebViewを使用するよう構成することもできます。これらの構成変更を行うには、次の例で示すように、maf-features.xml
内のiOSWebView
プロパティを構成します。
<adfmf:feature id="WKWebViewExample" name="WKWebViewExample"> <adfmf:constraints> <adfmf:constraint property="device.os" operator="contains" value="iOS" id="c6"/> </adfmf:constraints> <adfmf:content id="WKWebViewExample.1"> <adfmf:amx file="WKWebViewExample/home.amx"/> </adfmf:content> <adfmf:properties id="wkp1"> <!-- To use WKWebView, set to modern --> <adfmf:property id="wkp1-1" name="iOSWebView" value="modern" /> <!-- To use UIWebView, set to legacy --> <!-- name="iOSWebView" value="legacy" --> </adfmf:properties> </adfmf:feature>
iOSWebView
プロパティが不足しているかdefault
に設定されている場合は、AMXコンテンツにはWKWebViewが使用され、ローカルHTMLおよびリモートURLコンテンツ・タイプにはUIWebViewが使用されます。
WKWebViewは、iOS 9でのみ使用されます。UIWebViewは、iOS 8では常に使用されます。
デプロイメントを可能にするために、次の属性によって参照されるすべてのリソースは、ビュー・コントローラ・プロジェクトのpublic_html
ディレクトリ内に配置する必要があります。
<adfmf:feature>
のicon
およびimage
属性(例: <adfmf:feature id="PROD" name="Products" icon="feature_icon.png" image="springboard.png">
)。「アプリケーション機能の表示プロパティの設定」も参照してください。
<adfmf:content>
のicon
およびimage
属性(例: <adfmf:content id="PROD" icon="feature_icon.png" image="springboard_image.png">
)。「アプリケーション機能のコンテンツ・タイプの概要」も参照してください。
<adfmf:amx>
のfile
属性(例: <adfmf:amx file="PRODUCT/home.amx" />
)。「アプリケーション機能のコンテンツ・タイプの概要」も参照してください。
<adfmf: localHTML
>のurl
属性(例: <adfmf:localHTML url="oracle.hello/index.html"/>
)。「アプリケーション機能のコンテンツ・タイプの概要」および「カスタム・ログイン・ページ」も参照してください。
<adfmf:includes>
のtype=stylesheet
およびtype=JavaScript
に対して定義するファイル属性(例: <adfmf:include type="JavaScript" file="myotherfile.js"/>
または<adfmf:include type="StyleSheet" file="resources/css/stylesheet.css" id="i3"/>
)。「MAFアプリケーションのスキニング」も参照してください。
MAFは、別の場所から参照されるリソースをサポートしていません。つまり、たとえば、../
を接頭辞として使用して、public_html
ディレクトリ外部に値を入力することはできません。public_html
外部のリソースを参照しないようにする安全策として、MAFには、「ファイルがpublic_htmlディレクトリにありません」と呼ばれる監査ルールが含まれています。MAFの監査プロファイル(図5-6を参照)には、「ツール」→「プリファレンス」 →「監査」→「プロファイル」と選択することで、「プリファレンス」の「監査」の下の「プロファイル」ノードからアクセスできます。
図5-6 MAFの監査プロファイル
このプロファイルを選択した場合、リソースの場所を変更すると、JDeveloperによって警告が発行されます。図5-7に示すように、デフォルト値がオーバーライドされると、JDeveloperはこうした警告を表示します。監査の詳細は、『Oracle JDeveloperによるアプリケーションの開発』の「Javaプロジェクトの監査とモニタリング」の章を参照してください。
図5-7 外部リソースの警告