Webアプリ熱再発
過去の記事を振り返ると,かつてAjaxという用語が一世を風靡したころ,Webアプリについて色々調べていたようだ。id:xoinu:20061021 あたりに作ったアプリは私のLaptopでまだ動いている。もうそろそろ3年か…(遠い目)。
Google I/O というイベントが,最近あったらしい。さすが2万人の優秀な人達がシコシコ頑張っている会社だけあって,成果も素晴らしいものがあるようだ。GWTというフレームワークも,2006年の発表以来,シコシコバージョンアップを重ねて,最近1.6が出たとのこと。GWTの評判は寡聞にして聞かないが,何か臭うものがあって,ちょっと触ってみた。
触ってみて,かなり気に入った。id:xoinu:20061021 あたりで妄想していた,Webアプリケーションの理想的なデザインをまさに地で行っている。
このフレームワークは,JavaでWebアプリを記述し,JavaScriptを使ったいわゆるAjaxアプリケーションを,Javaのコードから「コンパイル」することによって作成することができるツール。私の今までの理解では
- ブラウザの微妙な差異をフレームワークが吸収してくれる
- 「コンパイル」時にJavaScriptを自動的に難読化してくれる
- 生成されるJavaScriptそのものも,実行効率が良くなるようチューニングされている
- JavaScriptの知識が(殆ど)要らない
で,さらに判明したことは
- CGIスクリプトを書くのと同様,動かしながらプログラムが書ける。必要なのは,デバッグ用ブラウザの「Refresh」ボタンを押すことだけ。これはJavaの世界では当たり前なのかも知れないけど,プログラムを書いているそばからバックグラウンドでコンパイルが走るのは圧巻。10年前のJavaにはそんな機能なかったぞ。
- JavaScriptアプリではなく,エミュレータ上でJavaのコードに対してデバッグできる。これも圧巻。Java -> JavaScriptのマッピングの精度がそれだけ高いんだろう。すごく良くできている。
eclipseという開発環境も,知らなかったけど,手取り足取りありがたい。import文を勝手にインサートしてくれるとか,恐らくこれに慣れたらeclispeなしではやってられんだろうなと思うくらいの便利機能が満載。しかも私の4年もののPowerBook G4でも動くくらいにはできている。
ただ,あまりメジャーではないのにはそれなりに理由があると思う。1つは,既存のJavaScript直書きの開発手法とかなりかけ離れていること。JavaScriptとPerlやRubyを駆使する職人気質な人には受け入れられないだろう。2つ目は,非オープンなツールに頼りっきりになってしまう点。これを使い続けるには,背後の技術を俯瞰できるだけの知識があるか,Googleを信頼してブラックボックスをブラックボックスとして受け入れることができるようでないと難しい。*1もう1つは,基本的に画面遷移の多い,今のところメジャーなブログなどのアプリケーションには向いていない(と思われる)設計であること。どちらかというとGmailのような,デスクトップアプリケーションをWebの世界に持って行ったような,単一画面のアプリケーションに向いている。しかしながら,その分野では,FLASHの方が人気がある(イヤ,よく知らないけどね多分)。
チュートリアルのクオリティもすごく高い。これはGWTのみならず,eclispeを使った開発手法のチュートリアルにもなっている。
一通りチュートリアルは読み終わったので,もう少し踏み込んで遊んでみようと思う。