トップ «前の日記(2007-01-17) 最新 次の日記(2007-01-19)» 編集

日々の破片

著作一覧

2007-01-18

_ GWT

GWTとはGoogle Web Toolkitのことだ(Apache Licence 2.0)。

豆蔵ナイトで、江川さんのレクチャーに行ってきた。

入門Google Web Toolkit(吉野 雅人)
のプロモーション兼かも(この本、Working Effectively with Legacy Codeと一緒に発注したので、届いたのが今日だったり。とりあえずぱらぱら読んだが、きれいにまとまってるのはさすがだ)。

すごくおもしろいなと感じたのは、江川さんのプレゼンの中で、Ajaxとかを業務システムに組み込む時の問題点として、従来のQAとかで対応できなくなる(たとえばJavaScriptでのカバレッジ率とか)=採用したくても採用できないというのがGWTを採用することでクリアできるというような視点だった。僕自身は考えもしなかったが、妙に説得力があった。

GWTは、Java 1.4.2のサブセットのランタイムライブラリと最終的にはDOMに変換されるJavaのクラスライブラリ、Java→JavaScriptコンパイラ、JavaScriptエミュレータ搭載ブラウザ(GWT用に記述したJavaプログラムをJavaScriptとして実行可能なブラウザ)から構成される。開発時はJava1.4.2以降のJavaそのものが利用されるから、NetBeansやEclipseで開発できるということだ。

正直言って、自分ではまったく使いたくは無いツールキットだが(と言うと嘘になる。ある種のアプリケーション用には向いているからだが、ここでの文脈とは異なる)、確かに有用性はわかる。しかも、どう考えたって企業システム開発用にしか意味がなさそうなツールキットを、なぜかGoogleが出してきたというのが興味深い。だって、PythonでもなければRubyでもなく、もちろんJavaScriptそのものでもなく、JavaでEclipseとかNetBenasとかで型チェックしながら開発するわけだからね。

これ使って開発したAjaxアプリケーションはWeb2.0とは言わないんだろうか? と思ったが、逆にこれを使ってコンパイルエラーを全部つぶして、カバレッジ率100%のソフトウェアにこそ「Web2.0」という名前が付けられることになるのかも。つまり、Web2.0企業と呼ばれる企業が使うのではなく、Web2.0という言葉を唱えたい企業が使う。

で、プログラムそのものはまるでSwingだ。

本からTextAreaのところをちょっと引用。数字キー以外ははねるという処理。

TextArea textArea = new TextArea();
textArea.setCharacterWidth(40);
textArea.setVisibleLines(10);
 
textArea.addKeyboardListener(new KeyboardListenerAdapter() {
  public void onKeyPress(Widget sender, char keyCode, int modifiers) {
    if (!Character.isDigit(keyCode)) {
      ((TextArea)sender).cancelKey();
    }
  }
});
RootPane1.get().add(textArea);

うむ、読みやすい(=何をやっているか見通しが良い)。

以前、GWTの話を聞いてJavaScriptはDSLで表現されるようになるんじゃないかとか、ここで与太を飛ばしたけど、これ、まったくそれだ(あまりにも極端なのである意味予想外の方向だけど。でも極端じゃなきゃ意味がない)。というのも生成されるJavaScriptがすげぇのなんのって、C++をコンパイルして生成したx86アセンブラよりもっと強烈だ。難読化のためなんだろうか? というか、JavaScriptハッカーでかつパズル好きなら、GWTが生成したJavaScriptを追ってみると死ぬまで楽しめると思う。おれはいやだね。だから多分、Javaで記述したうちに検証をかっちりできるようにしてるんだ$蹐Δ韻鼻/p>

これは、業務アプリケーションの開発プロジェクト用に特化したJavaScript(Ajax)アプリケーション開発用のランゲージだ。確かにそうだ。

で、江川さんたちの本は、クラスライブラリの解説と、S2DaoやS2Containerとかを組み合わせたGWTアプリケーションのチュートリアル、テスト、チップスとか。

ここでS2が出てくるのは、これもおもしろい。確かにGWTが企業システム向けなら、プレゼンテーション層がどうだろうが、モデルはモデルだ。

もう1点。テストと言えばGWTの初期化が必要なので単にTestCaseを継承するとGWTのWidgetいじるとエラーになる。そこでGWTはGWTTestCaseというクラスをスーパークラスとして用意している。良い時代だ。

Eclipse以外の環境を利用したくなくて、かつ静的な型検証がなければ落ち着かなくて、しかもAjaxを使いたいのなら、試してみる価値は大いにありそうだし、そういう意味で江川さんたちの本は良いタイミングみたいだな。

でも、おれはASP.NETとRailsの2股があればとりあえずは十分なんだよな。今のところ。(Atlasの方向とGWTの方向の相違がまたおもしろいわけだが)

#で、もちろん、JavaScriptそのものをとても気に入っている今日この頃だし。

_ MSDNバグメモ

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.ja/dv_aspnetcon/html/dfaaa7d4-e1f2-4322-b2f5-796e0419f185.htm

「クライアント スクリプト関数の作成」のサンプルコード

誤)Page.GetCallbackEventReference

正)Page.ClientScript.GetCallbackEventReference

_ 自由と真理の神がまだ在るならば、弱き我らを憐れみたまえ。

多分、これは誰もが読むべき(で、その後、自分の立場、見解、方向を考察してみるべき)筋合いのものだと思う。

ので、リンクしておく。ほんとうの創作者利益について

via ものがたり

本日のツッコミ(全2件) [ツッコミを入れる]
_ えがぴ〜 (2007-01-18 11:31)

おこし頂きありがとうございました〜!

_ arton (2007-01-18 19:08)

GTWの意義から雰囲気まで短い時間にうまくまとめられていてとても良かったです。どうもありがとうございました。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え