詳細表示
このアプリケーションでは、単純なJavaクラスを使用してデータを保存し、あるページ上で従業員のリストを表示し、別のページ上で給与グラフを表示します。また、パート2では特定のデバイス機能をアプリケーションに統合し、パート3では天気情報を返すWebサービスのコールを追加します。
| 前提条件: |
|---|
このチュートリアルを実行するには、Oracle Enterprise Pack for Eclipse12.1.3.1をインストールしておく必要があります。また、Android SDKバージョン -19.x(最小) - .21.x(推奨)、APIレベル15(最小)、19以上をインストールしておく必要もあります。お好みで、アプリケーションを接続中のAndroidデバイスにデプロイできますが、このチュートリアルでは、Androidエミュレータへのアプリケーションのデプロイ方法を説明します。エミュレータの起動には、Android Virtual Device(AVD)Managerを使用します。AVD ManagerはAndroid SDK Toolsに付属しています。 iOS環境を使用する場合は、次のチュートリアルを使用して開発環境を設定できます。iOS環境の設定と構成 Android環境を使用する場合は、次のチュートリアルを使用できます。Android環境の設定と構成 |
| 目的 | 所要時間 | アプリケーション |
|---|---|---|
| このチュートリアルでは、OEPEとMobile Application Frameworkでアプリケーションを開発する方法について説明します。これから作成するアプリケーションの完成版を確認するには、「Download」ボタンをクリックして最終的なアプリケーションのzipファイルをダウンロードし、作業領域にインポートしてください。 | 2.5時間 | ![]() |
OEPEで作業する場合はプロジェクト単位で作業を整理し、いくつかのプロジェクトを1まとめにしてアプリケーションを作成します。
最初に、MAFアプリケーション・ウィザードを使用して新しいMAFアプリケーションを作成します。次に、構築中のアプリケーションを保持するモバイル機能を作成します。
-
OEPEを開きます。ヒント:OEPEをインストールした場所にナビゲートして「eclipse.exe」をダブルクリックします。
-
Project Explorerの内を右クリックし、「New」→「MAF Application」の順に選択します。
-
Application display nameとしてEmployeeを入力し、「Next」をクリックします。
-
Application project nameとView project nameはデフォルト値にしたまま「Next」をクリックします。
-
次のペインにMAFランタイムのバージョンが表示されます。複数のバージョンがある場合は、このプロジェクトに使用するバージョンを選択できます。デフォルト値のまま「Finish」をクリックしてプロジェクトを作成します。
-
プロジェクトが作成されたら、このプロジェクトをOracle MAFパースペクティブで開くかどうかを確認するプロンプトが表示されます。「Yes」をクリックして同意し、プロジェクトを開きます。
-
これらのアーチファクトを内容表示するために、Project ExplorerでEmployeeを開きます。
-
Project Explorerのツールバーの下矢印をクリックし、「Customize View」を選択します。
-
Customize Viewダイアログで「.* resources」を選択解除し、「OK」をクリックします。
-
Project Explorerに.main.androidがフォルダとして表示されます。.main.androidを開いてパッケージ・アーチファクトとデプロイ・アーチファクトを表示します。
-
もう一度Customizationsダイアログを開き、「.* resources」を選択して「OK」をクリックします。これで、.* resourcesはProject Explorerビューでフィルタされるようになります。
-
「EmployeeApplication」→「MAF」の順に展開し、「Data Control Manager」をダブルクリックします。
-
Data Control Managerで、「DeviceFeatures」と「ApplicationFeatures」を両方とも展開します。自動的にアプリケーションで機能が使用できるようになることを確認します。
Project Explorerは次のように表示されます。
以降の手順では、MAFアプリケーション・プロジェクトの一部として作成されたいくつかのアーチファクトを確認します。
表示からわかるとおり、それぞれのMAFアプリケーションは1つのトップレベル(アセンブリ・プロジェクト)、1つのアプリケーション・プロジェクトおよび1つ以上のビュー・プロジェクトで構成されます。アプリケーションのパッケージ化とデプロイメントに必要なアーチファクトはすべてトップレベル(アセンブリ・プロジェクト)で保持されます。
EmployeeApplicationプロジェクトには、デバイス機能とアプリケーション機能を抽象化するData Control Managerが含まれています。
このチュートリアルでは、大半の作業を EmployeeViewプロジェクト内で行います。これから作成するアーチファクトは、おもにソース・フォルダ(src)またはView Contentフォルダで保持されます。下のイメージは、これら2つのフォルダを展開したところを表しています。
これで、MAFアプリケーションの作成といくつかのアーチファクトの確認が終了したので、MAFアプリケーションの構築に進みます。
Oracle MAFアプリケーションをデプロイすると、そのアプリケーションはモバイル機器上の単一アプリケーションとなります。このアプリケーションは通常、複数の部分で構成されます。たとえば、検索コンポーネント、ドキュメント(ヘルプ・ページなど)、データ入力フォーム、リストがあります。これらの部品はそれぞれ、アプリケーション内の一機能として定義されます。この項では、アプリケーションの一部分としてデプロイされる機能を作成します。
Oracle MAFアプリケーションの機能はmaf-feature.xmlファイル内に定義します。OEPEでは、このファイルに含まれるアーチファクトをMAF Feature Editorで管理します。
-
開いているエディタのタブがあれば、タブの右上隅にある「X」をクリックしてすべて閉じます。
-
Project Explorerで、「EmployeeView」→「MAF」の順に展開し、「MAF Feature Editor」をダブルクリックしてエディタを開きます。
-
エディタで、Addボタン(緑色のプラス記号「
」)をクリックして機能を追加します。
-
新しい機能のIdをEmployeesに設定し、「OK」をクリックします。
-
Outlineのトップレベルの「Features」をクリックして2つ目の機能を追加し、そのIdをHelpに設定します。「OK」をクリックして機能を作成します。
-
作業内容を保存します。作業時は頻繁に作業内容を保存することが重要です。作業内容の保存方法はいくつかあります。
1)ツールバーの「Save」アイコンまたは「Save All」アイコンをクリックする。
2)メニューを使用して、「File」→「Save」または「File」→「Save All」を選択する。
1)ショートカット・キー[CTRL + S](Save)または[CTRL + Shift + S](Save All)を使用する。
選択する方法がどれであっても、頻繁に保存するようにしてください。
-
「Help」機能を右クリックして「New」を選択します。
-
New Objectダイアログで「Content」→「Local HTML」の順に選択し、「OK」をクリックします。
-
Outlineで「Help.1」を選択し、Fileフィールドの横にある作成アイコンをクリックします。
-
New Mobile HTMLダイアログで、View Contentフォルダが選択されていることを確認し、File nameをhelp.htmlに設定します。
-
<body>開始タグと</body>終了タグの間にテキスト"This is going to be the Help System"を追加します。
-
作業内容を保存します。
Mobile Featuresは次のように表示されます。
各機能はなんらかのタイプのコンテンツによって支えられます。次の手順では、先ほど作成した機能のコンテンツを定義します。
help.htmlファイルが開いてエディタに表示されます。
この項では、Employees機能によって使用されるMAFタスク・フローを作成します。MAFタスク・フローには、相互作用する複数のページが含まれます。タスク・フローは、この相互作用の構造を定義するものです。
-
「maf-feature.xml」タブをクリックしてMAF Feature Editorに戻ります。
-
「Employees」機能を右クリックして「New」を選択します。
-
この機能のコンテンツがタスク・フローになるため、New Objectダイアログで「Content」→「Task Flow」の順に選択し、「OK」をクリックします。
-
機能エディタでEmployees.1を選択した状態のまま、Task Flowのファイル名フィールドの横にある作成ボタンをクリックします。
-
Create Task Flowダイアログで、ViewContentフォルダが選択されていることを確認し、タスク・フローのFile nameをemp-task-flow-definitionに設定します。File nameを設定するとTask Flow IDも変わります。「Finish」をクリックしてタスク・フローを作成します。
-
作業内容を保存します。
-
パレットのActivitiesパネルはOEPEの左下隅にあります。このパネルからタスク・フローにビュー・アクティビティをドラッグします。
-
このビュー・アクティビティの名前をemployeeListに変更します。
-
次に、2つ目のビュー・アクティビティをタスク・フローにドラッグして、graphという名前にします。
-
パレットの「Control Flow」パネルをクリックし、「Control Flow Case」をクリックします。次に、「employeeList」アクティビティをクリックして制御フローの開始点としてマークし、「graph」をクリックして制御フローの目的地としてマークします。この制御フロー・ケースの名前をshowGraphに設定します。
作成したビュー・アクティビティは、ページへのポインタに過ぎません。以降の手順では、これらのビュー・アクティビティをサポートするページを作成します。
-
タスク・フロー・エディタで「employeeList」ビュー・アクティビティをダブルクリックしてNew MAF Pageダイアログを開きます。デフォルト名のまま「Finish」をクリックしてページを作成します。
作業内容を保存します。
-
タスク・フロー・エディタに戻り、「graph」アクティビティをダブルクリックしてページを作成します。先ほどと同様、デフォルト名のまま「Finish」をクリックしてページを作成します。
-
作業内容を保存します。
タスク・フローは次のように表示されます。
次に、この機能のタスク・フローを作成します。
これでタスク・フローの作成が終了し、空のタスク・フローがエディタに表示されます。
これで、タスク・フローにコンテンツを追加できるようになりました。このコンテンツは、ビュー・アクティビティ(ページへのポインタ)と制御フロー・ケース(ナビゲーション・コントロール)で構成されます。以降の手順では、タスク・フロー内に2つのアクティビティを作成します。
これで、タスク・フローに2つのビュー・アクティビティが作成されました。次の手順では、これらのビュー・アクティビティ間にナビゲーション・ルール(制御フロー・ケース)を作成します。
これで、2つのビュー・アクティビティを含むタスク・フローの作成が完了しました。これらのビュー・アクティビティをサポートするページも作成しましたが、現時点でこのページは空のシェルにすぎません。次の項では、これらのページにデータを供給するJavaクラスを作成します。
Oracle MAFにはデータを管理するアプリケーション・レイヤーがあるため、データの保管先や保管方法を気にすることなくUIでデータを使用できます。このレイヤーのことをデータ・コントロール・レイヤーと言います。
このチュートリアルでは、アプリケーションのデータソースとしてPOJO(Plain Old Java Object)を使用します。この項では、Javaクラスを作成し、それらのクラスを基とするデータ・コントロールを生成する方法について説明します。アプリケーションのユーザー・インタフェース部分では、このデータ・コントロールを使用して、ユーザーにデータを表示します。
この項では、2つのJavaクラスを作成します。1つは従業員データを含むemployeeクラスで、もう1つは従業員のコレクションを供給するemployeeServiceクラスです。
最初にemployeeクラスを作成します。
-
「EmployeeView」プロジェクトを右クリックして、「New」→「Class」の順に選択します。
-
New Java Classダイアログで、パッケージをmodelに設定してクラス名をEmployeeに設定し、「Finish」をクリックしてクラスを作成します。
-
コード・エディタで、次のプライベート変数を追加します。ヒント:public class Employee {のあとに新しい行を挿入します。
private String name;
private String email;
private int salary;
private Date hireDate; -
Date変数にカーソルを移動すると、警告に対する修正候補が表示されます。エラーの修正候補のリストが表示されます。ポップアップで「import 'Date' (java.util)」をクリックします。
-
作業内容を保存します。
-
次に、2つのコンストラクタを生成します。1つ目のコンストラクタを生成するために、最後のプライベート変数宣言のあとのブランク行を右クリックし、「Source」→「Generate Constructors from Superclass」の順に選択します。デフォルトのまま「OK」をクリックしてコンストラクタを作成します。
-
2つ目のコンストラクタを生成するために、1つ目のコンストラクタの閉じ括弧の直後で右クリックし、「Source」→「Generate Constructors using Fields」の順に選択します。デフォルトのまま「OK」をクリックしてコンストラクタを作成します。コードは次のように表示されます。
-
次は、フィールド・アクセッサを生成します。最後のコンストラクタの閉じ括弧の直後で右クリックし、「Source」→「Generate Getters and Setters for MAF」の順に選択します。「Select All」をクリックしてすべての変数を選択し、「OK」をクリックしてアクセッサを作成します。コードは次のように表示されます。
-
作業内容を保存します。
-
先ほどの手順と同様にしてJavaクラスを作成します。パッケージをserviceに設定し、クラス名前をEmployeeServiceにします(ヒント:「EmployeeView」を右クリックし、「New」→「Class」の順に選択します)。作成されたクラスは次のようになります。
-
次のコードでは、日付を取得するメソッドとともに従業員のリストを定義しています。このコード全体をEmployeeServiceクラスにコピーします。ヒント:開き括弧と閉じ括弧の間にコピーします。
private List employeeList = null;
public EmployeeService() {
super();
}
public Employee[] getEmployees() {
//This Method gets a list of the employees and their emails
Employee[] employees = null;
employeeList = new ArrayList();
employeeList.add(new Employee("Bill", "bill@oracle.com",4000, getADate(2011,3,24,9,0) )) ;
employeeList.add(new Employee("Gary", "gary@oracle.com", 5000, getADate(2007,2,24,9,0) )) ;
employeeList.add(new Employee("Jeff", "jeff@oracle.com", 5500, getADate(2003,2,19,9,0) )) ;
employeeList.add(new Employee("Joe", "joe@oracle.com", 4000, getADate(2012,2,13,9,0) )) ;
employeeList.add(new Employee("Shay", "shay@oracle.com",6000, getADate(2002,2,21,9,0) )) ;
employees = (Employee[]) employeeList.toArray(new Employee[employeeList.size()]);
return employees;
}
private Date getADate(int y,int m, int d,int h, int mi) {
Calendar c1 = Calendar.getInstance();
c1.set(y, m, d, h, mi);
Date retDate = c1.getTime();
return retDate;
}コードは次のようになります。
コードをコピーしただけで、インポートすべきクラスをエディタに認識させていないため、コードにmissing class errorのフラグが付けられるだけです。クラスのimportはこのあと追加します。
作業内容を保存します。
importを追加するには、エディタの左側に表示されている警告アイコンを右クリックするか、エラーの原因となったコードの上にカーソルを移動します。
-
まず、カーソルを(private List employeeList行の)Listの上に移動して、「import 'List' (java.util)」をクリックします。
-
Employee(Import 'Employee' (model))、ArrayList(Import 'ArrayList' (java.util))、Date(Import 'Date' (java.util))、Calendar(Import 'Calendar' (java.util))に対してこの処理を繰り返します。
コードは次のようになります。
-
作業内容を保存します。
-
Project Explorerで「EmployeeService.java」を右クリックし、「Model Components」→「Create Data Control」の順に選択します。
-
デフォルト値のまま「Finish」をクリックしてデータ・コントロールを作成します。
-
確認ダイアログで「OK」をクリックし、作業内容を保存します。
-
作業内容を保存します。
コードは次のようになります。
コードは次のようになります。
これでEmployeeクラスは完成です。次の手順では、従業員データを格納するEmployeeServiceクラスを作成します。
これで、アプリケーションに必要なデータを含む2つのJavaクラスを用意できました。以降の手順では、これらのクラスのデータ・コントロールを作成します。
今度はData Control Managerが表示されます。EmployeeApplicationビューのデータ・コントロールとともに、先ほど作成したデータ・コントロールが表示されていることを確認します。
これでデータ・コントロールを定義できたので、アプリケーションのUI部分の作成を開始できます。
この項では、タスク・フローに作成したビュー・アクティビティに関連付けられているページに、作成したばかりのデータ・コントロールを追加します。
-
開いているエディタのタブをすべて閉じます。必ず必要というわけではありませんが、こうしたほうが、作業しているUIページ間のナビゲートがしやすくなります。
-
エディタで「EmployeeList.amx」を開きます(ヒント:Project ExplorerでEmployeeList.amxをダブルクリックします)。
-
パレットのDataタブで「EmployeeService」を展開します。
-
最後の</amx:facet>タグの直後にemployeesアクセッサをドラッグし、List Viewコンポーネントとしてドロップします。
-
Bind List Viewダイアログで、Formatには「Simple」を、Variationには2つ目のものを選択し、「Next」をクリックします。
-
List Item Contentsセクションで、Divider Attributeをnameに、Divider ModeをFirst Letterに設定し、「Finish」をクリックします。
-
作業内容を保存します。
-
コード・エディタで、ヘッダーの「value」プロパティを選択し、値をEmployeesに変更します。これは、実行時機能のタイトルになる部分です。
作業内容を保存します。
-
コード・エディタで、primaryファセットの「amx:commandButton」をクリックします。
-
Propertiesタブで、TextプロパティをGraphに設定します。ヒント:Propertiesタブが開いていない場合は、commandButtonのコードを右クリックして「Properties」を選択します。TextはCommonタブにあります。
-
「Button Action」タブをクリックし、ActionをshowGraphに設定します。ヒント:値の選択アイコンを使用してActionの有効な値を表示し、その中から選択します。
-
作業内容を保存します。
次は、従業員の給与を表示する棒グラフをGraphページに追加します。
-
Project Explorerで「graph.amx」をダブルクリックしてエディタで開きます。
-
ページの実行時タイトルを設定するために、「header」ファセットを選択してValueプロパティをGraphに設定します。
-
パレットのDataタブで「EmployeeService」を展開します。
-
</amx:facet>タグの直後にemployeesアクセッサをドラッグし、「Chart」→「Bar」コンポーネントとしてドロップします。
-
レイアウトとスタイルをデフォルトのまま、Bind Bar Chartウィザードの「Next」をクリックします。
-
Add Attributesボタンを使用して、Barsプロパティに「salary」を、X Axisプロパティに「name」を選択します。「Finish」をクリックしてコンポーネントを作成します。
-
EmployeeListページに戻るボタンも設定する必要があります。コード・エディタで、primaryファセットの「CommandButton」をクリックします。PropertiesパネルでActionを__backに設定します。
-
作業内容を保存します。
-
開いているタブをすべて閉じます。
-
「EmployeeView」→「MAF」の順にクリックして「MAF Feature Editor」をダブルクリックします。
-
「Employees」機能を選択し、register applicationチェック・ボックスが選択されていることを確認します。
-
「Help」機能を選択し、register applicationチェック・ボックスが選択されていることを確認します。
-
エディタのタブをすべて閉じ、作業内容を保存します。
これで、2つのページ(EmployeeListとGraph)は完成です。
作成した機能がアプリケーションに登録されていることをMAF Featureエディタから確認します。
OEPEでMAFアプリケーションを構築する手順は、これですべて完了しました。次の項では、アプリケーションをデプロイしてテストします。
以降の手順では、デプロイメントの構成を作成し、Androidエミュレータにアプリケーションをデプロイします。
-
MAFアプリケーションを開発するためのAndroid環境のセットアップと構成が完了していることを確認してください。完了していない場合は、セットアップのチュートリアルを実行してください。
Androidエミュレータが稼働していない場合は、次の手順に従って起動します。すでに稼働している場合は、手順9に進んでください。
-
Windowsエクスプローラを開き、SDKインストール・フォルダ内のSDKフォルダにナビゲートします。AVD Manager.exeをダブルクリックして開きます。
-
「New」をクリックして新規のAndroid Virtual Deviceを作成し、プロパティに次の値を指定します。
AVD Name = MAF
Device = Nexus 4 (4.7", 768 x 1280; xhdpi)
Target = Android 4.4.2 - API Level 19
CPU/ABI = Intel Atom (x86)
Skin = No skin
Front Camera = Emulated
Back Camera = Emulated
Memory Options Ram = 512
MiB Internal Storage = 1024 MiB
SD Card = 1024 MiB
Use Host GPU(チェックする)
-
残りはデフォルトのままにして「OK」ボタンをクリックします。
別のデバイス・タイプも選択できますが、新しいデバイスほどリソース要件が高くなるため、マシンでRAMの問題が発生する可能性があることに注意してください。

-
新しいAVDに関する通知が表示されます。「OK」をクリックして通知を閉じます。

-
新しいAVDを選択して「Start」ボタンをクリックします。

-
Launch Optionsペインの値はデフォルトのままにして「Launch」をクリックします。
-
エミュレータが起動し、稼働し始めるまで、時間がかかる場合があります。CPUの速度によっては、2分程度かかる場合があります。
-
Android Debug Bridge(adb)には、OEPEとエミュレータの間の通信チャネルがあります。コマンド・ウィンドウを開いてエミュレータを起動します(「スタート」→「ファイル名を指定して実行」→「cmd」)。
-
コマンド・ウィンドウで<YourAndroidSDK>\sdk\platform-toolsにナビゲートします。
-
adb start-serverと入力して[Enter]を押します。
*daemon started successfully *と表示される場合は、プロセスが起動していてデプロイできる状態になっています。
-
OEPEで「debug」ボタンをクリックし、「Debug Configurations」を選択します。
-
「MAFApplication」を右クリックし、「New」を選択します。
-
Set the properties of the new configuration to the following:
Name = MAF
Assembly Project = Employee
Target = Android 4.2.2 - API Level 19
Device Emulator: (pick from the list) If an emulator is not available, click Refresh. If it is still not available, make sure it is running.
-
「Debug」をクリックしてアプリケーションをエミュレータにデプロイします。使用しているシステムやアプリケーションの規模によって異なりますが、デプロイには数分かかります。デプロイが完了すると、BUILD SUCCESSFULというメッセージがLogウィンドウに表示されます。
-
Navigate to the emulator and follow any instructions there to get to the Home screen. Click the Application button in the middle bottom of the Home screen to open the list of available applications.
-
Appsページで「Employee」アプリケーションをクリックし、先ほど構築してデプロイしたアプリケーションを開きます。
-
アプリケーションが起動してemployeeListページが開き、データソースから取得された従業員のリストが表示されます。注:エミュレータの処理は実際のデバイスよりも遅く、アプリケーションのロードに時間がかかる場合があります。「Graph」をクリックしてGraphページを表示します。
-
Graphページが開き、全従業員の給与のグラフが表示されます。
これで、チュートリアルの最初のパートは完了しました。次の項では、デバイス機能と直接統合する機能をアプリケーションに追加します。
すべて表示 | すべて非表示

パート2:
