ColdFusion 9でRIA開発をもっと簡単に!

昨年秋に発表されたColdFusionの最新バージョンであるColdFusion 9をご存知ですか?

ColdFusionは少ないコードでJavaアプリケーションを開発することができるアプリケーションサーバーで、その生産性の高さやメンテナンスの容易さから数多くのWebアプリケーションに利用されています。アドビ社の資料によれば、ColdFusionを利用する企業は今までに全世界で1万2千社を超え(2007年から20%の新規顧客増加)、開発者も80万人近く(2007年から60%の増加)に達しています。

このようにColdFusionの導入が増え続けている理由としては、生産性だけでなくFlashとの親和性の高さも大きな要素であるとのことで、実際ColdFusion 9ではRIA開発のための機能強化が大きな柱の1つになっています。そこで、ColdFusion 9が提供するRIA開発者にとっての利点を具体的にいくつかご紹介したいと思います。

ColdFusion 9とRIA

Flexロゴ1.Flexアプリケーションとの連携 

ColdFusion 9にはOfficeファイルをPDFに変換する機能があります。下はPowerPointファイルをPDFに変換するコードと実行例です。

 

OfficeファイルをPDFに変換する機能
左はPowerPointの画面、
右は変換後のPDFを表示した画面

<cfdocument
    fontembed="false" 
    format="pdf" 
    srcfile="/home/public_html/cf9sample/cs4_web_seminar.ppt" 
    filename="/home/public_html/cf9sample/cs4_web_seminar.pdf"
    overwrite="yes"> 
</cfdocument>

 

ColdFusion 9から、このPDF変換を含め6つの機能がWebサービスとして公開できるようになりました。公開できる機能にはそれぞれWSDLが提供されていてSOAPを使ってアクセスします。

さて、ColdFusion 9では、これらのサービスを利用するためのAS3/MXML用ライブラリが提供されます。Flexアプリケーションは、このライブラリを使うと、例えばPDF変換であれば<cf:Document action="generate" format="pdf" ...>のようなタグの記述によりColdFusion 9の機能を呼び出すことができるようになります。また、通信にAMFを使うためSOAPよりも高速な処理が期待されます。

Flash Remotingについては前バージョンに比べ9倍の高速化が実現されているとのことで、アドビ史上最速かもしれません。

2.AIRアプリケーションのローカルDB同期

AIRロゴColdFusion 9から追加された新機能の1つにORM (オブジェクト–RDB間のマッピングを行う)があります。ORMを利用すると、SQL文を使うことなく少ない行数でオブジェクトをデータベースに保存する機能を記述できます。また、ORMには特定のデータベースに依存しないアプリケーションを作成できるという利点もあります。ORMはJavaのHibernateフレームワークをベースに実装されています。

ORMを使ってコード生成を行っているデモビデオ左は実際にORMを使ってコード生成を行っているデモビデオへのリンクです。テーブルの情報をもとにCFCファイルが生成される様子を捉えたものです。

 【クリックしてビデオを表示

この機能をAIRアプリケーションからも活用できるよう、ColdFusion 9のORMとAIRのローカルDBであるSQLiteを連携させるAS3ライブラリが提供されています。このライブラリでは、AIRアプリケーションがオフラインからオンラインになったときのサーバー側へのデータ同期機能が提供されたり、オフライン中のローカルデータ更新によるサーバーとの競合の検出がサポートされたりします。

その際、AIRアプリケーション開発者はデータベースやテーブルを意識する必要がありません。そのため、オンライン/オフラインどちらでも利用できるAIRアプリケーションの開発がより効率的になることが期待されます。

Flash Builderロゴ3.開発環境の連携

ColdFusion 9の開発と並行して、Eclipseベースの新しいIDEであるColdFusion Builderが開発されています。

 

ColdFusion Builder
スクリーンショット:ColdFusion Builder

同じくEclipseベースであるFlash Builderと連携してサーバー側/クライアント側のコードを同一環境内で開発することが可能です。特に、ColdFusion BuilderのORMコード生成機能とFlash Builder 4のDCD機能を利用すると、コードを1行も書かずにアプリケーション開発ができてしまいます。この簡単さはちょっと感動的です。

なお、ColdFusion Builderは現在ベータ版がAdobe Labsに公開されている状態です。日本語版は英語版正式リリースのさらに先になるそうなので、残念ながら少し待つことになるかもしれません。

4.BlazeDSの統合

BlazeDSロゴBlazeDSは、アドビからオープンソースとして公開されているサーバー側のメッセージング技術です。サーバーからFlashアプリケーションにデータをプッシュしたり、Flashアプリケーション同士でリアルタイムにデータを共有したりするのに使われています。

ColdFusion 9をインストールすると、同時にBlazeDSも構成済みの状態でインストールされます。つまり、Flashアプリケーションのためのメッセージング機能も別コンポーネントとしてですが付属しているわけです。

ColdFusionにはBlazeDSと連携する機能がありますので、ColdFusionからBlazeDS経由でFlashアプリケーションにメッセージをプッシュすることも可能です。

その他の新機能

さて、ColdFusion 9にはRIA開発用途以外にもまだまだ魅力的な新機能があります。以下簡単にご紹介します。

1.Officeファイルとの連携

ColdFusion 9はExcelファイルの読み込み・生成・セル内のデータ更新や、PowerPointプレゼンテーションの動的な作成が可能です。MS Office 97以降とOpenOffice.orgのフォーマットをサポートしています。

下は、Excelシート(左)とそれを読み込んでグラフ表示している画面の例(右)です。コード例にも記述されているように読み込む範囲を指定することもできます。

Excelシートとそれを読み込んでグラフ表示している画面の例

<cfspreadsheet 
action = "read" 
src="/home/public_html/cf9sample/visits.xlsx" 
query="excelquery" 
sheet="1" 
rows="1-35" 
columns="1-2"> 
<cfchart 
xaxistitle="Month" 
yaxistitle="Numbers" 
gridlines=6 
showxgridlines="yes" 
showygridlines="yes" 
showborder="yes" 
chartwidth="350"
chartheight="400"
scaleto="10800"
> 

<cfchartseries
type="horizontalbar"
query="excelquery" 
valuecolumn="col_2" 
itemcolumn="col_1" 
seriescolor="##0033CC" 
paintstyle="plain" 
/> 
</cfchart>

他にも、この記事の最初に紹介したとおり、WordやPowerPointのPDFへの変換機能もあります。

2.新しいAjaxコントロール

新しい10個のUIコントロールが追加されました。下の2つの画面は、それぞれファイルアップロードとGoogleマップのUIコントロールの使用例です。ファイルアップロードのUIコントロールでは一度に複数のファイルを選択してアップロードができます。どちらも簡単なコードで実現できていることが分かるかと思います。

ファイルアップロードのUIコントロールの使用例

<script language="JavaScript" type="text/javascript">
    function onUpload() { 
    ColdFusion.FileUpload.startUpload('myupload'); 
    }; 
</script>
<cffileupload 
    url="uploadAll.cfm" 
    progressbar="true" 
    name="myupload" 
    addButtonLabel = "ファイルを追加"
    deleteButtonlabel = "削除" 
    clearButtonlabel = "クリア" 
    width=400 
    height=200 
    title = "ファイルアップロード" 
    maxuploadsize="20" 
    extensionfilter="*.jpg, *.png, *.flv, *.txt" 
    BGCOLOR="##FFFFFF" 
    MAXFILESELECT=5 
    UPLOADBUTTONLABEL="転送中"/>
    <cfform name="form01">
    <cfinput type="button" name="startupload" value="アップロード開始" 
    onclick="onUpload()">
    </cfform>

 

GoogleマップのUIコントロールの使用例

<cfmap name="gmap01" 
    centerlatitude="71.094224" 
    centerlongitude="42.339641" 
    doubleclickzoom="true" 
    overview="true" 
    scrollwheelzoom="true" 
    showscale="true" 
    tip="My Map" 
    zoomlevel="4"/>

3.IMAPのサポート

IMAPを使いメッセージを読み込むことができるようになりました。ヘッダーのみを取得したり、添付ファイルをダウンロードしたりすることができます。また、フォルダ情報の取得や名前の変更、メッセージのフォルダ間での移動などの管理機能も提供されます。

4.Apache Solrの統合

Apache Solrの統合により、高速な全文テキスト検索が可能です。従来のVerityを使った検索より6倍高速、インデックスの作成も2.5倍高速です。

5.パフォーマンス

ColdFusion 8より40%高速、ColdFusion 7より6倍高速になりました。

ColdFusion in the Cloud

クラウドは最近よく使われるようになった言葉ですが、安いコストで俊敏性と柔軟性の高いサービスが利用可能という理由で広く使われるようになって来ています。

このような状況に対応すべく、ColdFusion 9では従来のCPUライセンスに加えてクラウド環境で利用できるライセンス提供が予定されています。ライセンスを持っていないユーザーでも手軽にColdFusionを使える環境が提供されることになります。

まず、Amazon EC2向けに2010年前半に提供予定でサービスの準備を進めているとのこと。次期バージョンはよりクラウドでの利用を想定した製品として見直される模様です。

よりパワフルに、より使いやすくなったColdFusion 9、お試しになりたい方は、アドビのColdFusionサポートセンターから体験版をダウンロードしてみてください。