Not only is the Internet dead, it's starting to smell really bad.:2011年10月上旬

2011/10/02(Sun)

[RIA][Java] Google Web Toolkit(その1)

最近仕事でGWT + SmartGWTを採用したりしたのですが、前者のドキュメントは古いし日本語訳はアレだし、後者に至ってはJavadocすら内容微妙なもんで、何回かにわけて導入から開発TIPSなど書いてみる予定。いろいろハマりどころ多いので…

@Google Web Toolkitとは?

Google Web Toolkit(以下GWT)は、いわゆるRIA(Rich Internet Application) を作成するツールキットです。アプリケーションはクライアントサイド、サーバーサイド共にJavaで記述しますが、クライアントサイドについてはトランスレータがHTML5 + JavaScriptに変換するので、Java Appletのようなプラグインを一切必要としません。
http://code.google.com/intl/ja/webtoolkit/

サポートされているウィジェットについては以下のショーケースをご覧ください。
http://gwt.google.com/samples/Showcase/Showcase.html

またサードパーティーにより、よりリッチな機能を持つライブラリも提供されています。

@GWTの利点

JavaScriptで開発を行う上でしばしば開発者の頭痛の種になるのが、JavaScript処理系の互換性の低さとHTML表示の差異ですが、GWTはこれらをすべてトランスレータが吸収するので、これらの問題を気にすることなくコーディングを行うことが可能です。

現在サポートされるブラウザは以下の通りです

  • Google Chrome 全バージョン
  • Microsoft Internet Explorer 6以降(ただしIE8以降ではIE7互換モードが必要な場合あり、後述)
  • Mozilla Firefox 1.0以降
  • Opera 9以降
  • Apple Safari 2以降

HTML5 + JavaScript技術がベースですのでさすがにi-mode CHTML対応までは無理ですが、近頃急速に普及が進むスマートフォンであればSafari, Chrome, Operaなどで利用することが可能です。また別途GWT Mobile Webkitなど別プロジェクトによりスマートフォン向けの機能も提供されています。
http://code.google.com/p/gwt-mobile-webkit/

またメッセージなどの国際化(internationalization、以下i18n)を支援する機能もあるので、異なる言語でユーザインタフェースを提供することも容易になっています。

クライアントとサーバ間での通信はGWT-RPCという非同期通信がサポートされシリアライズ可能なPOJOのデータ連携が可能です。GWT-RPCのサービスはごく単純なServletの拡張ですので多くのサーブレットコンテナ上で動作します。また他のJ2EE技術(JDBCやEJB/JPAなど)との組み合わせも容易です。

またクライアントがGWTに限定されてしまうGWT-RPCを使いたくないという場合でも、JSON形式のデータも扱うことが可能(若干めんどくさくはあるのですが)ですので、サーバーサイドを別の言語やフレームワークで開発することも可能です。SmartGWTなどを導入すればよりシンプルにJSONを処理したりXML-RPCでの通信も可能になりますので、既存のWEB APIとの連携もより容易になります。

@開発環境

開発環境としてはGWT SDKが提供されており、最新のバージョンは2.4.0です(2011/10/02現在)
http://code.google.com/intl/ja/webtoolkit/versions.html

ユーザインタフェースの開発はeclipse 3.7でVE(Visual Editor)を押しのけて標準となったGUIビルダ WindowBuilder(以下WB)上でWYSIWYGなデザインが可能ですので、HTMLやJavaScriptを知らなくても開発できます (フォントの指定などCSSに関する最低限の知識は必要ではありますが)。

WBはかつてApplet/Swing/SWTなどのJavaアプリケーションのみならずGWTをもサポートする開発環境としてInstantiations社から販売される商用製品でしたが、これをGoogleが買収しeclipseプロジェクトに寄贈されました。
http://googlecode.blogspot.com/2010/12/windowbuilder-becomes-new-open-source.html

そしてプロジェクトの作成、ビルド & デバッグ、デプロイを支援するeclipse用pluginが(ちょっと混乱しますが)2種類提供されています。

ぱっと見では前者の方が良さそうなのですが、WB制限版ではSmartGWTやExtGWTを使った開発ができないという落とし穴があります。同時にインストールすることももちろん可能なのですが、両者のメニューが混在した状態となり混乱を招くので、この記事では次回以降は後者を使って話をしていきます。

@次回

ここまで書いたところでWindows7がビジー状態に陥ったのでやる気もげたんでまた続きは次回、インストールしてみる編。
つーかこんな記事に需要あるんだろーか、ぜんぜん日本で流行ってないしなー。

2011/10/09(Sun)

[i18n] CSI-xterm

@まえがき

以前 OpenI18Nで公開されていた、xtermの国際化patchがいまやもうarchive.orgからも取得できなくなっているようですので、私のところでミラーしておきます。

@でもxtermって国際化されているじゃないですか

はい、今のxterm(uxterm)はThomas Dickey氏により国際化されたものがXFree86-4で取り込まれ、初期には多くあった日本語環境における問題も、Debian開発者のkubota氏によって フィードバックされ、日常使用するには問題のないものとなっています。

@じゃぁなぜそれ使わないの?

といわれましても、まーいつもの私の持病としか。

初カキコ…ども… 
俺みたいなCSIでi18nしてる腐れ野郎、他に、いますかっていねーか、はは 

今日のtwitterの会話 
あの異体字がかっこいい とか あのAdobe-Japan1と汎用電子はIVS統一してほしい とか 
ま、それが普通ですわな 

かたや俺は電子の砂漠で0x1bからはじまるエスケープシーケンスを見て、呟くんすわ 
codeset independent. 狂ってる?それ、誉め言葉ね。 

なんつってる間に4時っすよ(笑)

真面目な説明はいずれ書きますw

@ダウンロード

  1. Xorg-6.5.1向けのpatch
    /distfiles/openi18n_mirror/xterm-6.5.1-i18n-0.7.patch.gz
  2. Xorg-6.6のxtermに上記patchを適用し、conflictを修正したもの
    /distfiles/openi18n_mirror/xterm-6.6-i18n.tar.gz
  3. とりあえず日本語使うための.Xdefaultsサンプル
    /distfiles/openi18n_mirror/Xdefaults

@使い方

とりあえず使いたいという人は

$ ftp http://www.hi-matic.org/distfiles/openi18n_mirror/xterm-6.6-i18n.tar.gz
$ tar zvf xterm xterm-6.6-i18n.tar.gz
$ cd xterm
$ xmkmf -a
$ make
$ sudo make install

とか *1でどうぞ、既存のxtermとapp-defaultsファイルが上書きされてしまいますが、こんなんわざわざ入れようとする人はUnicode版xtermなんかに未練はないですよね(白目

つうか4.99.xな頃はある程度正常に動いてたけど、今どーだろ。

(追記) xterm/{termcap, terminfo} も入れないとcurses/terminfo/termcapつかうアプリの表示がぐちゃぐちゃになります。

NetBSD-currentの人はterminfo化されているので

$ cat terminfo >>~/.terminfo
$ cd
$ tic .terminfo

この時NetBSD-currentだとmeml(memory lock), memu(memory unlock)ねーよと怒られますが、これ標準にはないHPの拡張なので無視してOK

NetBSD-5以前の人は~/.termcapに追記して下さい(ticはこれterminfoのコマンドなので不要)。

@スクショ

*1:なんでwgetとかじゃなくてftp(1)でファイル取ってこれるのかって?可能なのさ、そうNetBSDならね(ドヤ