Java&Programming in デブサミ2008レポート

Java開発を楽しみ、プログラミングに誇りを持つ


@IT編集部
平田修
2008/2/28


主な内容

無線センサーでJavaプログラミングを楽しもう
“ステートフル”なら不要なWebプログラミングを減らせる
自動変換とメンテナンス性の間で
“速い”コードを書きたくないか?
プログラムを書く前にテストを先に書くことの利点

 2008年2月13・14日、今年も技術者/開発者のための祭典Developers Summit(以下、デブサミ)が開催された(Developers Summit 2008の開催概要)。

 今回のデブサミは、「越境しよう! コードで世界を変えよう」というテーマの下、実際にコードを書くことに焦点を絞ったセッションも多く開かれた。そんな中から本稿では、Javaプログラミングの仕方に関するセッションを中心にレポートする。

 無線センサーでJavaプログラミングを楽しもう

 Javaプログラミングを楽しむうえで1つのポイントになるのは、PC以外のデバイスで動くアプリケーションの開発だろう。そこで紹介するのが、サン・マイクロシステムズ株式会社 ソフトウェア・ビジネス統括本部 ビジネス推進本部 先端技術推進室 町田修一 氏によるセッション「Sun SPOT World〜Javaによる無線センサーネットワークの世界〜」だ。

 「Sun SPOT」とは、サン・マイクロシステムズが教育研究機関向けに販売している無線センサーのデバイスでJavaアプリケーションで操作ができる。町田氏はそれを使っていくつかのデモを行い、会場を沸かせていた。

3軸加速度センサーでSun SPOTの傾きを感知して、別のSun SPOTを搭載したロボットを動かすアプリケーションのデモの動画(撮影:@IT編集部 平田)(見るにはFlash Playerが必要になります)

8つの3色LEDと3軸加速度センサーで空中に文字を出すアプリケーションが組み込まれたSun SPOTを高速に振って浮かび上がった「す」の文字
8つの3色LEDと3軸加速度センサーで空中に文字を出すアプリケーションが組み込まれたSun SPOTを高速に振って浮かび上がった「す」の文字

 Sun SPOTのデバイスは、無線規格はIEEE 802.15.4(2.4GHZ)をサポートしていて、光センサー温度センサー3軸加速度センサー、3色LEDを8つ、ボタンスイッチを2つを備えている。「Squawk Java VM」というJava仮想マシンを搭載し、SDK(開発キット)はJava MECLDC 1.1)準拠で、ハードウェアに近い部分を隠蔽(いんぺい)し簡単にアプリケーション開発ができる。また、USBインターフェイスでPCに接続してベースステーションを作ることができ、そのPCにインストールした管理ツールから無線センサーを使ってアプリケーションの操作やインストール、アップデートがリモートで可能だ。さらに、NetBeansEclipseなどの開発環境からデバッグもできる。

 さらに、アナログ入力ピンを6つ、汎用入出力(GPIO)ピンを5つ、高電力出力ピンを4つ備えていて拡張性もある。例として町田氏は、Sun SPOTに距離センサーを拡張して、Duke人形との距離を測るアプリケーションのデモを行った。

Sun SPOT+距離センサーとDuke人形との距離がJava 3Dで作った仮想画面にリアルタイムで表示されている動画(撮影:@IT編集部 平田)(見るにはFlash Playerが必要になります)

サン・マイクロシステムズ株式会社 ソフトウェア・ビジネス統括本部 ビジネス推進本部 先端技術推進室 町田修一 氏
サン・マイクロシステムズ株式会社 ソフトウェア・ビジネス統括本部 ビジネス推進本部 先端技術推進室 町田修一 氏

 「Sun SPOTは、無線センサー研究やプログラミング教育用で使われるのがほとんどですが、すでに移動ストレージシステム『Project BlackBox』やアフリカのマラウイにおける水質モニタリングの研究プロジェクト『Aqua WSN』などでも使われています。現在は教育研究機関にしか提供していませんが、一般販売も検討中ですので、その際はぜひ使ってみてください。また、ハードの設計/ソフトウェアがオープンソースとなってますので、コミュニティにも参加してみてください」(町田氏)

関連リンク

 “ステートフル”なら不要なWebプログラミングを減らせる

 Javaプログラミングにおいて、最もプログラマに身近で“枯れている”と評されるのが、Webアプリケーションのプログラミングだろう。だが、その実装の仕方はまだまだ新しい可能性を秘めている。そこで紹介するのが、Java-jaの庄司嘉織 氏による講演「次世代ウェブフレームワークの幕開け〜ステートフルはじめました/君が僕を望むなら僕は君を忘れない〜」だ。

 庄司氏は、“ステート”について次のように説明する。「ステートとは、CookieGETPOSTパラメータ、ヘッダを使ってサーバとやりとりされる、Webアプリケーション内で保持される“状態”のことです。HTTPプロトコルは、プロトコルレベルでは“ステートレス”ですが、WebブラウザAdobe AIRなどクライアント側のアプリケーションとの連携で疑似的に“ステートフル”になっているといえます」

 StrutsRuby on RailsなどのWebアプリケーションフレームワークは基本的にHTTPプロトコル準拠だ。プロトコルレベルで薄くラップしてステートフルを実現している。つまり、HTTPのsession/requestに値を保持したり、hiddenやGETパラメータで値を保持したりしている。この現状について庄司氏は次のように付け加える。

 「HTTPプロトコルがステートレスなために、WebアプリケーションにはステートをHTTPsessionに保持、または破棄するコードを書く必要がありますが、本来これは不必要な作業で、皆さんはビジネスロジックだけに集中したいのではないでしょうか。HTTPsessionをPC上のメモリとしてとらえると、メモリ管理やGC(ガベージ・コレクション)などについて散々議論されてきた話題に似ていると思います」

 ほかにもHTTPsession管理のロジックに関する問題は多くある。Webブラウザの戻るボタン対策やサブミット(送信)ボタンの2度打ち、マルチウィンドウ対策、F5キー(更新ボタン)対策、そして、Cookieでの値の保持やGet/POSTパラメータなどからクライアントに値が返ってくることなどによるセキュリティ的な脆弱性だ。こういったさまざまな問題を解決してくれるのが、“ステートフル”な、つまり“状態の保持”をサーバ側で自動的にしてくれるWebアプリケーション・フレームワークだ。

 庄司氏は“ステートフル”なWebアプリケーション・フレームワークとして、まず「JBoss Seam」について簡単に触れ、次に「Wicket」について説明した。Wicketは、MVCのViewとContorolの部分に適用されるなどStrutsに似ている部分があるが、XMLによる画面定義ではなくHTMLXHTMLの画面定義とJavaだけのビジネスロジックという、簡潔なプログラミングが行える。しかも、Strutsとは違いHTTPsessionに関するロジックを自動的に行ってくれるのだ。また、HTMLのFormタグやTextタグなどの部品をオブジェクト/コンポーネントとして扱え、その操作をJavaでコーディングできる。

 この講演は参加者の関心も高く、多くの質問が飛び交っていたが、その中に「メリットばかりに見える“ステートフル”ですが、デメリットはないのでしょうか」という質問があった。これに対して、庄司氏は次のように答えた。

 「デメリットとしては、一から学習する必要があることやほかの選択肢が少ないこと、HTTPsessionを多く使うのでサーバ側にメモリの負担が掛かることなどがあります。従来、HTTPsessionは多く使うべきではないといわれてきました。メモリの問題があるからです。しかし、HTTPsessionのためのコードを書くコストや、脆弱性を考慮するなど保守のコストを考えたら、以前に比べ比較的安価になってきたメモリを増やす方がコストは掛からないと思います」

 「すぐには全部ステートフルに置き換えるなんてできないと思いますので、“ステートフル”なWebアプリケーション・フレームワークがあるということを覚えておいて、できるところから徐々に試してみてはいかがでしょうか」(庄司氏)

関連リンク

1-2

Index
Java&Programming in デブサミ2008レポート
「Java開発を楽しみ、プログラミングに誇りを持つ」
Page1
無線センサーでJavaプログラミングを楽しもう
“ステートフル”なら不要なWebプログラミングを減らせる
  Page2
自動変換とメンテナンス性の間で
“速い”コードを書きたくないか?
プログラムを書く前にテストを先に書くことの利点



Java Solution全記事一覧





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間