連載:Flexのクライアントサイドをオープンソースで制覇する(4)
Flexのフレームワーク、Cairngormでサンプルアプリ
SI技術部 技術推進グループ
吉田 靖宏
2006/9/21
Flexクライアントサイドのオープンソース、Cairngormを使って製品コードから検索できるWebアプリを作成していく
■プロジェクトの作成
前回(Flexのフレームワーク、Cairngormのアーキテクチャ)では、Cairngorm (ケアンゴーム)Frameworkに付属しているログインサンプルを構成するクラスを見ながら、フレームワークのアーキテクチャについて解説しました。今回から2回にわたって、実際にCairngorm Frameworkを使って、Webアプリケーションサーバの検索・登録・更新・削除を行う簡単なサンプルアプリを作成していきます。今回は、前編ということで、サーバサイドに連携するまでの部分(View〜Command)を作成していきます。
まず、初めにサンプルアプリケーション用のプロジェクトを作成します。開発環境の構築ができていない方は、第2回(Flexのフレームワーク、Cairngormを使ってみよう)を参照して開発環境を構築してください。以下では、第2回で構築した開発環境をベースにサンプルアプリケーションを作成していきます。
プロジェクトは、ログインサンプルを動かしたときに作ったプロジェクトと同じ手順で作成します。まず、Eclipseを起動させたら、Eclipseのパッケージエクスプローラ上で右クリック → [新規] → [その他]を選択します。すると、以下のようなダイアログが表示されるので、[Web] → [Dynamic Web Project]を選択して次へボタンを押します。
画面 1プロジェクト選択のウィザード |
すると以下のようなダイアログが表示されるので、ここではProject Nameにcairngorm-sampleと入力します。Target runtimeに開発環境構築時に設定したTomcatが選択されていることを確認したら、終了ボタンを押します。
画面 2 Dynamic Web Projectの作成 |
続いて、Flexアプリケーションに必要なライブラリとCairngorm Frameworkのライブラリをプロジェクトにコピーします。ここも、ログインサンプルを動かしたときの手順と同じですが、4. の作業が新しく加わっているので忘れずに行ってください。
- Flexをインストールしたディレクトリ(Windows環境の場合、C:\Program Files\Macromedia\Flexなど)にあるflex.warを解凍し、WEB-INF以下すべてをcairngorm-sample/WebContent/WEB-INFに上書きコピーする
- Cairngorm Frameworkのzipファイル(cairngorm-0.99.zip)を解凍してできたディレクトリのbinディレクトリにあるcairngorm.swcをcairngorm-sample/WebContent/WEB-INF/flex/user_classesに置く
- 同じく、binディレクトリにあるcairngorm-manifest.xmlをcairngorm-sample/WebContent/WEB-INF/flexに置く
- cairngorm-sample/WebContent/WEB-INF/flexディレクトリにあるflex-config.xmlに、Cairngorm Frameworkを使うための名前空間を下のリストのとおり、追加する(97行目付近)
リスト 1 flex-config.xml(抜粋)
<namespaces> |
XML名前空間 XML名前空間は、1つのXML文書の中で複数のスキーマを使用できるようにするための仕組みです。例えば、AスキーマとBスキーマの両方にhogeという同じ名前のタグが存在する場合、<hoge>と記述してもそれがどちらのスキーマに属するタグなのか識別することができません。 名前空間を使用すると、<A:hoge>、<B:hoge>などのように、それぞれのスキーマを区別して記述することができ、同じ名前のタグがあっても一意に識別できます。このタグを識別するための情報が、URIです。Flexでは、flex-config.xmlのnamespacesタグ内でURIをさらにマニフェストファイル(XMLファイル)に結び付けています。 XMLのスキーマを記述する方式としては、従来DTD(Document Type Definition)が使われてきましたが、DTDは名前空間をサポートしていないため、最近では名前空間をサポートしたXML Schemaという記述方式が多く使われるようになってきています。XML Schemaは、W3Cで策定されており、名前空間については、Namespaces in XMLという仕様があります。 |
最後に、これから作っていくMXMLやAction Scriptのファイルを格納するためのディレクトリを作成します。まず、cairngorm-sample/WebContent直下にsampleというディレクトリを作成してください。次に、そのsampleディレクトリの中に、business、commands、control、model、view、voの6つのディレクトリを作成してください。このディレクトリ構成は、ログインサンプルのものと同じです。
これでサンプルアプリケーション用プロジェクトの作成は完了です。この時点で、プロジェクトの構成が以下のようになっていることを確認してください。
画面 3プロジェクトの構成 |
■サンプルアプリケーションの仕様
プロジェクトの作成ができたところで、ここからいよいよサンプルアプリケーションの作成に入っていきます。今回作成するサンプルアプリケーションは、アプリケーションサーバの検索・追加・更新・削除を行う簡単なものです。画面の完成イメージは、以下のようになります。
画面 4画面の完成イメージ |
具体的には、製品コードでアプリケーションサーバを検索し、該当のアプリケーションサーバをデータグリッドに表示します。データグリッドの表示項目は、製品コード、製品名、ベンダー、価格、備考の5つです。データグリッドの下には、これら5つの項目のテキストインプットがあり、データグリッドの行を選択すると、テキストインプットに選択されたアプリケーションサーバの情報を表示します。
このテキストインプットの情報を修正し、更新ボタンを押すとアプリケーションサーバの情報を更新します。また、データグリッドの行が選択された状態で削除ボタンを押すと、該当のアプリケーションサーバを削除します。新しいアプリケーションサーバを追加したいときは、テキストインプットにアプリケーションサーバの情報を入力して追加ボタンを押します。
実際の検索・追加・更新・削除の各処理は、サーバサイドのサービス(Remote Object)として実装します。
■View(MXML)の作成
それでは、まず画面であるView(MXML)から作成します。下のリストは、サンプルアプリケーションのViewであるAPServerList.mxmlです。これをcairngorm-sample/WebContent/sample/viewに作成してください。
リスト 2 APServerList.mxml
<?xml version="1.0" encoding="utf-8"?> |
このMXMLは、完成イメージで見てもらった画面に対応するものです。ラベル、テキストインプット、ボタン、データグリッドなど、画面を構成するコンポーネントを配置しています。
そして、Cairngorm Frameworkを使うためにViewHelper、ServiceLocator、Controllerを<mx:Application>タグの下でインスタンス化しています。<mx:Application>タグの中では、view、business、controlの各パッケージに対して名前空間を設定しています。名前空間を設定するには、xmlns:プリフィックス=”URI”という記述をします。こうすることで、そのURIに属するタグをプリフィックス:タグ名という形式で表記することができます。MXMLタグの方は、URIを指定して名前空間の設定をしていますが、view、business、controlについては、URIではなくパッケージを指定しています。URIの部分にパッケージを指定することで、該当のパッケージに属するクラスをview:APServerListViewHelperのように指定することができます。
<mx:Script>タグの中では、ログインサンプルと同じようにModelLocatorをインポートしています。ModelLocatorのapServerListModelプロパティは、検索結果のアプリケーションサーバの情報を保持しているプロパティであり、データグリッドにデータバインディングしています。
検索、追加、更新、削除の各ボタンに対しては、ボタンがクリックされたときにそれぞれViewHelperのメソッドを呼び出すようにして、クリックされたときの具体的な処理は、ViewではなくViewHelperの方で実装するようにしています。
MXMLコンポーネントのインスタンス化 MXMLコンポーネントは、<mx:XXX>というタグを書くことによってインスタンス化が行われます。Flexで用意されているMXMLタグは、すべてAction Scriptのクラスに対応しているため、内部的にはAction Scriptのクラスの生成が行われています。ViewHelperやControllerなどもこのようにタグで記述することによって、インスタンス化が行われます。 |
1/2 |
INDEX |
||
連載:Flexのクライアントサイドをオープンソースで制覇する(4) Flexのフレームワーク、Cairngormでサンプルアプリ |
||
Page1 プロジェクトの作成 サンプルアプリケーションの仕様/View(MXML)の作成 (MXMLコンポーネントのインスタンス化・XML名前空間) |
||
Page2 ViewHelperの作成
ValueObjectの作成/Controllerの作成/Commandの作成/ModelLocatorの作成 |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|