アットマーク・アイティ @IT@IT自分戦略研究所QA@ITイベントカレンダー+ログ
 @IT > プロダクトレビュー ColdFusion MX
 
@IT[FYI] 企画:アットマーク・アイティ 営業企画局
制作:アットマーク・アイティ 編集局
掲載内容有効期限2003月8月18日

 


リッチインターネットアプリケーション時代の到来 【第2回】

[プロダクトレビュー]
リッチインターネットアプリケーションを実現する
標準プラットフォーム 「ColdFusion MX」

 Macromedia ColdFusion MX Server(以下ColdFusion MX)は、全世界で開発人口30万人を誇るColdFusionの最新バージョンである。

 この製品は3つの大きなトピックをもっている。1つはJ2EEをプラットフォームとするアプリケーション・サーバに刷新されたことだ。これによってColdFusionはオープンな製品に生まれ変わると同時に、J2EEの信頼性や生産性の高さというメリットを享受できることになった。2つ目は、リッチインターネットアプリケーションのプラットフォームを実現しているということだ。HTMLのさまざまな問題を克服するFlashを用いることにより、ユーザーにリッチなインターフェイスを提供することに成功している。3つ目はWebサービスへの対応だ。Webサービスの対応機能を強化するアプリケーション・サーバ製品が増えてきている中、ColdFusion MXはそれらの製品と比較し、非常に優れた特長をもっている。

 ここでは、この3つのポイントにターゲットを絞り、ColdFusion MXの機能と可能性について紹介していくことにしよう。

J2EEサーバに刷新された「ColdFusion MX」

 今年のJavaOneで、米国マクロメディアは1つの大きな発表を行った。ColdFusion MX for J2EE(後述)がJava検証プログラムに合格し、Java Verifiedのロゴを取得したというのだ。これは、ColdFusionが従来のC++で書かれたアプリケーション・サーバからJ2EEに完全対応したアプリケーション・サーバとして客観的に認められたことを意味する。

 それでは、ColdFusion MXは、J2EEに完全対応することによってどのようなメリットがもたらされたのだろうか。その解説に入る前に、ColdFusion MXには大きく以下の2種類の製品が用意されていることを説明しなければならない。

  • Macromedia ColdFusion MX Server
  • Macromedia ColdFusion MX for J2EE Appliaction Server

 「Macromedia ColdFusion MX Server」は単独でJ2EEのエンジンをもつ。同製品はJ2EEコンテナに定評あるJavaアプリケーション・サーバ「Macromedia JRun」を採用し、高い信頼性とパフォーマンスを確保している。Javaアプリケーション・サーバをもたないユーザーがColdFusion MXを利用するための製品だ。

 もう一方の製品は、J2EEのエンジンをもたない「Macromedia ColdFusion MX for J2EE Application Server」だ。すでにIBM WebSphere Application ServerやBEA WebLogic ServerなどのJavaアプリケーション・サーバを利用してJ2EEの環境を構築しているユーザーが、その環境上にColdFusion MXの機能を付加することができるというものだ。既存のJ2EEプラットフォームにColdFusion MXのメリットをもたらすことができる。

 これらの2種類の製品の使い分けは上述の通りだが、ここでわかることは、ColdFusion MXのコアとなる部分は、J2EEコンテナの上で動作する純然たるJavaアプリケーションであるということだ。

図1 ColdFusion MXのアーキテクチャ

J2EE開発に新たな可能性をもたらす

 ColdFusion MXでは開発言語にCFML(ColdFusion Markup Language)と呼ばれるHTMLに似たタグ言語を用いる。CFMLは習得に時間がかからず、しかも容易にWebアプリケーションを記述できるという特長をもつ。ColdFusionがこれまで支持されてきた大きな理由の1つだ。

 ColdFusion MXは、J2EEという業界標準のプラットフォーム上に、CFMLによる高い生産性をもたらすことができる点がメリットといえる。リスト1リスト2を比較してほしい。これらのコードはデータベースからSQL文を使い“氏名”を抽出して表示するプログラムだ。JSPで実装する場合に比べて非常にシンプルなコードで同じ機能を実装できるのがおわかりいただけるだろう。

リスト1 CFMLで実装した場合
<CFQUERY datasource="TBTest" name="QTest">
    SELECT * FROM test
</CFQUERY>
<CFOUTPUT query="QTest">
    #FirstName# #LastName#<br>
</CFOUTPUT>

リスト2 JSPで実装した場合
<%InitialContext context = getInitialContext();
   ConnectionSource ds = context.lookup("java:comp/env/jdbc/TBTest");
   Connection conn = ds.getConnection();
   RowSet QTest;
   try { Statement stmt = conn.prepareStatement("SELECT * FROM test");
      QTest = stmt.execute(); } 
finally { conn.close(); } %>
<% while (QTest.next()) { %>
      <%= QTest.getString("FirstName") %>
      <%= QTest.getString("LastName") %>
<% } %>

 また、これまで蓄積してきたJavaの資産を利用することもできる。具体的には以下の事項が可能になる。

  • ColdFusionページからサーブレット/JSPをインクルード
  • ColdFusionページをサーブレット/JSPへ転送
  • サーブレット/JSPのページにColdFusionページをインクルード
  • ColdFusionページからJSPカスタムタグを利用

 サーブレット/JSPのページとセッションを共有できるほか、CFMLで直接JSPカスタムタグを利用することができる。例えば、Jakarta Projectに蓄積されている抱負なオープンソースの資産を活用できるわけだ。

 従来のJ2EE環境にCFMLによる高い生産性を提供すると同時に、従来のJavaの資産を活用し、さらに生産性を高めることができる。補足だが、ColdFusion MXにはCFMLをライブラリ化して利用できるColdFusionコンポーネント(以下CFC)が採用されている。CFMLとJavaの資産を両方活用することで、J2EE開発の生産性を大きく向上させることが可能になるだろう。

Flashによる高度なユーザビリティを実現

 Webアプリケーションは、インターネットを介したBtoB、BtoCビジネスに大きな変革をもたらした。さらに企業内を見ると、Webブラウザをクライアントとするモデルが、クライアント側の管理コストを劇的に削減することに成功した。しかし、もたらしたものはメリットばかりではない。その一方で、HTMLによるユーザーインターフェイスは、クライアント/サーバ時代に比べて著しくユーザビリティを低下させる結果をもたらしてしまった。例えば以下のようなデメリットが挙げられるだろう。

  • クイックレスポンスが得られない
  • 画面遷移が多くなり作業効率が落ちる
  • 直感的なUIを実現できない
  • キーボードを活用できない
  • ユーザーが戻るボタンを押してしまう

 さらに、HTMLとJavaScriptを組み合わせたり、DHTMLを活用してインタラクティブなユーザーインターフェイスを構築する試みも行われてきたが、これらの技術や手法はブラウザに依存する部分が多く、クロスブラウザやクロスプラットフォームの点で問題を抱えていた。

 これらの問題を解決するために、いまリッチクライアントへの回帰の必要性が語られるようになってきている。クライアント/サーバに完全に回帰することはできない状況の中で、Webブラウザをクライアントに用いながらもリッチクライアントを実現できる技術としてFlashが注目されている。Flashムービーであれば、いったんクライアント側にロードされた後は、クライアント側のアプリケーションとして稼働する。クライアント/サーバ時代と同様の高いユーザビリティを実現するのは容易だ。しかも、FlashはあらゆるPC環境(最近ではPocket PCやiモードにも採用されている)でクロスプラットフォームを実現している。

Flash Remoting機能を内蔵

 ColdFusion MXは、Flashをクライアントとして用いるWebアプリケーションを容易に実現するためのFlash Remoting機能を内蔵している。Flash Remotingは、クライアント側にロードされたFlashムービーとサーバサイドのビジネスロジックの間の通信を実現すると同時に、Flashムービーとサーバサイドのビジネスロジックの両方にActionScriptによる処理を記述することを可能にしている。すなわち、ActionScriptを用いることで、Flashのユーザーインターフェイスをコントロールするだけでなく、サーバサイドのビジネスロジックを呼び出して実行することが可能になる。

図2 Flash Remotingのアーキテクチャ

 ところで、FlashムービーとFlash Remotingゲートウェイ間はAMF(Action Messaging Format)というプロトコルで通信を行う。これはMacromediaが独自に開発したプロトコルだ。HTTPやHTTPSのプロトコルを利用し通信することができるため、従来のWeb環境をそのまま利用できる。さらには、バイナリ通信のため、非常に狭い帯域で通信を実現し、非常にスピーディーなレスポンスを期待できる点もメリットとして大きい。

非常に高い開発生産性

 Macromedia Flash MXと連携すると、Flashの開発を非常に効率よく行うことができる。Flash MXではユーザインターフェースのコンポーネント化をサポートした。さらに、アプリケーション画面を構成するスクロールバー、テキスト入力フィールド、入力ボタン、ラジオボタン、チェックボックス、リストボックス、コンボボックスなどの最も頻繁に使用されるアプリケーションインターフェイスがあらかじめ用意されており、開発効率を向上させると同時に、アプリケーションの操作感に統一性を持たせることができる。

 また、Flash MXにはFlashアプリケーションの記述言語であるActionScriptを編集するためのActionScriptエディタが提供されており、開発効率を高めている。コードの一部を入力するだけでパラメータやプロパティ、イベントの候補を表示してくれるコードヒント。ブレイクポイント、コードステップ、関数スタックなどを含む、ソースレベルのスクリプトデバッガの提供で、デバッグ作業を効率よく行うことができる。

Webサービスの容易な利用とパブリッシュを実現

 ColdFusion MXは、Apache AxisをベースとしたWebサービスのための環境を備えている。Webサービスの利用やWebサービスのパブリッシュのどちらもが容易に実現できるのが大きな特長だ。その容易さは客観的にも評価されている。今年のSeybold GroupのWebサービスに関するリサーチ結果のなかで最も高い得点を獲得し、「Bull's-Eye」とランキングされた。

 ColdFusion MXによるWebサービスの利用には2つの方法が用意されている。1つはCFMLのタグを記述して利用する方法、もう1つはCFScriptと呼ばれる、タグを使用しないスクリプトシンタックスから利用する方法だ。

 タグとスクリプトシンタックスのそれぞれの方法で、Googleの検索WebサービスAPIを利用して、「Macromedia」というキーワードで日本語のサイトを探すコード(表示部分を除く)を実際に見てみよう。これらのコードを見るだけで、Webサービスの呼び出しがいかに簡単であるかが理解できる。

 リスト3は、タグを使ったWebサービスの呼び出しだ。 CFMLのタグからWebサービスを呼び出す方法は、cfinvokeタグと呼ばれる1つのタグを記述するだけの簡単なものだ。

リスト3 cfinvokeタグによるWebサービスへの接続
<cfinvoke
webservice="http://api.google.com/GoogleSearch.wsdl"
method="doGoogleSearch"
returnvariable="aGoogleSearchResult">
<cfinvokeargument name="key" value="xxxxx googleから提供されるライセンスキーのため省略 xxxxx"/>
<cfinvokeargument name="q" value="Macromedia"/>
<cfinvokeargument name="start" value="0"/>
<cfinvokeargument name="maxResults" value="10"/>
<cfinvokeargument name="filter" value="true"/>
<cfinvokeargument name="restrict" value="countryJP"/>
<cfinvokeargument name="safeSearch" value="true"/>
<cfinvokeargument name="lr" value="lang_ja"/>
<cfinvokeargument name="ie" value="utf8"/>
<cfinvokeargument name="oe" value="utf8"/>
</cfinvoke>

 また、スクリプトシンタックスによるWebサービスの呼び出しはリスト4のようになる。CFScriptからWebサービスを呼び出す場合は、CreateObject関数を用いる。

リスト4 CreateObject関数によるWebサービスへの接続
<cfscript>
ws = createObject("webservice", "http://api.google.com/GoogleSearch.wsdl");
aGoogleSearchResult = ws.doGoogleSearch(
key = "xxxxx googleから提供されるライセンスキーのため省略 xxxxx",
q = "Macromedia",
start = 0,
maxResults = 10,
filter = true,
restrict = "countryJP",
safeSearch = true,
lr = "lang_ja",
ie = "utf8",
oe = "utf8"
);
</cfscript>

 Webサービスのオブジェクトを作成したあとは、通常のオブジェクトへのアクセスと同様にWebサービスのオペレーションを呼び出すことができる。

 このように、Webサービスの呼び出しは非常に簡単に行える。WSDLの解析は自動的に行われ、Webサービスを呼び出すために必要なProxyオブジェクトが実行時に自動的に生成される。

 また、FlashクライアントからのWebサービスの呼び出しも可能だ。ただしこの場合Flashクライアントから直接Webサービスにアクセスすることはできないので、Flash Remoting経由で呼び出すことになる。

 一方、WebサービスのパブリッシュはColdFusionコンポーネントを作成することで行う。Webサービスを意識した特別なコードを書く必要はなく、Webサービスとしてパブリッシュしたいメソッドをリモート属性で定義するだけだ。そうすることによって、WSDLが自動的に生成され、WSDLにその関数がインクルードされる。

 ここまでの説明で、ColdFusion MXにおけるWebサービスの実装がいかに容易であるかが理解いただけたと思う。

さまざまなスタイルのアプリケーション開発を自在に

 ColdFusion MXは、ここまで紹介した以外にも他のアプリケーション・サーバにはない、以下のようなさまざまな特長をもっている。

リッチなグラフ描画を実現
従来のColdFusionもグラフ描画機能をもっていたが、ColdFusion MXでは棒グラフや線グラフのほか、ピラミッドグラフ、ステップグラフ、分散グラフなどの非常に多彩なグラフの描画を実現する。これらのグラフは、CFMLのcfchartタグで容易に実現できる。また、これらのグラフは、JPEG、PNGファイルやFlash形式(SWFフォーマット)のさまざまなフォーマットで書き出すことが可能だ。また、クリックするとドリルダウンできるといったインタラクティブ性の高いグラフを生成することもできる

XMLのハンドリング
XMLパーサーを内蔵しているので、XMLドキュメントの解析、XSL変換、データからXMLへの変換を行うことが可能だ。XMLを活用するWebアプリケーションの実装を容易にすることができる

アプリケーション間連携
Microsoft COMインターフェイスやCORBA、EJBに対応することで、レガシーシステムや他のコンポーネントとの連携を実現する

 ここまでの説明で、ColdFusion MXは、J2EE環境にこれまでにない高い生産性とリッチなアプリケーションインターフェイス、そしてWebサービスによる新しいアプリケーション間連携の容易な実現をもたらすことができるプラットフォームであることが理解いただけただろう。

 次回は、マクロメディアのWebサイトから無償ダウンロードできるColdFusion MXのトライアル版を利用して、簡単なサンプルアプリケーションを動かし、ColdFusion MXのメリットを実際に体験してみよう。

次回に体験するリッチインターネットアプリケーション

リッチインターネットアプリケーション時代の到来
  第1回 次に来るWebコンピューティングの未来像とは
第2回 プロダクトレビュー ColdFusion MX
  第3回 リッチインターネットアプリケーションを体験する

◆リッチインターネットアプリケーション時代の到来 インデックスページへ戻る



リッチインターネットアプリケーションの作成に必要な、
ColdFusion MX の優れた新機能をすべてご使用いただけます

 


関連リンク

マクロメディア株式会社


ColdFusion MX製品情報

ColdFusion MXトライアル版ダウンロード


DevNet(開発者向け情報サイト)


ショーケース(事例)


お問い合わせ


@ITニュース

2003年春、iモードにMacromedia Flashが実装される

ブラウザの限界を超えたコンテンツを開発できるFlash MX

マクロメディア、買収から1年越しで新ColdFusionを発表



</comment> <tr> <td bgcolor="#EEEEEE"><font size="2"><a href="javascript:KeepIt();"> <img src="/club/keepoint/images/ico_kpt.gif" alt="kee&lt;p&gt;oint保存" border="0" align="absmiddle" width="24" height="18">kee&lt;p&gt;ointで保存</a></font></td> </tr> <comment>

 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ