Google Web Toolkit(GWT) 2.0入門チュートリアル日本語訳:8.GWTアプリケーションのコンパイル

Google Web Toolkit(GWT) 2.0の入門チュートリアルのリスト

スタート ガイド
1.GWT プロジェクトの作成-1
1.GWT プロジェクトの作成-2
2.アプリケーションの設計
3.ユーザー インターフェースの構築-1
3.ユーザー インターフェースの構築-2
3.ユーザー インターフェースの構築-3
4.クライアントのイベントの管理-1
4.クライアントのイベントの管理-2
5.クライアント機能のコーディング-1
5.クライアント機能のコーディング-2
5.クライアント機能のコーディング-3
6.GWT アプリケーションのデバッグ
7.スタイルの適用-1
7.スタイルの適用-2
7.スタイルの適用-3
7.スタイルの適用-4
8.GWTアプリケーションのコンパイル

前回はGoogle Web Toolkit(GWT) 2.0の入門チュートリアルの日本語訳(7-4)です。

今回は「8.GWTアプリケーションのコンパイル」です。

http://code.google.com/intl/ja/webtoolkit/doc/latest/tutorial/compile.html

始まる前に、まず、お断りを…。

私は英語のネイティブでも日本語のネイティブでも、プログラミング言語のネイティブでもないので、私が訳したモノの正確性に関しては、全く責任を持ちませんし、これらのドキュメントによって、何かの損害を被ても、やっぱり何一つ責任を持つことが出来ませんので、読みに来られた方、すべて自己責任でお願いします。

GoogleののGWT規約によれば、GWTはGoogle製のサンプルなども含めて、著作権に関してはApache 2.0のライセンスを利用していますし、グーグルのチュートリアルについても、「クリエイティブ・コモンズの表示 3.0 ライセンス」でライセンスされていますので、翻訳しても、出典を知らせれば特に問題がないと認識しています。もし著作権法などに対し、何か問題がありましたら、ぉぅぇぃまでお知らせして頂けましたら、素早く適切に対処致します。

日本語訳なんですが、適宜にコメント、いわゆる「訳注」的なモノも入れます。訳注は(*…)のように表記します。可能な限りオリジナルとの区別をつけますし、間違いが出ないように注意しますが、漏れ・誤りがありましたらごめんなさい。

最後に、基本的にぉぅぇぃはEclipseを使っていますので、申し訳ございませんが、Eclipseと全く関係ない部分は飛ばすつもりです。

ステップ8:GWTアプリケーションのコンパイル

この時点では、あなたはStockWatcher機能要件の初期実装を完成しました。これまでは、StockWatcherを開発モードで実行してきました。開発モードでは、コード変更の影響を即座に確認でき、そしてあなたのIDE(統合開発環境)のデバッグツールを利用できます。StockWatcherをコンパイルした後、プロダクションモードで実行・テストできます。アプリケーションをプロダクションモードで実行する際、アプリケーションはあらゆるブラウザのプラグインやJavaバーチャルマシン(JVM)を必要としない純粋なJavaScriptとして存在します。

このセクションでは、以下のことを行います。

  1. Javaソースコードをコンパイルします
  2. プロダクションモードでStockWatcherをテストします
  3. StockWatcherをウェブサーバーにデプロイ(deploy)します。

そしてこのセクションで遅延バインディング(deferred binding)についても学びます、これはブラウザ(あるいはオプションとして言語など他の要素)に要求されるコードのみを提供するGWTのメカニズムです。

1.JavaからJavaScriptにコンパイルする

JavaソードコードからJavaScriptにコンパイルするために、GWTコンパイラーを利用します。

StockWatcherアプリケーションをコンパイル(Eclipseの場合)

  1. パッケージ・エクスプローラで、StockWatcherプロジェクトを選択します。
  2. ツールバーから、「GWTコンパイル・プロジェクト
    GWT コンパイル・プロジェクトボタン

    」を選びます。

  3. コンパイルのオプションを確認し、コンパイルボタンをクリックします。

Eclipseのコンソールで、GWTコンパイラの出力を確認できます、たとえばこんな感じ。

Compiling module com.google.gwt.sample.stockwatcher.StockWatcher
Compiling 6 permutations
Compiling permutation 0…
Compiling permutation 1…
Compiling permutation 2…
Compiling permutation 3…
Compiling permutation 4…
Compiling permutation 5…
Compile of permutations succeeded
Linking into /Document/workspace/StockWatcher/war/stockwatcher.
Link succeeded
Compilation succeeded — 32.905s

StockWatcherアプリケーションをコンパイル(Eclipseの場合)
(*省略します)

プロダクションモードでテストします

アプリケーションがコンパイルされた後、新しいブラウザウィンドウでStockWatcher.htmlを開けば、プロダクションモードとして実行できます。StockWatcherは開発モードと同じ外観と振る舞いになっています。両者の本当の違いは隠蔽されています。現在StockWatcherとインタラクトをする時、JVM内Javaバイトコードとしてではなく、ブラウザ内のJavaScriptとして実行されます。

ヒント:既に開発モードサーバを起動した場合、(コンパイルの後に)アプリケーションをロードする前に、URLからgwt.codesrvパラメータを削除することで、アプリケーションをプロダクションモードで実行できます。

アプリケーションをウェブサーバーにデプロイ(deploy)します。

この時点で、出力ディレクトリのファイルをアップロードすることで、StockWatcherを公開ウェブサーバにデプロイ(depoly=配置)できます。初期バージョンでは、何かの方式でサーバーとコミュニケーションすることがありません;従いまして、ウェブサーバー側に何らか特別なことをやる必要が全くありません。静的ウェブページを提供できるなら、どんなサーバーでもうまく稼働します。

コンパイルの出力

GWTコンパイラに生成されたファイルを確認してみましょう。それらは出力ディレクトリ「StockWatcher/war/stockwatcher」にあります。こんな感じのファイル群を確認できます。

0A9476898799A150D840F0B1C3672921.cache.png
22DDC9A8C788BFBCEEEAA734857E3059.cache.html
396F806CD63ABD414BFBB9D57429F05B.cache.png
6ABCE431DC27AE00CB8C17C5733C2DE7.cache.html
6F932480CC748B4E76F4459CA37673F9.cache.html
B8C926AAD169CD6635C4A89C53DD6320.cache.html
DF7764EEC1903CD03C9545B354D8D8E4.cache.png
E44767377485D18D6B6864F65BA8EF73.cache.png
EA2171DAFBE55EFA551D710B6E5B8E2C.cache.html
EDC7827FEEA59EE44AD790B1C6430C45.cache.png
clear.cache.gif
gwt
hosted.html
stockwatcher.nocache.js

StockWatcher/warに含まれる静的リソーソ(HTMLホストページ、スタイルシート、画像ディレクトリ)に加えて、ファイル名にGUID(*Globally Unique Identifier=グローバル一意識別子「0A9476898799A150D840F0B1C3672921」のような感じのもの)が含まれているファイルを注意してください。これらのファイルはStockWatcherの複数種類のJavaScript実装を含めています。GWTはあなたのアプリケーションのために複数の実装、サポートされる各ウェブブラウザに独自な順列を生成します。

遅延バインディング(deferred binding)でランタイムを最適化

実行時、GWTは遅延バインディング(deferred binding)と呼ばれるメカニズムで、各エンドユーザのブラウザのための正しい順列をロードします。遅延バインディングはユーザが必要とするコード以外のものを提供しません。遅延バインディングの利点は?各順列はウェブブラウザの特質やバグの中に仕立てられて実行されていますので、遅延バインディングを利用することで、

ユーザにとって速い
アプリケーションは必要無いバイトをダウンロードしません。アプリケーションはブラウザを見極める必要もないし、あるいは何れのブラウザのために複数のバージョンを提供する必要もありません。
あなたにとって速い
GWTは何れのブラウザのための正しいJavaScriptを生成しますので、ブラウザ間の違いのために時間を費やする必要がありません。

ブラウザの検出のほか、遅延バインディングは好きなだけの他の変数のために、独自のバージョンを生成することも出来ます。最も一般的な例は国際化です。遅延バインディングを使うことで、GWTは各言語のために、アプリケーションの異なる実装を生成します、さらに例えば、英語を使う人は、フランス語のテキストをダウンロードする必要がありません(逆の場合も同じ)。

GWTアプリケーションの国際化(*英語です)のチュートリアルでこれを自ら試すことが出来ます。

(*ここらへんは翻訳しにくいので、ちょっと説明します。簡単に言えば、GWTはサポートされた個々のブラウザのために、適切なJavaScriptを別々に生成してくれます。ユーザは不必要なコードをダウンロードしなくでもよいので操作が高速、開発者はブラウザ間のHTMLの解釈の違いのために、コードレベルでイチイチ対応しなくでも良いので開発が速い…だそうです。そしてブラウザ間だけではなく、例えば言語間の違いにも同じ仕組みを利用出来ますので、多言語対応のアプリケーションが作りやすい、とのことです。)

次回は?

この時点では、あなたは開発モードとプロダクションモードの両方でStockWatcherをテストしました。今なら、クライアント側の機能のみを実現するGWTアプリケーションを開発方法について、最初から最後まで、結構よく理解しているはずです。

初期実装を基づいてStockWatcherを構築し、更にGWTの他の機能を学ぶために、下記のチュートリアルから選んで下さい。

(*全部英語です)

  • GWTアプリケーションの国際化
  • GWT RPCでサーバーとコミュニケーションする
  • HTTPでJSONデータを利用する
  • Junitでユニットテストをする
  • Google App EngineでGWTアプリケーションを実行する

GWTチュートリアルの日本語訳はとりあえずはこれで一段落です。

約一ヶ月強の時間でやりましたが、速いのか遅いのか、結構微妙ですね。

飛ばし読みよりも、一文一句読んで、翻訳していくのは、全然理解度が違いますね。

あらためて色々確認できました。

これからの予定ですが、学校も始まりますし、

ちょっと忙しくなる時期に入ります。

とりあえず一息ついて、時間の余裕が出来ましたら、

GWTなり、GAE/Jなり、

面白いと思ったグーグルモノを遊んでいきたいと思います。

まずは一つ何かのアプリケーションを作りたいな〜っと思っているところです。

comments

夜型生活・昼型生活・エコな生活には、ぉぅぇぃ版

castor先生の「エコな生活には☆」シリーズに触発され、

ぉぅぇぃはこの類の話のプロではありませんが、少々素人目の考えをまとめてみます。

エネルギーの消費量(節約量?)と時間帯の関係について、

考えるべきポイントは二つあるかと思います。

一つはエネルギーの「生産」で、もう一つはエネルギーの「消費」です。

エネルギーの生産に関して、

主に電気と、電気以外のエネルギーの二種類に分類出来ます。

どんな基準で分けたかというと、生産された後、

貯蓄しにくいのは電気で、その他のガスや灯油、ガソリン類は貯めやすいのですね。

技術的なことはよくわかりませんが、

ガスや灯油、ガソリンなどはタンクなどに貯めたら、

そう簡単に目減りしませんが、電気の場合はそうには行かないらしい。

しかし、発電機は一度起動したら、

継続的に電気が作られる…のような仕組みになっているようです。

無論、微調整は出来るだろうけど、そうダイナミックに変更できません。

電気作られたら、早めに使ってもらったほうが良さそうです。

昼も夜も発電していますが、一般的に昼はビジネス活動が活発的に行われ、

会社も学校も工場も朝から夕方がもっとも多く電力を使っています。

深夜は比較的に「エネルギーが余っている」とされていますので、

電気会社は、いわゆる「深夜割引」などを行って居ます。

それを狙って、深夜の電気でお湯を沸かす…といった光熱費削減に繋がる

「深夜電気温水器」などの商品もあります。

従いまして、電気に限って言えば、昼夜などを明確に分けずに、

出来る限り電気の利用をフラットにしたほうが、

全体的に効率が上がるらしい。

従いまして、同じ長さの活動時間ならば、

「集中」よりも「分散」が望ましい…かもしれません。

但し、太陽光発電が進むと、

もしかしたら昼間のほうが電気供給が比較的に多くなりますので、

昼間中心の活動が有利かもしれません。

風力発電とかの場合は、昼夜の差があるかどうか分かりませんが。

電気以外のエネルギーに関しては、生産側の都合にそれほど左右されませんので、

いつ利用するかについてはあんまり差がないかもしれません。

次に、時間帯別のエネルギーの「消費」ですが、

これは主に「照明」と「空調」に分けたらよいかと思います。

「照明」について、昼間は夜間よりも明るいのですが、

室内で自然光を頼ってどれくらい活動できかというと、これは結構微妙で、

「読む」ことが必要とする多くのオフィスや学校など、照明を付けています。

室内に関しては、昼間も夜間も、

照明に使うエネルギーはそれほど差がないかもしれません。

但し、室外の活動なら結構差があるかと思います。

例えば車・船・電車などなら照明を付けなければなりません。

野球のナイトゲームもかなり大量の電気を使っているという噂です。

従いまして、エコな生活をするために、

室外の活動をできるだけ昼間でやったほうが良さそうですね。

「空調」についてですが、これはシーズンによって結構差があるかと思います。

空調というのは、快適な環境を整えるために、

空気を「冷やす」と「温める」の二種類があります。

で、一般的に夜の温度が低く、昼の温度が高いので、

「温める」必要のあるシーズン、つまり冬期だと、

室内の環境を快適にするために、時間あたりのエネルギー消費は、

「昼間<夜間」ですね。

例えば、同じく24度まで温めるために、外気温が低い夜よりも、

外気温が比較的に高い昼のほうが、消費エネルギーが少ない…ということです。

逆に、「冷やす」必要のあるシーズン、つまり夏期だと、

室内の環境を快適にするために、時間あたりのエネルギー消費は、

「夜間<昼間」になります。

そう考えますと、「エコな生活」のために、

冬は「早寝早起」、夏は「遅寝遅起」が一番論理的かもしれません。

が、季節によって生活時間を劇的に変えるのは、

多分健康にかなりよくありませんので、

そうシーズンによって変わることは出来ませんね。

で、実に言うと、以上の考察は四季がハッキリしている日本の天候に基づいた考えであり、

地域の緯度によって、かなり話が変わったりします。

例えばぉぅぇぃ出身の台湾は日本より緯度が低い。

南回帰線が通過していますので、全体的に「暖かい」。

というか、「暖房なにそれ?食べれる?」って感じとも言えなくもありませんので、

「空調」と言えば、ほぼ「冷やす」専門になります。

何かしらの活動を行うのは、昼間を避けたほうが良いのですね。

昔の人の知恵では、朝4時から7時まで農作業をして、

そして7時以降はその他の室内でも出来る仕事をして、

そして午後3時過ぎたら、残った農作業を片付ける…ようになっています。

まあ、熱帯・亜熱帯の地域の人のライフスタイルですね。

ノルウェイとか、ロシアとかなら、空調と言えばほぼ「温め」専門なので、

エネルギー効率を考えますと、

できるだけ昼間の時間で色々活動したほうが良さそうですね。

と、まあ、素人目で時間帯別の省エネについて色々考えてみました。

エネルギーについて研究されている方なら、

もうちょっと論理的な話が出来るかもしれませんが、

社会科学をやっているぉぅぇぃはこれくらいが精一杯ですね。

昔どこかで聞いた話ですが、どこかの自動車メーカーは、

「環境・エコを考えると、人は娯楽としてドライブは許されるか?」について、

調査を行ったことがあるらしい。

外部環境や新しい科学技術によって、常識は結構変わったりしますので、

もしかしたら、「何がエコ?」についても、同じことが言えるかもしれません。

健康のことを考えましたら、

「早寝早起がイチバン」というのは共通の結論の一つだけどね。

まあ、人の嗜好の多様化が進んでいるこの時代、

極端に走らず、中庸に保つのが一番社会全体にとって、

もっとも理想であると言えるかもしれません。

comments

今日は大学院のオリエンテーション

さくらが咲く頃に、アレがやってきます。

アレって?

いや、まあ、新入生ですね、大学院の。

そうじゃなくでも、この季節は何かとイベントごとが多いのですが、

今日はその第一弾(?)の、「オリエンテーション」です。

オリエンテーションとは?まあ、新参の方々への説明会ですね。

例のごとく、午前は事務の方が色々勉学の心構えや規則を説明し、

午後は教員らによる履修指導…といった流れに成っています。

ぉぅぇぃもここらへんは慣れてきていましたので、サクサクっと進んでもらいました。

バイトの時間の調整が済んでない学生も居まして、

全員履修登録完了…とは行きませんが、方向性などは全員定めましたので、

期日まで問題なく履修登録出来るでしょう。

まあ、とりあえずオリエンテーションの一回目はこれで無事終了です。

実に言うと、これからはもっともフォーマルなイベントの入学式、

そしてもう一度歓迎会に近いオリエンテーションがあります。

次会う時、新入生の方々の顔を覚えていたらいいな〜

comments

エイプリルフール2010

(*良いネタを思いつかないので、去年のエイプリルフール記事を再利用します…。)

エイプリルフール (April Fool’s Day) とは、毎年4月1日には嘘をついてもよい、という風習のことである。ただし人をからかうような、害のない嘘に限られる。英語のエイプリルフールは、4月1日に騙された人を指す。
by Wikipedia

仏教では、五戒(信者が守るべき基本的な五つのこと)の中に、

「不妄語戒」=「うそをついてはいけない。」があります。

キリスト教でも、「神は嘘をつかない」「神に嘘をついてはいけません」などがあります。

宗教に限らず、多くの文化では、

「嘘はついてはいけない」と伝えておりますし、

ほとんどの国の教育でも、小学校から「嘘をついてはいけない」と教えています。

そして、どうやら毎日本当のことを言い続けると、

地球人にとってはストレスになるらしい。

まあ、地球人だけではなく、宇宙人も火星人も時には嘘をつきたい時があるかもしれません。

というわけで、唯一ウソをついてもいい日を4月1日と定めました。

ちなみに、中国語ではエイプリルフールは愚人節と言います、

「愚人(おバカさん)」の日ではなく、「愚(バカにする行為)」「人(対象)」の日、

つまり、「人をバカにしても良い日」という意味です。

が、それでも、地球人というの4月1日に限らず、

真実ではないことを言ってしまう生き物…らしい。

ここでは、主体を特定せずに、

よく言われているウソをいくつか列挙して、

ここに集まるウソ鑑賞家の皆さんと一緒に楽しみたいと思います。
(*下記の例に、真実の場合も無論ありますので、ご注意ください。)

普通のタレント:
違います、仲の良い友人です。

普通の親:
お年玉、ちゃんと貯金しようね。大人になったら返してあげるから。

普通の優等生:
いや~全然勉強しなかったよ。全部勘ですよ、勘。

普通の出かける前の化粧をしている女性:
スグ終わるから、あとちょっとだけ待って~

普通の量販店:
出血大サービス、赤字覚悟!

普通の政治家台湾のダイエットエステサロン:
Trust me, you can make it!
(トラストミー、あなたなら出来るわ!)
http://www.trustme.com.tw/

普通の新型インフルエンザ:
俺、超強いし!

婚活センター:
ウチ、お見合いと違うし!

普通のオンラインサービス:
お金払えば無料!

怪しい子供:
お小遣いを貰ったことは全く知りませんでした!

怪しいウェブサイト:
本サイトは完全無料である!

怪しい株式会社:
本社の決算は粉飾ではありません!

怪しい政治家:
すべて秘書の独断でやりました、ボク全然知らないよ!

怪しいお店:
明瞭会計、追加料金ナシ!

怪しいオレ:
オレだょ。交通事故を起こしてしまった、相手は妊婦で流産させてしまった、今スグ示談金をこの銀行口座に振り込んで欲しい。

       了

comments