InfoQ

News

Derek Wischusen氏によるFlex、BlazeDSとScala/Liftを使用した統合開発

作者 Moxie Zhang, 翻訳者 八角研究所 投稿日 2008年2月28日 午後6時44分

コミュニティ
Java
トピック
RIA
タグ
Flex,
Scala

昨年12月にAdobe社はLiveCycleデータサービス(サイト・英語)をBlazeD(サイト・英語)という名でオープンソース化すると発表した(source)。BlazeDSはJEE環境で開発されたサーバサイド技術である。それは、コンテンツのストリーミング、及びFlexやAIRベースのRIAアプリケーションへのサーバサイドプッシュを容易にするものである。Derek Wichusen氏はflexonrails.netでFlex、BlazeDSとScala/Liftを使用した統合開発に関する記事をよせている(source)

Adobe社の発表に関してWischusen氏は次のように記述している。
この発表はもちろん喜ばしいニュースである一方で、BlazeDSを使うためにJavaを使用しなければいけないという誤解を与えてしまっているかもしれない。BlazeDSはただJavaプラットフォーム(source)を使用しているのであって、必ずJava言語(source)を使用しなければならないというものではない。

実際、Groovy(サイト・英語)、Python(Jython)(サイト・英語)、Ruby(JRuby)(サイト・英語)、Scala(サイト・英語)、そして勿論ColdFusion(サイト・英語)といった様々な言語(source)をJava プラットフォームで動作させることができる。理論上、これらのどの言語もBlazeDSと容易に統合開発することができるはずである。

Wischusen氏は彼がなぜScalaを採用したのか次のように説明している。

最近、私自身今まであまり知らなかったプログラミング言語の知識を深めたいと考えていた矢先に、Scalaが非常におもしろく、かつ強力な言語であることに気がついた。Scala はオブジェクト指向的でかつ関数型言語の特徴も併せ持ち、それらが組み合わさったスタイルで構成されていて、Erlang(サイト・英語)的な並行処理を行うことができるActorsライブラリがあったり、ほかにも多くの優れた特徴を持っている(サイト・英語)。私がScalaを選んだ最後の、そしてもしかしたら一番の理由は、Scalaで書かれた非常に素晴らしいLift(サイト・英語)というwebアプリケーションフレームワークの存在があったからである。

Wischusen氏の統合開発プロジェクトは最新版のJDK1.5+、Scala(source)、Eclipse(source)、EclipseのScalaラグイン(source)、Maven(source)、BlazeDS(サイト・英語)とFlex(サイト・英語)を同時に使用したものである。

Wischusen氏はLiftのプロジェクトを作成するプログラミングから始め、順を追ってその解説をwebに投稿した。そしてMavenを使用したEclipseのプロジェクトを作り、作成したLiftのプロジェクトをインポートし、BlazeDSのjarファイルをプロジェクトのビルドパスに加えた。開発環境のセットアップ方法についての解説の後に、Wischusen氏はLiftがどうやってHTTPリクエストを処理するのかを次のように述べている。

Liftはビューファースト(source) なフレームワークである。LiftはデフォルトではHTTPリクエストをまずLiftのビューに対してマッチさせようとする。うまくビューを見つけることができたら何らかの処理を行い、そしてHTMLを出力する。LiftがどのようにHTTPリクエストを処理するかについてもっと詳しく知りたいのであれば、このページを参照してほしい(source)
このプロジェクトではFlexがビューとして使用されるので、LiftはUIの一部としてではなく、webサービスを処理するためだけに設定されていた。

Wischusen氏はScalaプログラミングに関する解説とサンプルコードをwebに投稿した。彼は作成したActor(source)ついて次のように解説をしている。

Notifier Actorが始動されると(後にこれがどこで実行されるかわかるはず)actメソッドが呼び出される。actメソッド内での最初の処理はスケジュールヘルパーメソッドであるActorPing.scheduleの呼び出しである。このメソッドは0.5秒でこのActorへNotifyメッセージを送信しようとする。次に単純なループ処理があって、その中のリアクトブロックで受信されるメッセージに応じた処理がケース文として記述されている。これにより、Notifyもしくは"stop"メッセージが受信されたときに、メッセージに対応した処理が実行される。

サーバサイドのアプリケーションを作成した後に、Wischusen氏はFlexアプリケーションについて記述している。

私たちは二つのボタンと一つのテキスト入力フィールドからなる非常にシンプルなUIを持つアプリケーションを作成した。そのアプリケーションには二つのHTTPServiceとConsumerも存在している。ここで、次の二つの事柄について注意してほしい。一つ目は Consumerが“notifications”という名の宛先にサブスクライブし、同じ宛先に対してNotifier Actorがメッセージを発行するということ。二つ目はHTTPServiceがwebservices/start_feedと webservices/start_feedを呼び出すということ。これらの呼び出しが私たちが作成したWebServicesクラスのメソッドを呼び出すことができるように私たちはLiftアプリケーションを作成した。

アプリケーションの開発が完了し、Wischusen氏は次のように記述している。

これでLiftアプリケーションを起動し、Flexアプリケーションを立ち上げ、“Subscribe to ‘notifications’”ボタンをクリックすることで、Notifier Actorの始動とConsumerをサブスクライブすることができる。そうすると、IDナンバーと時間がテキスト入力フィールドに表示され、0.5秒置きに自動的に更新されるはずだ。さらに、“Unsubscribe from ‘notifications’”ボタンをクリックすることでNotifier Actorを停止させConsumerをアンサブスクライブすることができる。

最後にWischusen氏は次のように締めくくっている。

これら三つの技術を使用することによって、リアルタイムでサーバからクライアントへデータを非常に簡単に自動的に送信することができる。今回の例は非常にシンプルな例であったかも知れないが、より洗練されたアプリケーションのために、この手法は確実に進化していくと考えている。

このプロジェクトのソースコードはLife Appat(zip)とFlex App(zip)から取得することができる。

原文はこちらです:http://www.infoq.com/news/2008/02/integrating-flex-blazeds-scala
ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。