GWT――Web構築に新機軸をもたらす開発ツール

 ページの再読込み不要でスムースな移動のできるGoogle Mapsや洗練されたGmailのルックアンドフィールに魅了されてしまったユーザは多いが、あなたもその1人ではないだろうか? そして、こうしたGoogleのユーザフレンドリな諸機能を織り込んだ独自のWebサイトを自分で作成してみたいが、必要なプログラミング作業を考えると気が滅入るという心理状態の方がおられたら、Google Web Toolkit(GWT)の利用を検討してみてはいかがだろう。

 GWTとは、2006年5月のJavaOneコンファレンスにて最初のお披露目がされたばかりのWebプログラミングツールである。登場してからの歴史は浅いながらも、現行のバージョン1.4.61は既に充分な完成度に到達しており、2008年の第1四半期にはバージョン1.5のリリースが予定されている。なおライセンスについてはApache License 2.0の適用下で公開されているが、一部のコンポーネントについては他のライセンスが適用されているので、その点は注意が必要だ。

GWTを推薦できる理由

 最近のWebアプリケーションはダイナミックな挙動を示すものが多いが、その分だけ制作者側の負担もかなりのレベルに達している。しかも既存のブラウザ間には数々の非互換性があるため、これから初めて開発活動をスタートする場合は、そうしたギャップを埋めるためのコードを記述する必要もある。そうしておかないと、Mozilla Firefoxでは意図どおりに表示されたがInternet ExplorerやSafariではまったく機能しないというサイトが出来上がってしまうかもしれないからだ。実際Web開発者からすると、サイト本来の機能の構築よりもこうした互換性を確保するための検証作業の方に時間を取られるのが今ではかえって普通なのである。

 またサイトをインタラクティブ化するにはJavaScriptを使用する必要があるが、この言語は機能的には強力ではあるもののモジュール性やテスト機能に欠けているため、規模の大きいシステムを構築する際には各種のトラブルに遭遇することになる。その他にもWebデザインにはHTMLおよびCascading Style Sheets(CSS)の知識が不可欠であるし、Webサービスを構築するにはPHPやJavaなどの本格的なプログラミング言語も使用しなければならない。またDynamic HTML(DHTML)を必要とするサイトも多いが、その場合はページを記述するソースコード本体をその場その場で変更させなければならず、こうした要件についても互換性の問題は生じてくる。そして最後に、インターナショナルなサイトを構築する場合は複数言語に対応させることになるが、これも開発の手間を増やす一因となる。

gwt1_thumb.png
GWT

 Java開発時におけるこうした諸々の問題を解消してくれるのがGWTであり、このプログラミングツールを構成しているのが、コード開発用のEclipseおよびNetBeans、クラス設計用のUnified Modeling Language(UML)ツール、パフォーマンス最適化用のJProfiler、自動テスト用のJUnit、ドキュメント整備用のJavadocといったツール群である。これらのツールは、キーボードのタイプミスや変数型の不一致といった一般的なエラーを回避するのに役立つだけでなく、リファクタリングによるコードの品質向上にも寄与してくれる。アプリケーションの実行とデバッグはHostedモードで行うことになるが、これは開発中のプログラムをJava Virtual Machine(JVM)上のJavaコードとして実行させることにより、各種のデバッグ用ツールを利用可能とするための措置である。その後デバッグの終了したプログラムは、JavaScriptおよびHTMLに変換してWebモードにて実行させることになるが、このモードでは実際のエンドユーザが扱う場合と同様の動作を検証できるようになっている。

 このプロセスにおいて開発者は、HTMLおよびJavaScriptの扱いについて特別な注意を払う必要はない。GWTは、JavaからJavaScriptにコンパイルする際に互換性問題もすべて対処してくれるので、最終的に完成するサイトはどのブラウザを使ってもまったく同じように表示されるのである。その他にもGWTはAJAXの使用を簡単化してくれるため、WebサービスがJavaで記述されているか否かを問うことなく気軽にアクセスできるようにしてくれる。

GWTに含まれるコンポーネント

 GWTには下記の4つのコンポーネントが含まれている。

  • Hosted Webブラウザ:エンドユーザが実際に操作するのと同様な環境でのJavaアプリケーションのテストを可能にする
  • Webインタフェースライブラリ:Webブラウザのインタフェースに使う、ラベル、テキストボックス、ラジオボタンなどの構成パーツの作成および提供をする。これらを用いて構築したJavaプログラムは、コンパイルプロセスによってHTML形式の等価物に変換される
  • Javaエミュレーションライブラリ:一般的なJava標準クラスをJavaScriptにて再現する(ただし使用可能なクラスには制限がありJava全体をカバーしている訳ではないため、未対応クラスを利用したい場合は自力での対処が必要となる場合もある)
  • Java-to-JavaScriptコンパイラ(トランスレータ):最終的なWebコードを生成する

 プログラマとして気になるのは、こうした自動変換というプロセスを経て生成されるコードのパフォーマンスであろう。まずサイズに関して言うとGWTで生成されるコードは非常に小型であり、これを更に圧縮してキャッシュすることにより、エンドユーザが1度にダウンロードする必要のあるコードは数キロバイト程度に収まるようになるはずである。生成されるコードそのものの品質については、特に大型プロジェクトの場合においては手書きのJavaScriptと同程度(あるいはそれより高品質)と思っておけばいいだろう。またGWTの開発陣の主張を信じるなら、バージョン1.5では更なる品質向上が達成されるものとされている。いずれにせよ全種類のWebブラウザを網羅するためのデバッグ作業に取られる時間を節約できることは、アプリケーション本体の開発活動に回せる余裕を増やせることを意味し、最終的なアプリケーションの機能および完成度を高める方向に寄与するはずである。

GWTのインストールと使用法

 GWTツールキットを利用するには、事前にJava Development Kit(JDK)をインストールしておかなくてはならない。また基本的に現行のGWTは、Google系開発者の利用しているEclipseでの作業を想定しているので、必要であればこれもダウンロードしておくべきである(GWTはNetBeansを始めその他のプログラミング環境で使用することもできる)。以上の準備が整ったら、GWTのダウンロードサイトから最新パッケージ(サイズは約25MB)を入手して、「tar jxf ../gwt-linux-1.4.61.tar.bz2」により展開する。インストールに関する操作はこれだけであり、すべてが正常に処理されていれば任意のディレクトリにてGWTが使えるようになっているはずだ。

 これから初めて新規プロジェクトを作成する際には、GWTのインストラクションに従えばいい。Eclipseを使う場合、この手順は次のようなステップで進行する。

  • 作成するプロジェクト専用のディレクトリを用意する
  • 用意したディレクトリ中にプロジェクトを新規作成する(./pathToGWT/projectCreator -eclipse MyOwnProject
  • ベースとなる空アプリケーションを作成する( ./pathToGWT/applicationCreator -eclipse MyOwnProject com.yourCompanyName.client.YourApplicationName
  • Eclipseを起動してFile → ImportにあるExisting Projects Into Workspaceを選択し、先に作成したプロジェクト用ディレクトリを指定する

 以上の設定が済むとHTMLおよびJava双方のコード編集が行えるようになるので、後は新規クラスの追加およびプログラムの試験をHostedモードにて実施していけばいい。そして満足行く出来映えのプログラムが完成したら、それをコンパイルして(そのためのスクリプトはオリジナルのプロジェクト作成時に生成される)、各自のWebサーバにアップロードするだけである。

GWTを利用するための関連情報

 GWT関連のより詳しい参考書としては、『 Google Web Toolkit for Ajax 』、『 Google Web Toolkit: Taking the Pain out of Ajax 』、『 GWT in Action: Easy Ajax with the Google Web Toolkit 』、『 Google Web Toolkit: GWT Java Ajax Programming 』といったものが出されている。

 個別的な疑問があれば、Google Web Toolkit Discussion Groupという11,000人以上のメンバが参加する活発なフォーラムも運営されているので、ここに質問すればいいだろう。またGWT本体の開発状況に関するニュースはGoogle Web Toolkit Blogに掲載されているが、このブログの更新頻度はそれ程高くない。その他The Unofficial Google Wikiからは、利用可能なパーツ類を始めとするGWT関連のリソースが各種提供されている。あるいは実際に使用可能なGWTのサンプルが欲しければ、Google本家のサンプルプロジェクトだけでなく先のThe Unofficial Google Wikiからも各種のサンプルを入手することができるし、Roughian.comのサイトでは具体的なコードが公開されている。

まとめ

 GWTの登場は、Web開発における1つのエポックメイキングと見ていいだろう。これは単にJavaプログラマの慣れ親しんだツールによるWebアプリケーション作成を可能としているだけでなく、従来のものより優れた開発作業環境を提供し、高度なインタラクティブ性を備えたモダンなWebサイト構築を簡単化しているからである。

Federico Kerekiはウルグアイ出身のシステムエンジニアで、20年以上に渡るシステム開発、コンサルティング、大学講師の経験を有している。

Linux.com 原文