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を高速に振って浮かび上がった「す」の文字 |
Sun SPOTのデバイスは、無線規格はIEEE 802.15.4(2.4GHZ)をサポートしていて、光センサーや温度センサー、3軸加速度センサー、3色LEDを8つ、ボタンスイッチを2つを備えている。「Squawk Java VM」というJava仮想マシンを搭載し、SDK(開発キット)はJava ME(CLDC 1.1)準拠で、ハードウェアに近い部分を隠蔽(いんぺい)し簡単にアプリケーション開発ができる。また、USBインターフェイスでPCに接続してベースステーションを作ることができ、そのPCにインストールした管理ツールから無線センサーを使ってアプリケーションの操作やインストール、アップデートがリモートで可能だ。さらに、NetBeansやEclipseなどの開発環境からデバッグもできる。
さらに、アナログ入力ピンを6つ、汎用入出力(GPIO)ピンを5つ、高電力出力ピンを4つ備えていて拡張性もある。例として町田氏は、Sun SPOTに距離センサーを拡張して、Duke人形との距離を測るアプリケーションのデモを行った。
Sun SPOT+距離センサーとDuke人形との距離がJava 3Dで作った仮想画面にリアルタイムで表示されている動画(撮影:@IT編集部 平田)(見るにはFlash Playerが必要になります) |
サン・マイクロシステムズ株式会社 ソフトウェア・ビジネス統括本部 ビジネス推進本部 先端技術推進室 町田修一 氏 |
「Sun SPOTは、無線センサー研究やプログラミング教育用で使われるのがほとんどですが、すでに移動ストレージシステム『Project BlackBox』やアフリカのマラウイにおける水質モニタリングの研究プロジェクト『Aqua WSN』などでも使われています。現在は教育研究機関にしか提供していませんが、一般販売も検討中ですので、その際はぜひ使ってみてください。また、ハードの設計/ソフトウェアがオープンソースとなってますので、コミュニティにも参加してみてください」(町田氏)
■ 関連リンク
- 5分で絶対に分かる近距離無線技術
- サンがJava FXの実例をデモ〜SUN TECH DAYS 2007基調講演レポート〜
- 運べるデータセンター「Project Blackbox」が日本上陸〜コンテナ1箱で最大3PBのディスク容量も〜
- Eclipse対抗馬の本命!? NetBeansとは?(前編)
“ステートフル”なら不要なWebプログラミングを減らせる
Javaプログラミングにおいて、最もプログラマに身近で“枯れている”と評されるのが、Webアプリケーションのプログラミングだろう。だが、その実装の仕方はまだまだ新しい可能性を秘めている。そこで紹介するのが、Java-jaの庄司嘉織 氏による講演「次世代ウェブフレームワークの幕開け〜ステートフルはじめました/君が僕を望むなら僕は君を忘れない〜」だ。
庄司氏は、“ステート”について次のように説明する。「ステートとは、CookieやGET/POSTパラメータ、ヘッダを使ってサーバとやりとりされる、Webアプリケーション内で保持される“状態”のことです。HTTPプロトコルは、プロトコルレベルでは“ステートレス”ですが、WebブラウザやAdobe AIRなどクライアント側のアプリケーションとの連携で疑似的に“ステートフル”になっているといえます」
StrutsやRuby 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による画面定義ではなくHTML/XHTMLの画面定義とJavaだけのビジネスロジックという、簡潔なプログラミングが行える。しかも、Strutsとは違いHTTPsessionに関するロジックを自動的に行ってくれるのだ。また、HTMLのFormタグやTextタグなどの部品をオブジェクト/コンポーネントとして扱え、その操作をJavaでコーディングできる。
この講演は参加者の関心も高く、多くの質問が飛び交っていたが、その中に「メリットばかりに見える“ステートフル”ですが、デメリットはないのでしょうか」という質問があった。これに対して、庄司氏は次のように答えた。
「デメリットとしては、一から学習する必要があることやほかの選択肢が少ないこと、HTTPsessionを多く使うのでサーバ側にメモリの負担が掛かることなどがあります。従来、HTTPsessionは多く使うべきではないといわれてきました。メモリの問題があるからです。しかし、HTTPsessionのためのコードを書くコストや、脆弱性を考慮するなど保守のコストを考えたら、以前に比べ比較的安価になってきたメモリを増やす方がコストは掛からないと思います」
「すぐには全部ステートフルに置き換えるなんてできないと思いますので、“ステートフル”なWebアプリケーション・フレームワークがあるということを覚えておいて、できるところから徐々に試してみてはいかがでしょうか」(庄司氏)
■ 関連リンク
- Ajax、EJB、JSF、O/Rマッピングを縫い合わす
- J2EEのベストプラクティス・トップ10(+2)(後編)
- Strutsを使うWebアプリケーション構築術
- Java+Sturtsの視点からRailsを捉える
1-2 |
Index | |
Java&Programming in デブサミ2008レポート 「Java開発を楽しみ、プログラミングに誇りを持つ」 |
|
Page1 無線センサーでJavaプログラミングを楽しもう “ステートフル”なら不要なWebプログラミングを減らせる |
|
Page2 自動変換とメンテナンス性の間で “速い”コードを書きたくないか? プログラムを書く前にテストを先に書くことの利点 |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|