動作確認
ここまでで、Cometを利用した画面を追加する準備ができました。早速、開発サーバを起動して動作確認しましょう。
「mvn jetty:run」コマンドで開発サーバーを起動します。サーバー起動後に、http://localhost:8080/にアクセスすると、追加されたメニューが表示されていることが確認できるでしょう。
追加された「ついったーのようなもの(Comet)」というリンクをクリックすると、空の画面がでてきます。この時点では、まだメッセージが投稿されていないので何も表示されていません。
次に、別のブラウザやタブで、前回作成した投稿画面を表示させます。ここで、メッセージを投稿してみましょう。
メッセージを投稿したら、先ほど表示させたCometを利用した画面を見てましょう。特にブラウザをリロードしなくても投稿されたメッセージが自動的に追加されてることが確認できるでしょう。
次々とメッセージを投稿してみましょう。特に何もせずとも投稿したメッセージが追加されていく様子が分かると思います。
実際に、Cometでサーバーから返されているレスポンスは、先ほどのAjaxの例と同じく、次のようなjQueryを利用したJavaScriptになっています。
try { destroy_F33081855446LO0(); } catch (e) {}
jQuery('#'+'F33081855446LO0_messages_span').prepend('<xml:Group>\u000a <ul class="status">\u000a <li class="message">\u3042\u3042</li>\u000a <li class="user">Guest</li>\u000a <li class="dateOf">Tue Dec 29 21:27:16 JST 2009</li>\u000a <hr />\u000a </ul>\u000a </xml:Group>');
try { destroy_F33081855446LO0 = function() {}; } catch (e) {}
lift_toWatch['F33081855446LO0'] = '33081855477';
まとめ
これまでの全5回の連載を通して、Liftという「関数型Webアプリケーションフレームワーク」という新しいコンセプトのフレームワークを紹介してきましたが、いかがでしたでしょうか。
Scalaという新しい言語がもつパワーを生かしたLiftは、これまでのフレームワークとは異なったアプローチを取っています。一見Htmlを直接処理しているように見えて、実は透過的なテンプレートとSnippetアーキテクチャや、今回紹介したサーバサイドのみでのAjaxやCometなどです。
Liftに触れることで、Scalaの持つ可能性を感じていただければ幸いです。
参考資料
- The Scala Programing Language
- Lift
- 『Programming in Scala』 Martin Odersky・Lex Spoon・Bill Venners 著、Artima Inc、2008年11月
- 『The Definitive Guide to Lift: A Scala-based Web Framework』 Derek Chen-Becker・Tyler Weir・Marius Danciu 著、Apress、2009年5月



