この付録の内容は次のとおりです。
Oracle JDeveloperでは、複数のタッチ・デバイス上で実行されるアプリケーションを開発者が迅速に開発できます。ADF Facesフレームワークを利用すれば、アプリケーション開発者はiOS、AndroidまたはWindowsなど複数のモバイル・プラットフォームに向けてアプリケーションを迅速に開発できます。
ADF Facesフレームワークは、Safari、ChromeおよびMicrosoft Edgeなどのモバイル・ブラウザで実行するように最適化されています。フレームワークは、タッチ装置上のモバイル・ブラウザがページをリクエストすると認識し、モバイル・デバイスに適用可能なJavaScriptとピア・コードのみを提供します。ただし、標準ADF Faces Webアプリケーションはモバイル・ブラウザで実行されますが、ユーザーの対話が異なり、スクリーン・サイズが制限されるため、アプリケーションをモバイル・ブラウザで実行する必要がある場合、タッチ装置に固有のバージョンのページを作成する必要があります。
この付録では、タッチ装置上のモバイル・ブラウザでのADF Facesの機能と、タッチ装置専用のWebページを実装するためのベスト・プラクティスについて説明します。
Oracle ADFには、ADF Facesを使用してWebアプリケーションを開発し、タッチ対応デバイスで実行する特定の機能があります。これらの機能には、モバイル・ブラウザ機能に応じた適応型レンダリング機能、一般的なモバイル・ブラウザ上での認証など、タッチ・ジェスチャ操作のサポートが含まれます。
タッチ装置では、ユーザーはマウスをクリックするかわりに画面にタッチします。ADF Facesは、touchstart、touchend、touchmove、touchcancelなどのタッチ・イベントをサポートするようになりました。ドラッグ・アンド・ドロップ、タップおよびホールドなどの高度なジェスチャもサポートされています。タップなどのごく基本的なタッチ・ジェスチャはマウス・イベントにマップされますが、高度なサポート機能はiOSおよびAndroidプラットフォームで提供されます。ADF FacesではADF Facesコンポーネントの変換を処理するピアを提供します。タッチ・デバイスとデスクトップ・デバイスとの変換の相違の処理方法を改善するために、ADF Facesでは、変換が必要なコンポーネントごとに、タッチ・デバイス固有のピアとデスクトップ固有のピアの両方を提供しています(ピアの詳細は、「ADF Facesアーキテクチャの使用について」を参照)。
これらのピアにより、コンポーネントは装置に固有のイベントを処理できます。たとえば、デスクトップのピアは、マウス・オーバー・イベントやマウス・アウト・イベントを処理し、タッチ装置のピアは、タッチ開始イベントとタッチ終了イベントを処理します。基本のピアは、共通の対話をすべて処理します。この分離により両方のデバイスでの処理が最適化されます。
タッチ装置のピアでは、タッチ固有のジェスチャを使用して、デスクトップでの対話をシミュレートするロジックが提供されます。表D-1に、デスクトップのジェスチャとタッチ装置のジェスチャの対応状況を示します。
表D-1 サポートされるモバイル・ブラウザのユーザー・ジェスチャ
マウスによる対話 | タッチ・ジェスチャ | 視覚状況 | 例 |
---|---|---|---|
クリック |
タップ |
マウス・ダウン |
ボタンを実行 |
選択 |
タップ |
選択済 |
表の行を選択 |
複数を選択 |
タップでオブジェクトを選択、タップで別のオブジェクトを選択、選択済オブジェクトのタップで選択解除 |
選択済 |
複数のグラフ・バーを選択 |
簡単なインタフェースでのドラッグ・アンド・ドロップ |
指で指す+ドラッグ |
マウス・ダウン |
スライダ・サムまたはスプリッタをドラッグ |
ドラッグ・アンド・ドロップとデータ・チップの両方が必要な場合のドラッグ・アンド・ドロップ |
指で指す+短く保留+ドラッグ |
マウス・ダウン |
ガント・チャートでタスク・バーを移動 |
カーソルを置いてデータ・チップを表示 |
指で指す+保留 |
カーソルを置く(マウスオーバー) |
グラフのデータ・チップを表示 |
カーソルを置いてポップアップを表示 |
指で指す+保留 |
カーソルを置く(マウスオーバー) |
カレンダからポップアップを表示 |
クリックしてポップアップを閉じる |
ポップアップの外をタップ |
マウス・クリック |
ポップアップの外をクリックして閉じる |
グラフにデータ・カーソルを配置 |
指で指す+保留 |
カーソルを置く |
グラフのX軸に沿ってトレースし、Y軸の交差地点でデータ値をチップに表示。 |
右クリックでコンテキスト・メニューを起動 |
指で指す+保留または指で指す+保留+指を上げる(別の指で指す+保留ジェスチャとのジェスチャの競合がある場合) 指で指す+保留+テーマ・マップで指を上げる |
グラフまたはカレンダ・アクティビティのコンテキスト・メニューを表示。指を上げた場合のコンテキスト・メニューの例: グラフ: 指で指す+保留=データ・チップ、指を上げる=コンテキスト・メニュー グラフ(バブル): 指で指す+保留+移動=ドラッグ・アンド・ドロップ、指を上げる=コンテキスト・メニュー ガント(タスク・バー): 指で指す+保留=データ・チップ、指で指す+保留+移動=ドラッグ・アンド・ドロップ、指を上げる=コンテキスト・メニュー |
|
パン |
1本の指でスワイプ(他のジェスチャとの競合がない場合)。それ以外の場合は、2本の指でスワイプ |
有効 |
マップのパン |
ズーム・イン/ズーム・アウト |
2回タップ(ブラウザのズーム)。最大化の状態では、ピンチ・イン/ピンチ・アウトでズームを実行可能 テーマ・マップの場合、ピンチ・イン/ピンチ・アウト |
有効 |
ブラウザ画面をズーム グラフまたはマップをズーム |
テーマ・マップ・コンポーネントをダブルクリック |
2回タップ |
ドリルされた状態 |
エリア・データ・レイヤーのエリアにドリル |
テーマ・マップにカーソルを置いて、データ・チップまたはポップアップを表示 |
指で指す+保留 |
カーソルを置く(マウスオーバー) |
エリアまたはマーカー・データ・チップを表示、またはポップアップを起動 |
ダブルクリックで階層ビューア・コンポーネントにアンカーを設定 |
2回タップ |
|
階層内でノードを2回タップすると、それがルート・ノードになります。 |
階層ビューア・コンポーネントで分離アイコンをクリック |
ノードをタップしてから、分離アイコンをタップ |
パネル・カードが分離された状態 |
カードの上部をタップしてから、分離アイコンをタップすると、そのカードと直接レポートのみが表示されます。 |
階層ビューア・コンポーネントで折りたたみアイコンをクリック |
カードを上にスワイプ |
パネル・カードが折りたたまれた状態 |
パネル・カードの折りたたみ |
階層ビューア・コンポーネントで展開アイコンをクリック |
カードを下にスワイプ |
パネル・カードが展開された状態 |
折りたたまれたパネル・カードを展開。 |
カーソルを置いて、階層ビューアのポップアップ・ボタンを表示 |
カードをタップ |
ポップアップ・ボタンが表示された状態 |
カードをタップして、ポップアップ・ボタンを表示 |
階層ビューア・コンポーネントで右矢印ボタンまたは左矢印ボタンをクリック |
カードを左または右にスワイプ |
パネル・カードの切替え |
左にスワイプして住所を表示、または右にスワイプしてコンテンツを表示。 |
ナビゲーション・ボタンをクリックして、階層を横方向に移動 |
横方向ナビゲーション行で左または右にスワイプするか、矢印をタップするか、タッチして短く保留で指を上げてナビゲーション・ボタンを表示 |
階層をトラバース |
ルート・ノードの子孫を表示。 |
該当なし |
最大化アイコンを1回タップ |
コンポーネントを最大化 |
|
該当なし |
最大化アイコンを2回タップするか、階層ビューアの背景を2回タブで移動 |
コンポーネントを最大化し、ズームで調整 |
|
円、長方形、ポリゴン・ツールをマップで使用して、領域をドラッグおよび選択 |
指で指す、形を描画 |
選択済 |
指で、マップ上の領域を選択 |
マップで測定ツールを使用して、開始点と終了点をクリック |
測定ツールをタップ、指で指す、線を描画 |
描画された線と計算された距離が表示された状態 |
指で測定ツールを選択し、タップしてA点を選択、B点までの線を描画 |
マップでエリア・ツールを使用して、開始点と終了点をクリック |
エリア・ツールをタップ、指で指す、線を描画 |
描画された線と計算されたエリアが表示された状態 |
指でエリア・ツールを選択、タップしてA点を選択、B点までの線を描画など。 |
さらに最適化するために、タッチ装置のJavaScriptがデスクトップのJavaScriptと区別されるようにADF FacesはJavaScriptをパーティション化します。ページをレンダリングすると、必要なJavaScriptのみがダウンロードされます。また、タッチ装置が検出されると、タッチ装置に固有のCSSコンテンツがページに送信されます。たとえば、タッチ装置では、シャトル・コンポーネントのアイテムにチェック・ボックスが表示されるため、ユーザーは簡単にアイテムを選択できます。デスクトップ装置では、チェック・ボックスは表示されません。
デバイス固有のピア、JavaScriptおよびCSSを使用すると、コンポーネントはデスクトップ装置とタッチ装置で別々に機能します。表D-2に、その違いを示します。
表D-2 モバイル・ブラウザでのコンポーネントの相違
コンポーネント | 機能 | デスクトップ・コンポーネントとの相違 |
---|---|---|
|
選択項目 |
選択ボックスが表示され、ユーザーは移動するアイテムを選択できます。 |
|
選択項目 |
行をタップして選択し、再度タップしてその行の選択を解除します。選択する行をタップすることで、複数の行を簡単に選択できます。つまり、2番目の行を選択しても、最初の行の選択が自動で解除されるわけではありません。 |
|
スクロール |
表コンポーネントには、スクロールバーのかわりに、ユーザーが行の特定のページにジャンプできるフッターが表示されます。 1ページの行数は |
ADF Facesダイアログ・フレームワーク |
Windows |
ダイアログ・フレームワークの起動に使用されるコマンド・コンポーネントで、 |
|
連結解除可能メニュー |
連結解除可能メニューはサポートされません。 |
|
ジオメトリ管理 |
タッチ装置では、
|
|
最大化 |
タッチ装置では、 |
各種コンポーネント |
アイコン、ボタンおよびリンク |
アイコンとボタンは比較的大きく、リンク間のスペースは、指に対応するように比較的大きくなっています。 |
一部のタッチ装置ではFlashがサポートされないため、ADF Facesコンポーネントでは、アニメーションの遷移などにHTML5が使用されます。この規格によって、コンポーネントはすべての装置で表示されます。
適応型でインタラクティブなジェスチャ対応のタッチ式デバイスに向けてADF Facesアプリケーションを開発するには、次のベスト・プラクティスに従ってください。優れたユーザー・エクスペリエンスが有効になり、機能は制限されません。
アプリケーションがタッチ装置で動作することがわかれば、その装置に固有のページを作成する作業がベスト・プラクティスになります。次の例と同様のコードを使用すると、アプリケーションが動作する装置を決定し、その装置に正しいページを提供できます。
public boolean isMobilePlatform() { RequestContext context = RequestContext.getCurrentInstance(); Agent agent = context.getAgent(); return Agent.TYPE_PDA.equals(agent.getType()) || Agent.TYPE_PHONE.equals(agent.getType()) || ( Agent.AGENT_WEBKIT.equals(agent.getAgentName()) && ( // iPad/iPhone/iPod touch will come in as a desktop type and an iphone platform: "iphone".equalsIgnoreCase(agent.getPlatformName()) ) ); }
タッチ装置アプリケーションはほとんどのADF Facesコンポーネントを使用できますが、タッチ装置上では、特定の機能が制限されるか失敗することがあります。表D-3に、タッチ装置のアプリケーションの開発で従うベスト・プラクティスを示します。
表D-3 モバイル・ブラウザでのADF Facesコンポーネントのベスト・プラクティス
コンポーネント/機能 | ベスト・プラクティス |
---|---|
ジオメトリ管理 |
この設定により、ページは拡大せずにスクロールするようになります。「レイアウトと表コンポーネントの形状管理」を参照してください。 |
部分ページ・ナビゲーション |
部分ページ・ナビゲーションを使用すると、ページ間でJavaScriptなどのクライアント・コードをダウンロードする必要がないため、パフォーマンスが向上します。「部分ページ・ナビゲーションの使用」を参照してください。 |
ナビゲーション |
コンテンツの各部分への直接アクセスを提供します。適切なルールでは、1つのページに多くの領域を使用してスプリッタで分割するのではなく、ページごとに1つのタスクのみが使用されます。たとえば、左ペインのツリーで |
ADFタスク・フロー |
ADFタスク・フローを使用する場合、ページ全体ではなく、ページ・フラグメントを使用します。リージョンを使用して、ページ・フラグメントがページに挿入されます。これは親ドキュメントにあり、 タスク・フローの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFタスク・フローの概要に関する項を参照してください。 |
|
大きなアイコン(通常は129x129ピクセル)を参照するように |
|
ユーザーが
ユーザーが編集可能領域外をクリックすると、次の処理が実行されます。
タッチ・イベント・リスナーをドキュメントに追加する場合、 |
|
|
表 |
デフォルトでは、タブレット・デバイスでレンダリングする場合、表にはユーザーが行の特定のページにジャンプできるフッターが表示されます。ただし、タブレットのスクロールを模倣して、表がハイウォータマーク・スクロールを使用して滑らかにスクロールするようにする場合は、 タブレット・デバイスでハイウォータマーク・スクロールを有効にして表示するすべての表の場合は、次のように設定します。
タブレット・デバイスでページ区切りを有効にして表示するすべての表の場合は、次のように設定します。
これらのページ区切り条件が満たされない場合、表にはページではなくスクロールバーが表示されます。 表属性の詳細は、「表の書式設定」を参照してください。配置レイアウトおよび表の詳細は、「表、ツリーおよびツリー表コンポーネントのジオメトリ管理」を参照してください。 |
ADF Facesフレームワークを利用すれば、アプリケーション開発者はInternet Explorer 11以降あるいはMicrosoft Edgeブラウザが実行されているWindows 10など、複数のモバイル・プラットフォームに向けてアプリケーションを迅速に開発できます。
ADF Facesフレームワークは、ロング・ホールド、ドラッグ・アンド・ドロップなど高度なタッチ・ジェスチャをサポートします。ADF Facesでサポートされるのは、Windows Phone上のInternet Explorer 11とMicrosoft Edgeです。
ADF Facesフレームワークは、Microsoft EdgeやInternet Explorer 11以降などのモバイル・ブラウザが実行されているWindows Phoneでの実行に最適化されています。