Oracle JDeveloperとOracle ADFを使用したApple iPhoneの開発著者:Joe Huang Oracle JDeveloperとOracle ADFを使用することで、開発者は誰でもiPhone用の強力なWebアプリケーションを迅速に作成できます。 2008年12月公開 Apple iPhoneは、2007年7月の初回発売以来18カ月で、もっとも売れ行きのよい商品となっています。 こうした成功のおもな要因は、iPhoneの強力なSafariブラウザが、通常はデスクトップ・ブラウザのみが対応しているJavaScript機能と AJAX機能に完全に対応しており、ほぼすべてのWebページを閲覧できる点です。 このコラムでは、 Oracle JDeveloperと Oracle Application Development Framework(Oracle ADF)Mobileを使用して、iPhone用に最適化 されたモバイルWebアプリケーションを開発する方法について説明します。 課題3.5インチのiPhone画面を使用してアクセスするモバイル・ユーザー向けのWebアプリケーションの設計は、22インチのLCD モニターを使用してアクセスするデスクトップ・ユーザー向けのものとは大きく異なっています。 そのため、Web開発者にとって興味深い課題が発生しています。これは、現在市場に出回っているWeb開発ツールが、次の2つのカテゴリのいずれかに属し ているためです。
Oracle ADF Mobile Browserクライアントを使用すれば、簡単なHTMLコンテンツやWAP 2.0コンテンツしか処理できないモバイル・ブラウザとの互換性を完全に維持しつつ、iPhone用のSafariブラウザがサポートするAJAX機能を 活用できます。 さらに、iPhoneの画面サイズとモバイルでのWeb使用向けに最適化されたユーザー・インタフェースを開発できます。 Oracle ADFでのモバイル開発における基本事項Oracle ADFは、Oracle ADF Mobileによりモバイル・アプリケーションの開発をサポートします。 モバイル・サポートの中核となるものは、MyFaces Trinidadコンポーネントの提供するJavaServer Faces(JSF)モバイル・レンダリング・キットと、Oracle JDeveloperデザインタイムのサポートにあります。 Oracle ADF Mobileのおもな機能には、たとえば次のようなものがあります。
iPhone用に最適化されたOracle ADF Mobileアプリケーションの開発Oracle ADFとOracle JDeveloperを使用してiPhone用に最適化されたモバイル・アプリケーションを開発する高度な手順の概要は、次のとおりです。
ビュー・エディタへのiPhoneの解像度の追加ビュー・エディタの画面解像度リストを使用すれば、視覚的にビューを設計できます。 Oracle JDeveloperは、240x240、240x260、240x320、320x240の解像度に標準対応しています。 iPhoneの画面解像度は、320x480です。 ビュー・エディタにiPhoneの解像度を追加するには、次の手順に従います。
iPhone固有のルック・アンド・フィールの実現Trinidadコンポーネントを使用してスキニングすることで、Oracle ADF MobileアプリケーションにiPhone固有のルック・アンド・フィールを設定できます。 さらに、同一のUIコンポーネント・セットにプラットフォーム固有のルック・アンド・フィールを設定できるため、各種モバイル・デバイスに合わせて同じア プリケーションを複数バージョン作成する必要はありません。 iPhoneのスキニングを実行するには、まず、JSFアプリケーションの実行時に各種モバイル・ブラウザの各種スタイルシートの適用 を可能にするロジックを実装します。 通常、Oracle ADF Mobileアプリケーションは複数のデバイス・タイプに対応する必要がありますが、複数のデバイスで問題なく機能する1つの共通スタイルシートを定義す るのは事実上不可能です。 そのため、まずはアプリケーションのページ・フローにマネージドBeanを作成し、メソッドの1つでブラウザ・タイプを検出して、そのプラットフォームで 使用するスキン・ファミリー名を返すよう設定します。 このメソッドは、Trinidad-config.xmlファイルで起動できます。以下に例を挙げます。 <skin-family>#{AgentUtil.phoneFamily}AgentUtilは、マネージドBeanのクラス名であり、phoneFamilyは、スキン・ファミリーを文字列として返すメソッドです。 Trinidad-skins.xmlファイルでは、各種スキン・ファミリーと、プロジェクト内のCSSファイルの対応部分を定義できます。 たとえばiPhoneの場合、スキン・ファミリーは次のように定義できます。 <skin>AgentUtil.phoneFamilyメソッドは、iPhone使用時にiphoneFamilyを返します。 これで、styles/iPhone.cssにあるスタイルシートが使用されます。 AgentUtil.phoneFamilyメソッドのサンプル・コードは、以下のとおりです。サンプル・コードには、iPhoneやSymbianなど のモバイル・ブラウザを使用する場合のコードのみが含まれています。 ブラウザは必要に応じて追加できます。 private String IPHONE_SKIN = "iphoneFamily"; agent.indexOf("<UA String>")という関数に注意してください。 この関数は、<UA String>に入力された文字列を、要求するブラウザのUser Agentフィールドと照合します。 この関数は、部分照合を実行します。たとえば、サンプルにある agent.indexOf("iPhone")の 場合は、ブラウザのUser Agent文字列全体をチェックして、"iPhone"というパターンがないか確認します。 一致した場合(User Agentに iPhoneという文字列が含まれていた場合)は、 -1という戻り値が返されます。 このフィールドで指定する文 字列は、検索する文字列との一致が戻り値で保証される限り、必要に応じて長くも短くもできます。 こ こでは、テスト・ケースで機能するUser Agent文字列を指定する必要がありますが、通常使用されるパターンは、次のとおりです。
詳細な手順は、次のバージョンの『 Oracle ADF Mobile Developer Guide』に公開されます。 TrinidadベースのアプリケーションのCSSファイル定義方法の詳細については、 こちらの文書を 参照してください。 スキニングとTrinidadコンポーネントを使用したiPhoneの共通UI要素の実装次に、iPhone固有のルック・アンド・フィールを実現するため、iPhoneの共通UI要素の作成を支援するスタイルシートのスタ イル・クラスを定義します。 iPhoneのネイティブ・アプリケーションで使用される共通UI要素には、基本的に、ナビゲーション・パネル・リスト、フィールド・セット・パネル、ナ ビゲーション・バーの3つがあります。 それでは、各要素について詳しく見てみましょう。 ナビゲーション・パネル・リストナビゲーション・パネル・リストでは、データ・リストが1列の表として表示されますが、各行は複数列からのデータを含みます。 ここで採用されているシナリオは、ユーザーがサマリー・データのリストにざっと目を通したあとで、行を選択してその行に関連する詳細情報を表示するという ものです。 次の例では、住宅の販売物件リストが表示されています。 これに対応するコードは、次のとおりです。<div class="panelBase">listingImageなどのスタイル・クラスの定義については、 こ ちらのリンクからiPhoneのCSSファイルのサンプルをダウンロードしてご確認ください。 フィールド・セット・パネルフィールド・セット・パネルは、通常、データのインスタンスの詳細な情報を表示する場合に使用され、別画面に移動するリンクや、関連す る詳細な情報を表示するビューを含みます。 フィールド・セット・パネルの例は、次のとおりです。上記の例に続いて、このビューに住宅の詳細な情報と、その住宅のより詳細な情報へのリンクが表示され ます。 これに対応するコードは、次のとおりです。<div class="panelBase">panelBaseスタイルは、この画面のピンストライプ(細い縦縞)の背景を表示します。 2つのpanelCaptionGroupコントロールは、データを2つのグループに分けて表示します。 さらに、Streetフィールドはtr:goLinkコンポーネントであるため、iPhoneのGoogle Mapsアプリケーションを起動できます。 この機能については、次の項で説明します。 listingImageなどのスタイル・クラスの定義については、iPhoneのCSSファイルを参照してください。 ナビゲーション・バーナビゲーション・バーには、iPhoneアプリケーションの主要なナビゲーション機能が表示されます。 1つ前の例では、ナビゲーション・バーは画面の最上部に表示されており、ボタンを指でクリックすると、別のビューが表示されるようになっています。 それでは、ナビゲーション・バーについて詳しく見てみましょう。 ナビゲーション・バーのコードは、次のとおりです。<tr:panelHeader text="Details" styleClass="toolbar" rendered="true">ここでも、listingImageなどのスタイル・クラスの定義については、iPhoneのCSSファイルを参照してください。 iPhoneサービスとの通信モバイル・デバイスのブラウザには、通常、電話機能や電子メール機能などのオンデバイス・サービスと通信する基本機能がいくつか搭載さ れていますが、iPhoneは、iPhone Google Mapsアプリケーションと通信する機能により、一歩先に進んでいるといえます。 Oracle ADFとOracle JDeveloperを使用すれば、こうした機能をわずか数行のコードで活用できます。 また、電話番号や住所などが保存されているバインディング・レイヤーに簡単にアクセスできるため、ユーザーがデータベース・フィールドにある電話番号を簡 単にダイヤルできます。 電話サービスiPhone用Safariには、ページ上の電話番号を認識し、ユーザーがその番号をクリックしてダイヤルできる機能が組み込まれてい ます。 ただし、この機能は常に正常に機能するわけではありません。 電話番号がoutputTextフィールドに表示されているだけでは、iPhoneがそれを電話番号として認識するとは限りません。 確実に電話番号として認識されるようにするには、電話番号をtr:goLinkコンポーネントに表示して、goLinkの destination属性にtel:を追加する必要があります。 houseDetailsセッション変数とAgentPhoneフィールドに含まれる電話番号をダイヤルするサンプル・コードは、次のとおりです。 <tr:goLink styleClass="messageLink"さらに、iPhoneは、RFC 2086プロトコルに部分対応しています。そのため、たとえば電話番号をダイヤルして、数秒間一時停止し、内線番号をダイヤルすることも可能です。 また、電話番号に文字を含めることもできます。その場合、iPhoneはその文字に対応する番号をダイヤルします。 これについては、見本の電話番号を使用した次のサンプル・コードをご覧ください。 <tr:goLink styleClass="messageLink"これで、iPhoneが1-800-873-5338にダイヤルし、2秒待機(pp)して、8にダイヤルします。 電子メール・クライアントiPhone用Safariブラウザには、iPhoneの電子メール・クライアント用のインタフェースも搭載されています。 電子メールの送信先を入力して電子メール・クライアントを起動するには、tr:goLinkコンポーネントを使用して電子メール・フィールドを表示し、さ らにtr:goLinkコンポーネントのdestination属性にmailto:を追加する必要があります。以下に例を挙げます。 <tr:goLink styleClass="messageLink"ユーザーがこのgoLinkにアクセスすると、iPhoneの電子メール・クライアントが起動し、To:フィールドにAgentEmail変数の内容が移 入されます。 iPhoneは、ほかの電子メール・フィールドの移入にも対応しています。 goLinkコンポーネントに次のdestination属性を追加すれば、これらを実行できます。
たとえば、次のコードを使用すれば、電子メールの件名、Cc受信者、メッセージ・テキストが事前移入されます。 <tr:goLink styleClass="messageLink" iPhone用Google MapsiPhone用Safariブラウザでは、http://maps.google.comの呼出しをインターセプトして、iPhone 上でGoogle Mapsアプリケーションを起動できます。 iPhoneは、Google Mapsアプリケーションに搭載されている、特定の住所にピンをドロップする機能に部分対応しています。 一度ピンをドロップすると、iPhoneユーザーはGPSと"Getting Directions"機能を使用してその住所に移動し、その住所がどう見えるかをストリート・レベルで表示できます。 この機能にアクセスするには、tr:goLinkコンポーネントを使用して、goLinkコンポーネントのdestination属性 にGoogle MapsとそのアドレスへのURLを移入します。 Google MapsのURLは、次の形式にする必要があります。 http://maps.google.com/maps?q=<Address_Field>たとえば、次のコードを記述すれば、houseDetail.Street変数、houseDetail.City変数、および houseDetail.Zip変数で指定した場所にピンをドロップできます。 <tr:goLink styleClass="messageLink"さらに、この機能を使用してドライブ・ルートをプログラミングすることもできます。 この場合、Google MapsのURL形式は、次のようになります。 http://maps.google.com/maps?saddr=<Start_Address>&daddr=<destination_address> </destination_address>これは非常に強力な機能で、Oracle ADFとOracle JDeveloperの開発者は、わずか数行のコードを記述するだけで、ドライブ・ルート機能を起動できます。 ユーザーは、Oracle ADF Mobileビューのリンクをクリックするだけで、Google Maps機能を使用して位置やドライブ・ルートを表示できます。 結論iPhoneは、モバイル・デバイスの"使いやすさ"を再定義しました。つまり、iPhoneは、ほとんどすべての人が、トレーニング なしで簡単に使用できます。 その理由は周知のとおり、 iPhoneのコア・アプリケーションのユーザー・インタフェースが、デバイス・ハードウェアと完全に連動するためです。 iPhone上で稼動するほかのアプリケーションはすべて、このユーザー・インタフェース規格に準拠している必要があります。準拠していない場合、アプリ ケーションの使用時において"使いやすさというメリット"が損なわれます。 このコラムでは、Oracle ADFとOracle JDeveloperを使用して、こうしたユーザー・インタフェースを簡単に開発する方法について説明しました。 今すぐ開始するための追加リソース以下のリソースは、Oracle ADFとOracle JDeveloperを使用したiPhoneのアプリケーション開発を開始する手助けになります。
Joe Huangは、Oracle ADF Mobileの Product Managerです。 |