2006-04-20

SWTのBrowserウィジェットは便利

仕事でJavaのプログラムを書いているっていうと,StrutsやOracleやDIコンテナでゴー!っていうサーバサイドな人が多いと思いますが,私はクライアントサイドのアプリをJavaで作ってます。

特殊な端末向けの専用アプリで,いろいろとシステム上の都合からクライアントサイドアプリが必要なのです。GUIライブラリはSWT ver3.1.1を使っているんですが,これに含まれるBrowserウィジェットという画面部品が超便利なので,メモっておきます。

Browserウィジェットというのは簡単に言えば,IEコンポーネントをJavaから使えるようにしたものです。便利なのは,Browserウィジェットのほうから表示されるHTML上のJavaScriptを起動できること。

例えば,test.htmlのなかでtest()という関数が定義されてたら,次のようなコードで実行できます。


Browser browser = new Browser(this, SWT.NONE);
URL url = getClass().getResource("test.html");
browser.setUrl(url.toString());
browser.execute("test()");


さらにJavaScript内でwindow.statusに値を設定すると,そのイベントをJavaで拾って値を取得できます。それにはこんな感じでリスナを設定すればOK。


browser.addStatusTextListener(new StatusTextListener() {
public void changed(StatusTextEvent e) {
// JavaScriptで設定した値を表示する
System.out.println("window.status=" + e.text);
}
});



これで何かうれしいかというと,画面デザインをHTML+CSS+JavaScriptで出来るようになるからです。SWTはけっこう色々出来るんですが,やっぱり細かいデザインに拘りだすとSWTだけでやるのは難しい。新しい画面部品を作ったりしなくちゃいけなくなって面倒くさいです。

そういう場合にはHTMLとJavaScriptでガーっと作っちゃうことが出来ます。しかもコンパイル無しであとから変更可能!

前にprototype.jsの練習をしましたが,今になって役に立ってきてます。あとScript.acuo.usとか使うとデザインの幅が出てきて良い感じになります。

ということで,クライアントアプリでBrowserウィジェットを使うと,工期が短くて忙しいときでも,わりと簡単に画面が作れるよという話しでした。




ついでにBrowserウィジェットでちょっと嵌ったこともメモ。上でtest.html内のtest()関数を呼び出すサンプルを出したけど,Browserウィジェットからは外部JavaScriptファイルで定義された関数は呼び出せないみたい。

つまりtest.js内でtest()関数が定義されていて,そのtest.jsをtest.htmlが読み込んでいるとする。その場合はbrowser.execute("test()")とやってもtest()関数は呼ばれません。これがバグなのか仕様なのか調べてないけど,まぁそういうことらしい。

2006-04-19

英語の勉強

5月28日に開催されるTOEIC試験に申し込みました。
今年いっぱいは英語をがんばる予定です。

ということで英語の勉強をしなくちゃいけない。まずTOEICの公式ページを調べてみたところ,どうやら5月28日の試験から新方式に変わるみたいです。


新TOEIC(R)テストについて
これは実際のコミュニケーションで必要とされる英語能力を評価するために、より現実に即した状況や設定をテスト上でも再現するというもので、問題文の長文化、発音のバラエティの増加[ 米国・英国・カナダ・オーストラリア(ニュージーランドを含む) ]、誤文訂正問題の削除、などが行われています。


よりコミュニケーション能力を試験するのに合った方式になる模様。良く分からないけど,とりあえずヒアリングを鍛えとけってことで,以下の記事を参考にしてNPRというアメリカのラジオ局のニュースを聞くことにしました。



朝の5分間のニュースが良い感じです。会社までの通勤時間に聞くのにちょうど良いです。いろいろ聞いてみた結果,次の二つの番組を毎朝聞くことに決めました。

    NPR: 10AM ET News Summary
      普通の朝の5分間ニュース。政治とか経済とかスポーツとかいろいろ。
    APM: Future Tense
      テクノロジー関係に絞った五分間ニュース。今日はGoogle Calendarのレビューをやってました。



まだ始めて一週間ぐらいしか経ってないので効果が上がっているか分からないけど,これから毎日続けていく予定です!

2006-04-18

バトンが回ってきた

Laizより妄想バトンというのが回ってきたので答えてみる。


@回答方法:考え込まずに直感的にやってみよう!!
Q1.”水戸”といったら?
黄門さま。

Q2.“朝”といったら?
遅刻しない程度に早く起きたい。

Q3.“チャラララ~”というフレーズで思い出すのは?
チャルメラ?

Q4.“ナベ”といったら?
ナベツネ。

Q5.“南国”といったら?
プライベートビーチでトロピカルフルーツ。

Q6.“光”といったら?
どうもと。

Q7.“ラーメン”といったら?
しょうゆに限る。

Q8.背後で“ドン”と鳴った。さて何があった?
ガバチョかな,小西かな。

Q9.“かぜ”といったら?
今ひいてます。

Q10.“花”といったら?
花男

Q11.“カレー”といったら?
昼飯。食堂でカレーしか食ってねーや。

Q12.“すき”といったら?
きらい。

Q.13.“動物”といったら?
シロクマ。自分的に自然界最萌動物。

Q14.朝起きたら一番嫌いな人になってた。今日一日どうしますか?
何とか好きになれないか努力する。

Q15.“北”といったら?
ちょーせん。

Q16.“ゆき”といったら?
雪だるま。

Q17.“水”といったら?
水泳。

Q18.“美”といったら?
伊藤若冲。

Q19.貴方は桜の花です。見ている人に一言。
「もっと見て!」

Q20.“イロ”といったら?
黄色。

Q21.“夜”といったら?
あと10時間ぐらい長くなって欲しい。

Q22.“男”といったら?
仲間。

Q23.“むし”といったら?
カブトムシ!

Q24.“氷”といったら?
ハネが多くて書道教室でよく直された。



なんだかこのバトンの狙いが良く分からないけど,とりあえず答えてみた。他の人に回さなきゃならないらしいけど,このブログを見た人はご自由に答えてみてください。それがバトン2.0だ! とか言ってみる。






関係ないけど,Laizのブログにコメント書こうとするとスパム判定されてしまうので,「就職おめでとう!」とこっちに書いとく。