月別: 2011年7月

Unit Testing GWT Applications with JUnit

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


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

  JUnitを使用したGWTアプリケーションのユニットテスト

この時点で、あなたはStockWatcherアプリケーションの最初の実装を作成済みで、それはかなり安定しているようです。
コードベースが進化した時、あなたはどうやってあなたが既存の機能を駄目にしていないと保証出来ますか?その解決法はユニットテストをすることです。 良いユニットテストケース群を作成することはアプリケーションのライフサイクル上でその品質を保証するのに重要な部分です。
あなたのテストしようとする試みを助けるために、GWTはオープンソース JUnit テスティングフレームを伴うインテグレーション(組込み)を提供します。開発モードとプロダクションモードの両方で走らせることが出来るユニットテストを作成することが出来ます。
このセクションでは、StockWatcherプロジェクトへJUnit ユニットテストを追加します。
  1. StockWatcher用のJUnitテストクラスとテスト実行用スクリプトの作成
  2. ユニットテストを走らせる
  3. ユニットテストを書く
  4. ユニットテストで識別された問題を解決する
Note: JUnitテストの幅広いガイドはJUnit Testingを見てください。

 始める前に

StockWatcher プロジェクト

このチュートリアルはGWTの概念とBuild a Sample GWT Application チュートリアルで作成した
StockWatcherアプリケーションを基にしています。 もしGWTアプリケーション作成チュートリアルを
終えておらずGWTの概念がある程度わかっているなら(慣れ親しんでいるなら)、
ここでStockWatcherプロジェクトをコードとしてインポートすることが出来ます。 
  1. StockWatcher projectをダウンロードします。
  2. ファイルを解凍します。
  3. エクリプスへプロジェクトをインポートします。
    1. ファイル メニューから、インポートメニューオプションを選択します。
    2. [一般]-[既存プロジェクトをワークスペースへ]を選択します。次へ(N)ボタンをクリックします。
    3. [ルート・ディレクトリーの選択(T)]でブラウズしStockWatcherのあるディレクトリ
      (ファイルを解凍した場所から)を選択します。完了(F) ボタンをクリックします。
antを使用している場合は、StockWatcher/build.xmlの何処にGWTを解凍したかを指す
 gwt.sdk プロパティを編集します。

antを使用している場合は、システム上のJUnitの場所を指し示すためにpath_to_the_junit_jarへの全ての参照を
置き換えてください。

Note: サンプルGWTアプリケーションの構築を完了していて、webAppCreatorで-junit オプションを指定していない場合は、作業を継続する前にStockWatcher/build.xml内のjavac.teststest.devtest.prod, test ターゲットをアンコメント化して、システム上のJUnitの場所を指し示すために path_to_the_junit_jar への全ての参照を置き換えてください。

 1. JUnitテストの作成

 -junit オプションを指定した時、webAppCreatorはJUnitテストの開発を開始するために必要な全てのファイルを作成しました。(※時制が過去?) webAppCreatorはスターターテストクラス、コマンドラインからテストを実行するantターゲットを生成し、Eclipse用の構成ファイルを起動します。
GWT2.0から、以前のコマンドラインツールjunitCreatorはwebAppCreatorに統合されました。
Eclipseで、test/ ディレクトリを展開することによってStockWatcherTestクラスまで移動します。
既存のアプリケーションへJUnitテストを追加する場合、あなたのEclipseプロジェクト内にソースフォルダとして test/ ディレクトリを追加し、既存のJUnitライブラリへの参照を含むためにビルドパスを更新する必要があります。
screenshot: JUnit tests in Package Explorer

テストクラスの試験する: StockWatcherTest.java

StockWatcherTest.javaの内部を見てください。このテストクラスはStockWatcher/testディレクトリ以下のcom.google.gwt.sample.stockwatcher.clientパッケージ内に生成されます。(※was?) 
このクラスにStockWatcher用のユニットテストを書きます。現在、単一の簡単なテストが含まれています: testSimple メソッド
  1. StockWatcherTest.java ファイルを開きます。
    package com.google.gwt.sample.stockwatcher.client;

    import com.google.gwt.junit.client.GWTTestCase;

    /**
    * GWT JUnit tests must extend GWTTestCase.
    */
    public class StockWatcherTest extends GWTTestCase { // (1)

    /**
    * Must refer to a valid module that sources this class.
    */
    public String getModuleName() { // (2)
    return "com.google.gwt.sample.stockwatcher.StockWatcher";
    }

    /**
    * Add as many tests as you like.
    */
    public void testSimple() { // (3)
    assertTrue(true);
    }

    }

Notes

(1) 全てのGWT JUnitテストケースのように、 StockWatcherTest クラスはcom.google.gwt.junit.clientパッケージ内のGWTTestCase クラスをextendします。
このクラスをextendすることによって追加のテストケースを作成することが出来ます。
(2)StockWatcherTestクラスはGWTモジュールの名前を返さなければならない抽象メソッド(getModuleName)を持っています。
StockWatcherでは、それは”com.google.gwt.sample.stockwatcher.StockWatcher”です。
(3)StockWatcherTestクラスは簡単なテストケース(トートロジカルテスト testSimple)と共に生成されます。 このtestSimpleメソッドはGWTTestCaseクラスの祖先であるJUnitAssertクラスから継承した多くのassert〜 メソッドの一つを使用します。assertTrue(boolean)メソッドは渡されたブーリアン引数をtrueと評価するアサートをします? そうでなければ、JUnit内で実行した時にtestSimpleテスト失敗するでしょう。

※トートロジー… 変項の値のいかんにかかわらず、常に真であるような論理式。(トートロジー)
この場合だとassertTrue(true);の部分を指している?


アサートアサーション

 2. ユニットテストを実行する

あなた自身のStockWatcher用のユニットテストを書き始める前に、テスト環境のコンポーネントが適切であることを確認してください。スターターテスト testSimpleを実行するStockWatcherTest.javaを走らせることによってその確認は出来ます。
四つの方法でJUnitテストを走らせることが出来ます:
  • コマンドラインから—junitCreatorによって生成されたスクリプトを使用します。
  • Eclipseで—Google Plugin for Eclipseを使用します。
  • Eclipseで—webAppCreatorによって生成されたEclipseの起動構成ファイルを使用します。
  • 手動テストモードで

コマンドラインから

GWT webAppCreatorによって生成されたbuild.xmlファイルはテストのために使用される生成された三つのターゲットを含みます:
  • test.dev
    開発モードで全てのテストクラスを走らせます。
  • test.prod
    プロダクションモードで全てのテストクラスを走らせます。
  • test
    test.devとtest.prodの両方を走らせます。
Note: コマンドラインからテストを走らせるために、システムにJUnitがインストールされている必要があります。StockWatcherプロジェクトをダウンロードしている場合、あなたは最初にbuild.xmlを開き、 /path/to/junit-3.8.1.jar への全ての参照をシステム上のjunitへのパスに置き換えなければなりません。
  1. コマンドシェル上でStockWatcherディレクトリへ移動します。
  2. 開発モードでJUnitテストを走らせます。
    コマンドラインで、 ant test.dev と入力します。
  3. テストはJVM上でJavaバイトコードとして走ります。
    simpleTestはエラー無しで実行されます。
    [junit] Running com.google.gwt.sample.stockwatcher.client.StockWatcherTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 15.851 sec
  4. プロダクションモードでJUnitテストを走らせます。
    コマンドラインで、ant test.prod と入力します。 
  5. テストはコンパイル済みJavaScriptとして走ります。
    simpleTestはエラー無しで実行されます。
    [junit] Running com.google.gwt.sample.stockwatcher.client.StockWatcherTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 37.042 sec

Eclipseで (Google Plugin for Eclipseを使用)(※原文 Pluginプラグインのそういう表記があるのかもしれないが、この場合は不要と考え、gを削除)

Google Plugin for EclipseはEclipseでテストを走らせることを容易にします。
  1. 開発モードでJUnitテストを走らせます。
    パッケージエクスプローラから、走らせたいテストケースを右クリックし、
    実行(R) > GWT Junit を選択します。
  2. simpleTestはエラー無しで実行されます。
    screenshot: JUnit tests in Eclipse
  3. プロダクションモードでJUnitテストを走らせます。
    パッケージエクスプローラから、走らせたいテストケースを右クリックし、
    実行(R) > GWT Junit(production mode)を選択します。
  4. simpleTestはエラー無しで実行されます。

Eclipseで (生成された起動構成を使用)

webAppCreatorによって生成された、開発モード・プロダクションモード両用の起動構成を使用してEclipseでユニットテストを走らせることが出来ます。
  1. 開発モードでJUnitテストを走らせます。
    Eclipseメニューバーから、 実行(R) > 実行構成(N)を選択します。
  2. 「実行構成」ウィンドウで、StockWatcherTest-devを選択します。(※JUnit直下)
  3. Mac OSXを使用している場合は、Java仮想マシンを呼び出すために引数を追加します。
    「引数」タブを表示します。
    “VM引数(G)”に -XstartOnFirstThread -Xmx256M と入力します。
    引数の変更を保存するために”適用(Y)“ボタンを押下します。
    テストを実行するために”実行(R)“ボタンを押下します。
  4. simpleTestはエラー無しで実行されます。
    screenshot: JUnit tests in Eclipse
  5. プロダクションモードでJUnitテストを走らせます。
    Eclipseメニューバーから、 実行(R) > 実行構成(N)を選択します。
  6. 「実行構成」ウィンドウで、StockWatcherTest-prodを選択します。(※JUnit直下)
  7. Mac OSXを使用している場合は、Java仮想マシンを呼び出すために引数を追加します。
    「引数」タブを表示します。
    “VM引数(G)”に -XstartOnFirstThread -Xmx256M と入力します。
    引数の変更を保存するために”適用(Y)“ボタンを押下します。
    テストを実行するために”実行(R)“ボタンを押下します。

    At VM argument, enter -XstartOnFirstThread -Xmx256M

  8. simpleTestはエラー無しで実行されます。

 手動テストモード

ユニットテストを実行するブラウザを選択したい場合は、手動テストモードを使用します。手動テストモードでは、JUnitShellのmainクラスは通常通り指定したGWTモジュール上で走りますが、直ちにテストを走らせる代わりにURLを出力してブラウザが接続するのを待ちます。このURLをあなたの選択したブラウザへ手動でカット&ペーストして、ユニットテストをそのブラウザ内で走らせることが出来ます。
詳細: 手動モードでユニットテストを走らせる方法を学ぶには開発者ガイドのCreating a Test Caseを見てください。

 3. ユニットテストを書く

実際のテストシナリオで出来るだけ多くのStockWatcherの挙動を確認したいでしょう。あなたは幾つものStockWatcherクラス用のユニットテストを追加することが出来ます。publicメソッドの形式で各テストを書くことが出来ます。
多数のテストケースを持っている場合、異なるテストクラスにグループ分けすることによってテストケースを編成することが出来ます。
しかしながら、GWTでのJUnitテストのセットアップの手順を学ぶために、このチュートリアルでは一つのテストを書き、それを走らせます。
  1. StockPriceクラスのコンストラクタが正しく新しいオブジェクトのインスタンスフィールドにセットされていることを確認するためのJUnitテストを書きます。
    StockWatcherTestクラスへ、以下に示すtestStockPriceCtorメソッドを追加します。
    /**
    * Verify that the instance fields in the StockPrice class are set correctly.
    */
    public void testStockPriceCtor() {
    String symbol = "XYZ";
    double price = 70.0;
    double change = 2.0;
    double changePercent = 100.0 * change / price;

    StockPrice sp = new StockPrice(symbol, price, change);
    assertNotNull(sp);
    assertEquals(symbol, sp.getSymbol());
    assertEquals(price, sp.getPrice(), 0.001);
    assertEquals(change, sp.getChange(), 0.001);
    assertEquals(changePercent, sp.getChangePercent(), 0.001);
    }
  2. 開発モードでStockWatcherTestを再び走らせます。
    どちらのテストもパスするはずです。
    [junit] Running com.google.gwt.sample.stockwatcher.client.StockWatcherTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 16.601 sec

 4. ユニットテストで識別された問題の解決

ユニットテストが失敗した場合に何が起こるかを見るために、Build a Sample GWT Applicationチュートリアルで修正した計算バグを再導入します。 当初、変動のパーセンテージはgetChangePercentメソッドで正しく計算されていませんでした。ユニットテストを失敗させるために、このコードを再び壊します。
  1. StockWatcherへバグを導入します。
    StockPrice.javaで以下でハイライトされている部分の変更を行います。
    public double getChangePercent() {
    return 10.0 * this.change / this.price;
    }
  2. 開発モードでStockWatcherTestを走らせます。 (Eclipseまたはコマンドラインのどちらかで)
    JUnitは失敗したテストケースを識別します。 (testStockPriceCtor).
    (Eclipseで走らせた場合の出力結果)
    screenshot: JUnit tests failed
    …そして結果である例外(AssertionFailedError)のフルスタックトレースを提供します。
    (コマンドラインから走らせた場合の出力結果)
    Testsuite: com.google.gwt.sample.stockwatcher.client.StockWatcherTest
    Tests run: 2, Failures: 1, Errors: 0, Time elapsed: 16.443 sec

    Testcase: testSimple took 16.238 sec
    Testcase: testStockPriceCtor took 0.155 sec
    FAILED
    Remote test failed at 172.29.212.75 / Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
    expected=2.857142857142857 actual=0.2857142857142857 delta=0.0010
    junit.framework.AssertionFailedError: Remote test failed at 172.29.212.75 / Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
    expected=2.857142857142857 actual=0.2857142857142857 delta=0.0010
    at com.google.gwt.sample.stockwatcher.client.StockWatcherTest.testStockPriceCtor(StockWatcherTest.java:38)
    at com.google.gwt.sample.stockwatcher.client.__StockWatcherTest_unitTestImpl.doRunTest(__StockWatcherTest_unitTestImpl.java:7)
    ...
    Note: コマンドラインから走らせる場合、テスト完了レポート(スタックトレースを含む)は、開発モードテスト用はreports/htmlunit.dev/ディレクトリ、プロダクションモードテスト用は reports/htmlunit.prod/ディレクトリに置かれます。
  3. エラーを訂正します。
  4. テストを再び走らせます。
    両方のJUnitテストは再び成功裡に完了するはずです。
    [junit] Running com.google.gwt.sample.stockwatcher.client.StockWatcherTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 16.114 sec
ベストプラクティス: JavaScriptへコンパイルした場合とJavaバイトコードとして走っている場合とで、GWTアプリケーションの動き方で微妙な違いが存在し得るので、アプリケーションを開発している時は開発モードとプロダクションモードの両方でユニットテストが走ることを確認してください。しかし、プロダクションモードで走らせた時にテストケースが失敗する場合、開発モードで見た完全なスタックトレースを取得しないことに気づいていてください。

 テストについて

この時点で、StockWathcer用のJUnitテストを作成し、簡単なテストケースを追加しています。 
GWTでのユニットテストの全種類についてより詳しく学びたいならば、開発者ガイドを見てください:

Internationalization

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


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

 GWT アプリケーションの国際化

この時点で、あなたはStockWatcherアプリケーションの最初の実装を作成済みです。
このチュートリアルでは、StockWatcherのユーザーインターフェイスをドイツ語に翻訳することによって、アプリケーションに他の言語とデータフォーマット をサポートさせるようにする方法を学びます。  具具体的にあなたがすることは:
  1. 国際化手法の選択
  2. サポートする各言語の翻訳を作成することによるStockWatcherの国際化
  3. コンテキスト(ロケール)に適切な翻訳を選択することによるStockWatcherのローカライズ
Note: GWTアプリケーションの国際化についての幅広いガイドについては、Internationalizationを見てください。

 始める前に

StockWatcher プロジェクト

このチュートリアルはGWTの概念とBuild a Sample GWT Application チュートリアルで作成した
StockWatcherアプリケーションを基にしています。 もしGWTアプリケーション作成チュートリアルを
終えておらずGWTの概念がある程度わかっているなら(慣れ親しんでいるなら)、
ここでStockWatcherプロジェクトをコードとしてインポートすることが出来ます。 
  1. StockWatcher projectをダウンロードします。
  2. ファイルを解凍します。
  3. エクリプスへプロジェクトをインポートします。
    1. ファイル メニューから、インポートメニューオプションを選択します。
    2. [一般]-[既存プロジェクトをワークスペースへ]を選択します。次へ(N)ボタンをクリックします。
    3. [ルート・ディレクトリーの選択(T)]でブラウズしStockWatcherのあるディレクトリ
      (ファイルを解凍した場所から)を選択します。完了(F) ボタンをクリックします。
antを使用している場合は、StockWatcher/build.xmlの何処にGWTを解凍したかを指す
 gwt.sdk プロパティを編集します。

 1. 設計

翻訳される必要があるものを決定します…ローカライズ可能なもの

現在の英語インターフェイスのStockWatcherを見ると、ローカライズ可能な2タイプのテキストがあることがわかります: 定数とメッセージ
screenshot: StockWatcher English UI

国際化手法の選択

GWTアプリケーションを国際化(インターナショナリゼーション)する場合、いくつかの手法のうちから一つ選択します。StockWatcherはユーザーインターフェイス内に2,3の定数とパラメータ化された決まったメッセージしか持ちませんので、静的文字列インターナショナリゼーションを使用します。
静的文字列インターナショナリゼーションは実行時にごくわずかなオーバーヘッドしか必要としないので、定数とパラメータ化された決まったメッセージ両方の翻訳に非常に効率的な手法です。
(※原文はinitializationになっていますが、出現回数・前後の文脈から考えて、おそらくinternationalizationが正しいと思われるのでここではそうしています)
更にもっとも実装することが容易な手法でもあります。静的文字列インターナショナリゼーションは 翻訳された文字列とパラメータ化されたメッセージを格納するために標準のJavaプロパティファイルを使用し、これらの値を取得するための型重視のJavaインターフェイスを実装します。

パラメータ化されたメッセージ…SQL等でparameterized query(パラメータ化クエリ、パラメータライズドクエリ)と呼ばれるものがあり、それはSQL文自体は不変でクエリの対象となるパラメータを他で設定しているものらしいので、その流れから考えると、その内容を他(この場合で言うとプロパティファイル)で設定しているメッセージ?

動的文字列インターナショナリゼーションは静的文字列インターナショナリゼーションよりも遅いですが、非常に柔軟性があります。この手法を使用するアプリケーションはモジュールのホストページでローカライズされた文字列を調べます;したがって、新たなロケールを追加した時に再コンパイルをする必要がありません。 GWTアプリケーションを既存のサーバサイドローカライゼーションシステムと統合する必要がある場合、動的文字列インターナショナリゼーションは考慮すべき選択肢です。
ローカライザブルインターフェイス

もっとも力強い手法はローカライザブルインターフェイスを実装することです。ローカライザブルの実装は単純な文字列の代用を越えてローカライズされたカスタムタイプバージョンを作成することを可能にします。これはおそらく頻繁に使用することのない高度な実装手法です。

 2. StockWatcherを国際化する: サポートする言語毎の翻訳の作成

処理概要: 静的文字列インターナショナリゼーション

静的文字列インターナショナリゼーションの為に行う処理は簡単です。
  1. 最初に二つのJavaインターフェイスを実装します:
    • 文字列定数用にGWT定数インターフェイス(StockWatcherConstants.java)
    • パラメータ化されたメッセージ用にGWTメッセージインターフェイス (StockWatcherMessages.java)

    これらのインターフェイスはデフォルトの翻訳を指定するためにアノテーションを指定します。

  2. それから、サポートする新しい言語毎用に、二つのJavaプロパティファイルを作成します:
    • 文字列定数用 (StockWatcherConstants_de.properties)
    • パラメータ化されたメッセージ用(StockWatcherMessages_de.properties)
  3. 最後に、Javaソースコードで全ての手書きされた文字列を適切なインターフェイスを呼び出すメソッドで置き換えます。
Tip: GWT はコマンドラインツール(i18nCreator)を提供します。 これはプロパティファイル内の文字列にアクセスするためのJavaインターフェイスの作成を自動化します。特に再利用したい既存のローカライズされたプロパティファイルがある場合にこのツールは役立ちます。

定数インターフェイスを実装する

最初に各翻訳を保持するプロパティファイルにアクセスするJavaインターフェイス(StockWatcherConstants)を作成します。インターフェイスはデフォルトの翻訳を指定するためにアノテーションを使用します。このインターフェイスはGWT  Constants インターフェイスをインプリメントしています。このインターフェイスは作成するどんなStockWatcherConstants*.propertiesファイルとでもそれ自身の名前によって自動的に結び付けられます。
StockWatcherConstants インターフェイスはプロパティファイル内の各定数用のメソッドを含みます。実行時にこれらのメソッドの一つが呼び出されると、 ロケールが一致するどのプロパティファイルからでも戻り値が返って来ます。 (ロケールを設定する方法はすぐに教えます。)  ロケールがセットされていない場合、StockWatcherはアノテーションによって指定されたデフォルトの翻訳を使用します。例えば、ロケールがGermanにセットされている場合、StockWatcherメソッドはAktieWatcherを返します; ロケールがセットされていない場合、stockWatcherメソッドはStockWatcherを返します。

StockWatcherConstantsを作成する

  1. クライアントサブパッケージ内で、インターフェイスを作成し、StockWatcherConstantsと名付けます。
    エクリプスのパッケージエクスプローラーペインでパッケージを選択します。
    com.google.gwt.sample.stockwatcher.client
    エクリプスのメニューバーから、ファイル(F) > 新規(N) > インターフェイスの順に選択します。
    エクリプスは「新規 Java インターフェイス」ウィンドウを開きます。
  2. 「新規 Java インターフェイス」内を埋めます。
    “名前(M)”には StockWatcherConstantsと入力し、他のフィールドはデフォルトのままとします。
     完了(F)ボタンをクリックします。
    エクリプスはStockWatcherConstantsインターフェイス用のスタブコードを作成します。
  3. スタブを以下のコードに置き換えます。
    デフォルト値をセットするためにアノテーションを使用していることに注目してください。
    package com.google.gwt.sample.stockwatcher.client;

    import com.google.gwt.i18n.client.Constants;

    public interface StockWatcherConstants extends Constants {
    @DefaultStringValue("StockWatcher")
    String stockWatcher();

    @DefaultStringValue("Symbol")
    String symbol();

    @DefaultStringValue("Price")
    String price();

    @DefaultStringValue("Change")
    String change();

    @DefaultStringValue("Remove")
    String remove();

    @DefaultStringValue("Add")
    String add();
    }
実装の注意:GWTは別のインターフェイス(ConstantsWithLookup)を提供します。このインターフェイスは実行時に動的に名前によってローカライズされた文字列を探すメソッドを含むこと以外では定数と似ています。

定数のドイツ語翻訳を作成する

インターナショナル文字セットへのエンコーディングをする

アプリケーションのユーザーインターフェイスを国際化する時に心に留めておいて欲しいことは、サポートしようとしている言語がASCII文字セットに無い文字を含んでいるかもしれないということです。従って翻訳を含むHTMLホストページ(StockWatcher.html)とJavaプロパティファイルの両方で、エンコーディングをUTF-8にセットしなければなりません。
  1. アプリケーションホストページ用のエンコーディングをチェックします。
    StockWatcher.htmlを開きます。
    まだエンコーディングがUTF-8にセットされていない場合は、以下のコードを要素へコピーします。

 StockWatcherConstant_de.propertiesを作成する

  1. クライアント サブパッケージ内で、Javaプロパティファイルを作成します。
    “親フォルダを入力または選択(E)”で以下のフォルダを選択します。
    StockWatcher/src/com/google/gwt/sample/stockwatcher/client
    ファイルネームに以下の値を入力します。
    StockWatcherConstants_de.properties
  2. ファイルのエンコーディングをUTF-8へ変更します。
    ファイルを選択してからエクリプスメニューバーからファイル(F)> プロパティー(R) を選択するか右クリックしてコンテキストメニューからプロパティー(R)を選択します。
    エクリプスはプロパティウィンドウを開きます。
    “テキスト・ファイルのエンコード(T)”で”その他(O):”を選択し、ドロップダウンリストから”UTF-8”を選択します。”適用(A)”ボタンをクリックして変更内容を保存します。
    Note: あなたのエクリプスの設定によっては変更内容を適用する時に、以下の警告を受けるかもしれません: UTF-8 conflicts with the encoding defined in the content type (ISO-8859-1). Do you wish to set it anyway?
    警告を無視して変更内容を適用してください。
  3. ドイツ語ユーザーインターフェイス内の静的文字列用のマッピングを追加します。
    StockWatcherConstant_de.properties ファイルへ以下のテキストをコピー&ペーストしてください。
    stockWatcher = Aktienbeobachter
    symbol = Symbol
    price = Kurs
    change = Änderung
    remove = Entfernen
    add = Hinzufügen
Note: プロパティファイルに接尾辞をつける
あなたが以前にインターナショナリゼーションを扱ったことがない場合、 何故ドイツ語プロパティファイルへ_de接尾辞を付加するのか不思議に思うかもしれません。接尾辞 _deはドイツ語(Deutsch)用の標準言語タグです。言語タグはドキュメントまたはアプリケーションのロケールの省略形です。言語を指定するのに加えて、更にロケールの地域を示す下位タグを含むことが出来ます。例えば、フランス語圏のカナダ用の言語タグはfr_CAです。
GWTではプロパティファイルは(Javaリソースバンドルのように)言語コード接尾辞でロケールを示します。デフォルトロケール用のプロパティファイルは例外です。実行時に特にロケールがセットされていない場合は、言語コード接尾辞がないプロパティファイルが使用されます。StockWathcerではデフォルトプロパティファイルを使う代わりにアノテーションでデフォルトの翻訳を指定しています。

メッセージインターフェイスを実装する

最初に、Javaインターフェイス(StockWatcherMessages)を作成します。これはパラメータ化された各メッセージの翻訳を保持するプロパティファイルにアクセスします。このインターフェイスはGWT Messages インターフェイスをimplementsします。 StockWatcherConstants インターフェイスと異なり、このインターフェイスのメソッドはパラメータを包含します。これらのメソッドを呼んだ場合、渡した引数はプロパティファイルの文字列内に残したプレースホルダーに置き換えられます。このインターフェイスはどんなStockWatcherMessages*.propertiesファイルでもそれ自身の名前によって自動的に結び付けられます。

データフォーマットを国際化する

パラメータ化されたメッセージはアラートとエラーメッセージをポップアップすることを制限されません。レーベルウィジェットへテキストをセットしたアプリケーション内のどんな場所でもパラメータ化されたメッセージとなる可能性はあります? 例えば、StockWatcher内のタイムスタンプはパラメータ化されたメッセージです;日付の値を渡すだけでなく、ロケールによってデータフォーマットを変更することも出来ます。
  1. クライアントサブパッケージで、インターフェイスを作成してStockWatcherMessagesと名付けます。
  2. 以下のコードをスタブと置き換えます。
    package com.google.gwt.sample.stockwatcher.client;

    import com.google.gwt.i18n.client.Messages;

    import java.util.Date;

    public interface StockWatcherMessages extends Messages {
    @DefaultMessage("''{0}'' is not a valid symbol.")
    String invalidSymbol(String symbol);

    @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
    String lastUpdate(Date timestamp);

    }

パラメータ化されたメッセージを初期化する時のTips

引数の番号を指定する
メッセージ文字列全てはメッセージ文字列に埋めこまれた{0}を持つことに注意してください?これらは実行時にStockWatcherMessagesインターフェイスメソッドへ渡された引数によって置き換えられるプレースホルダーです。 
一つ以上の引数を必要とする文字列の場合、シーケンシャルにプレースホルダーに番号をつけてください。
例えば: myString = First parm is {0}, second parm is {1}, third parm is {2}.
引用符(‘)で囲まれたテキストの処理
メッセージがシングルクォート(‘)が含んでいる場合(StockWatcher内のメッセージの多くは含んでいます?)、Javaプロパティファイル内でそれらを2連続のシングルクォートに置き換える必要があります。通常、GWT メッセージ用のフォーマットルールはJavaの MessageFormat クラスへ適用されるものと同じです。

パラメータ化されたメッセージのドイツ語翻訳を作成する

  1. Javaプロパティファイルを作成します。
    “親フォルダを入力または選択(E)”で以下のフォルダを選択します。
    StockWatcher/src/com/google/gwt/sample/stockwatcher/client
    ファイルネームに以下の値を入力します。
    StockWatcherMessages_de.properties
  2. ファイルのエンコーディングをUTF-8へ変更します。
  3. 英語ユーザーインターフェイス内のパラメータ化されたテキスト用のマッピングを追加します。
    StockWatcherMessages_de.properties ファイルへ以下のテキストをコピー&ペーストします。
    lastUpdate = Letzte Aktualisierung: {0,date,medium} {0,time,medium}
    invalidSymbol = ''{0}'' ist kein gültiges Aktiensymbol.

手書きされた文字列を生成されたローカライズされた文字列に置き換える

StockWatcherのインターナショナリゼーションの次のステップは、ソースコード内の全ての手書きされた文字列を二つの新しいインターフェイスの一つへのメソッドコールに置き換えることです。

HTMLホストページ内の手書きされた文字列を置き換える

現在、StockWatcherアプリケーションはプログラム的に生成されていない文字列を一つ持っています: タイトル, StockWatcher。それはホストページ(StockWatcher.html)のHTML

見出しです。

サンプルGWTアプリケーション構築するチュートリアルで、我々が見せたかったことは同じページ上でStockWatcherによって生成された文字列と静的なHTML要素を混ぜ合わせることが出来るということです。更に株テーブルの周りに静的なテキストを置くために速く簡単な方法でもありました。しかしながら、StockWactherのインターナショナリゼーションを行っている今、これが最も柔軟な方法ではないということがわかります。
この見出しを生成する簡単な方法は

要素内のテキストをGWT レーベルウィジェットへ置き換えて、ウィジェットのsetText(String)メソッドを呼び出すことです。思い出してください、GWTウィジェットは直接HTMLホストページへ埋め込むことは出来ません; 従って、最初にルートパネルでウィジェットをラップします。

  1. StockWatcher.htmlを開きます。
    id:”appTitle”を

    見出しに割り当てることによってルートパネルと

    見出し関連付けます。

    見出し内のテキストを削除します。





    StockWatcher


では、StockWatcherの全てのローカライズされた文字列を実行時にセット出来るようにしましょう。

プログラム的に文字列セットを置き換える

StockWatcherクラスを調べて手書きされたテキストである文字列を全て置き換えます。
  1. StockWatcherConstantsインターフェイスと StockWatcherMessagesインターフェイスのインスタンスを作成します。
    StockWatcherクラスに、以下のインスタンスフィールドの組を追加します。
    private ArrayList stocks = new ArrayList();
    private StockWatcherConstants constants = GWT.create(StockWatcherConstants.class);
    private StockWatcherMessages messages = GWT.create(StockWatcherMessages.class);
    これらはクラスではなくインターフェイスなので、直接インスタンス化は出来ません。代わりにGWT.create(Class)メソッドを使用します。そうすると、これらのインターフェイスの適切な文字列を取得する為のアクセサメソッドを使用することが出来ます。
  2. エクリプスはGWTにフラグをつけ、インポート宣言を追加するように提案します。
    import com.google.gwt.core.client.GWT;
  3. 全ての手書きされた文字列を定数クラスへのメソッドコールへ置き換えます。
    ウィンドウタイトル、アプリケーションタイトル、”Add Stock”ボタン、フレックステーブルのコラムヘッダの値を定数プロパティファイルから取得します。
    public void onModuleLoad() {
    // Set the window title, the header text, and the Add button text.
    Window.setTitle(constants.stockWatcher());
    RootPanel.get("appTitle").add(new Label(constants.stockWatcher()));
    addStockButton = new Button(constants.add());


    // Create table for stock data.
    stocksFlexTable.setText(0, 0, constants.symbol());
    stocksFlexTable.setText(0, 1, constants.price());
    stocksFlexTable.setText(0, 2, constants.change());
    stocksFlexTable.setText(0, 3, constants.remove());

    ...
  4. パラメータ化されたエラーメッセージを置き換えます。
    addStockメソッドで、無効な株コード入力時用のアラートメッセージを置き換えます。
    変更:

    private void addStock() {
    final String symbol = newSymbolTextBox.getText().toUpperCase().trim();
    newSymbolTextBox.setFocus(true);

    // Stock code must be between 1 and 10 chars that are numbers, letters, or dots.
    if (!symbol.matches("^[0-9a-zA-Z\.]{1,10}$")) {
    Window.alert("'" + symbol + "' is not a valid symbol.");
    Window.alert(messages.invalidSymbol(symbol));
    newSymbolTextBox.selectAll();
    return;
    }

    ...
  5. dateフォーマットを決定するロジックをMessageインターフェイスへ移動します。
    updateTable(StockPrice[] prices) メソッドで、変数(※この場合は可変の?)timestampを自身のlastUpdateメソッドと置き換えます。 
    変更:

    private void updateTable(StockPrice[] prices) {
    for (int i = 0; i < prices.length; i++) {
    updateTable(prices[i]);
    }

    // Display timestamp showing last refresh.
    lastUpdatedLabel.setText("Last update : "
    + DateTimeFormat.getMediumDateTimeFormat().format(new Date()));

    lastUpdatedLabel.setText(messages.lastUpdate(new Date()));

    }

 3. StockWatcherをローカライズする

この時点であなたはStockWatcherのユーザーインターフェイスのローカライズバージョン2つを作成済みです。しかしどうやってGWTはどのように実行時にどちらをロードするべきか知るのでしょうか?GWTは遅延バインディング(deferred binding)と呼ばれるメカニズムを使用してカスタマイズされたGWTアプリケーションのJavaScriptコンパイル成果物を生産するためにクライアントプロパティを使用します。実行時に提供されるべき正しいローカライズバージョンのStockWatcherを選択するために、GWTはクライアントプロパティのロケールを評価します。

 インターナショナリゼーションと遅延バインディング

あなたはサンプルGWTアプリケーションを構築するチュートリアル内で、GWTが異なるwebブラウザを対象とした、アプリケーションの異なる置換を生成するために遅延バインディングを使用するのを見ました。実行時、GWTブートストラップコードはエンドユーザーが使用しているブラウザに依存して決定される適切な置換を届けます。ユーザーエージェントはGWTクライアントプロパティなので、これらのブラウザ特有のコンパイル成果物が作成されます。同様にGWTはロケールをクライアントプロパティとして表します。これはGWTコンパイラがサポートされている各ロケールを表す国際化されたアプリケーションのカスタムバージョンを生成するということを意味します。
複数のクライアントプロパティがある場合、GWTは有り得るクライアントプロパティの値の組み合わせごとの一意的なコンパイル成果物を生成します。したがって、例えば、GWTが5つのブラウザをサポートし、あなたがアプリケーションを4つの異なる言語へ翻訳した場合、GWTコンパイラはアプリケーションの合計20の異なるバージョンを産み出します。しかしながら、アプリケーションの各ユーザーには彼または彼女特有のwebブラウザとロケールの組み合わせにマッチした置換のコードのみ提供されます。

StockWatcherがサポートするロケールを識別する

クライアントプロパティ値(ロケール)のセットを拡張することによって、現在、StockWatcherがGerman (de) ロケールをサポートしていることをGWTコンパイラに伝えます。
  1. ドイツ語をサポートしている言語として識別します。
    StockWatcher.gwt.xmlを開き、以下のプロパティを追加します。



  2. 開発モードでStockWatcherをリフレッシュします。
    デフォルトでは英語バージョンをロードします。
  3. ドイツ語バージョンをロードします。
    URLの最後に &locale;=deを付加します。
    http://localhost:8888/StockWatcher.html?gwt.codesvr=127.0.0.1:9997&locale;=de
    全ての定数がドイツ語で表示されます。
  4. 株コードに無効な文字を入力します。
    エラーメッセージがドイツ語で表示されます。
    日付と通貨のフォーマットもローカライズされていることに注目してください。
    screenshot: StockWatcher German UI
  5. StockWatcherをコンパイルし、プロダクションモードで開きます。
    webブラウザはStockWatcherのデフォルトインターフェイスを表示します。
  6. ドイツ語インターフェイスをテストします。
    URLにロケールを付加します。 ?locale=de
    webブラウザはStockWatcherのドイツ語インターフェイスを表示します。
  7. 生成されたファイルを見ます。
    ドイツ語インターフェイスを作成する前の二倍の置換用のファイルを見なければならないでしょう?

 ユーザーのロケールを決定する

実行時、どうやってあなたはユーザーのロケールを決定しますか? あなたは多くのウェブサイトがやっているように手動で選択する言語またはロケールのリストをユーザーに与えるかもしれません。
更に 正しいロケールを決定するためにブラウザのHTTPリクエスト内のAccept-Languageフィールドをwebサーバでチェックすることも出来ます。しかしながら、これを行う場合は、必ずユーザーへAccept-Languageフィールド内の値を上書きして言語プリファレンスを選択する方法を提供してください。

 ロケールのセット

StockWatcherが国際化された今、どうやってGWTは実行時にどのロケールをロードすべきかを知るのか? 答えはGWTはクライアントプロパティの値(ロケール)を使います。このクライアントプロパティをセットするのには二つの方法があります:
  • アプリケーションホストページのへ、プロパティネームと値を含んだHTMLタグを追加します:
  • URLのクエリ文字列へクライアントプロパティ値を付加します:
    http://www.example.org/myapp.html?locale=de
タグとURLの両方に(ロケールのような)クライアントプロパティを指定している場合、URLの値が優先されます。

 複数のブラウザページをまたがってロケールを維持する

GWTモジュール用のロケールセッティングは当該のモジュールの当該のインスタンスにのみ適用されます。これはアプリケーションがあなたのサイト上の他のGWTホストページまたはnon-GWT webページへのリンクを含んでいる場合、ロケールセッティングはそれらのページには持ち越されないということ意味します。したがって、ユーザー固有ロケールを維持したい場合は、GWTアプリケーション内の全てのリンクのクエリ文字列内でロケールを渡すか、またはすべてのロードされたGWTモジュールのホストページへ適切なタグを挿入出来るサーバ上のどこかにロケールを格納する必要があります。

 インターナショナリゼーションについて

この時点で、あなたはGWTアプリケーションのドイツ語置換を生成するために静的文字列インターナショナリゼーションを使用しています。
あなたはユーザーのロケールに基づいて適切な置換をロードするようにローカライゼーションを実装しました。

3つのインターナショナリゼーションの手法全て、GWT I18Nモジュール、または既存のローカライズされたプロパティファイルを再利用するためのGWT i18nCreatorの使用法についてより詳しく学びたいのならば、開発者ガイドのInternationalizationを見てください。

2011年7月期ドラマ

android用の神経衰弱ゲームを公開しました(・∀・)
The Match-up(Memory) game for android was released!

Google Play:
Mole's Match-up.

Introduction page:
Mole’s Match-upをリリースした∩( ・ω・)∩


さて、何を観るか


【NTV】
月24「ピースボート-Piece Vote-」
濱田岳なら一回くらいは観てみようか。どうせ視聴率のために
溺死させられるんだろうけどな(・∀・)
平愛梨は20世紀少年の時はアレだったが、行列の時は良かったので
今回どうなるかなぁ。金子ノブアキとか藤原竜也は観たくなくなる要素だが
あんまり出てこなければいいな。陣内はろくでなし~にも出てるのか。
またいつもみたいな嫌な奴の役なんだろうかw

水22「ブルドクター」
江角マキコと石原さとみか。観なくていいな。
水25「ろくでなしBLUES」
木24「名探偵コナン」
チェックするまでもない、どっちも観なくていいw

土21「ドン・キホーテ」
松田翔太は劣化版松田優作というよりも松田優作の下手な物真似を
してるだけだからなぁ。兄ちゃんの方で観たいなぁ。成海璃子や小林聡美が
出るのか…まあでも多分観ないなぁ。


【TBS】
火25「荒川アンダーザブリッジ」
取り敢えず一回だけ観ようかな…あれをどう実写化するんだろうか…。
水戸黄門と渡る世間は鬼ばかりは観てない。
金22「美男ですね」
金24「桜蘭学園ホスト部」
日テレの二作品同様、チェックするまでもないw
日21「華和家の四姉妹」
観月ありさじゃなぁ。ガンジャとにくこっぷんかーは4月期から連続か。
エンケンは湯けむりスナイパーだけやってろ(・∀・)
まあ観ないなぁ。


【CX】
月21「全開ガール」
ガッキーとnskdか。うーむ、どうだろうか…。ドラマとしてはアレだと思うが、
他の出演者がチオビタ(平山浩行)、おりん(青山倫子)、佐藤二朗、荒川良々と
まあまあ実況的に認知度はそこそこある人達が出ているので一回くらいは観ようか。
竹内力と薬師丸ぴろ子も出んのか。
火21「絶対零度~特殊犯罪潜入捜査~」
上戸彩だから観るまでもないけど、これって前とちょっと違うのか?
前はコールドケースだかクリミナルマインドだかのパクリで宮迫とコンビだった
ような気がしたけども。観てないからわからないけど、前シリーズで宮迫は
殉職でもしたのかな?小林鹿高……ジョージ、ジョージじゃないか(・∀・)
いや、まぁ観ないけどねw
火22「チームバチスタ3 アリアドネの弾丸」
ヤスケン(安田顕)とかイボリー(尾美としのり)と只野(高橋克典)も出んのか。
まあ伊藤淳史が駄目なので観ないなぁ(・∀・)

木22「それでも、生きてゆく」
坂元裕二……Motherは良かったが、これはどうだろう。
瑛太、満島ひかり、福田麻由子、倉科カナとまあまあ良さ気な感じ。
見所は田中圭が何話で死ぬかだな( ・´ω・`)
段田安則はまた嫌な人役なんだろうかw まあ一回くらいは観るか。

日21「花ざかりの君たちへ~イケメン☆パラダイス~2011」
これも観ないなぁ(・∀・)
今回の宣材写真?を観て思ったけど、堀北真希って本当に可愛いんだなって思ったw
ある種、人間の造型ではない奇形的というか人形的な可愛さはあると思ってたけれど、
こんなにも差がつくとはw 男装だからとかいう話じゃない。
まあワゴンの中の物3つで1000円レベルと単品で売り出されるアイドルとの差なんだろうか。


【EX】
水21「新・警視庁捜査一課9係」
エンクンニちゃん生存確認の為に一応観る(・∀・)
ツダカン、14課に行って佐藤江梨子が部下?9係に内田朝陽が加入?
原沙知絵の鑑識はまだいんのかよ(´・ω・`)
吹越満と田口浩正のコンビくらいしか見所がなくなるな。
京都地検の女はたまに観ることがあるくらいかなぁ。
木21「陽はまた昇る」
なんかちょっと前にSPかなんかでやってたやつか。真面目に観てなかったから
よくわからないが三浦パルマーが登場して終わったやつか。真矢みき出てんのかぁ。
微妙だな。
金23「ジウ~警視庁特殊犯捜査係」
多部未華子はいいけど、黒木メイサは女優としてはアレだからなぁ。
観なくていいかな。
日23「バラ色の聖戦」
吹石一恵 芦名星 長谷川朝晴 渡邊このみ 井上順 滝沢沙織 仲間リサ 要潤 夏木マリ
こういってはなんだが…ずいぶんとギャラが安そうな人たちを集めてきたな( ・´ω・`)
前田敦子と芦名星ってスワンの馬鹿でなんか酷い女優のイメージがあるなぁ。
特に観たい要素がないな。


【TX】
月22「IS~男でも女でもない性~(仮)」
この枠でやるドラマはあんまり観る気がしないのが多いなぁ。
なんらかの方向性をもってチョイスしてるみたいだけども。
多分観ないなぁ。

金24「勇者ヨシヒコと魔王の城」
山田孝之と木南晴夏か。まあ一回くらい観てみようかなぁ。
木南晴夏は多部未華子と同じブスカワに分類されるんだろうか(´・ωメ`)


好き嫌いが多くて今期も観るものが少ない(・∀・)


前期は取り敢えず一回以上観たのは、
 「リバウンド」「四つ葉神社ウラ稼業~失恋保険告らせ屋~」
 「高校生レストラン」「仁-JIN-」「名前をなくした女神」
 「マルモのおきて」「犬を飼うということ~スカイと我が家の180日~」
か。
このうち失恋保険と仁は一回のみ、高校生レストランは最初の数回のみ、
リバウンドと犬を飼うということはは飛び飛びで観た。


失恋保険は「良くも悪くもいつも通り、この枠っぽいなぁ(・∀・)」
という感想以外、特にいうことはない。なんかお医者さんの回だったな。


仁は初回二時間SPを録画したものを観た。まあまあといった感じだった。
久しぶりに観て、意外と仁一期に不満を持っていたことに気づいた。

一期の仁、龍馬、咲、ツンデレ母、緒方洪庵、おさらばえ、野風辺りは
良かったんだけども、枝豆の子、咲兄、田口浩正、ピチT妄想係長の麻酔医、
佐藤二朗、相島一之、ポジティブとかイマイチだなぁと思っていたり、
「神は乗り越えられる試練しか与えない」とかいう台詞を連発していてうざいなぁと
思っていたんだった(ノ∀`)
一期当時はその前半や龍馬のキャラ故に視界に入らないか黙殺していたものを、
久しぶりに観て、目の当たりにしてしまった感じ。まあ全部観たらそれはそれで
きっと面白いと思うのだけれども、まあそのうち機会があったら観るかなぁ。
原作の最後は…まあ記憶云々のところはどうだろうかというのはあるけれども、
綺麗にまとまってたと思う。あれくらいなら上手に風呂敷は畳んでいると思うw
良い漫画だったと思う。


犬を飼うということは……何がやりたかったんだろうか。
ワケワカランヽ( ・∀・)ノ と言いたくなる内容だったw


高校生レストランは何回か観たけれど、曜日的に観れないことが多々有り、
いつの間にか終わってた(ノ∀`) 観てた頃は可もなく不可もない王道路線だったが、
その後で倉庫さんが活躍したりしたんだろうか。途中から観てなかったから
知らなかったが原田芳雄が闘病の為、降板してたんかΣ(゚∀゚;)

大門社長頑張れ(´・ω・`)


リバウンドは中抜けはあるけどもそこそこ観た。
第三話目くらいまでは面白かったが……_| ̄|○ ドウシテコウナッタ…
あの最終回は酷いw


「マルモのおきて」は爆死すると思ったのにとんでもない結果に(・∀・)

視聴率スレの値が正しければ、以下の通りらしい。
11.6_12.9_12.3_12.7_15.6_15.6_16.1_16.8_17.2_15.6_23.9(終)_15.48
二話目から観たんだったか三話目から見始めたのか忘れた(ノ∀`)
あんまり期待せずに観たが、予想以上にほのぼのとした世界だったので、
そのまま見続けた。結果論だけれども、阿部サダヲがマルモ役だったから、
いい感じになった気がする。イケメンすぎてもいけないし、ブサイクでもいけないし、
演技力もなければならないことを考えたら阿部サダヲはベストチョイスだったのかも。
泣くもんか自体は今ひとつ好きになれなかったが、阿部サダヲは泣くもんかやマルモ
みたいな役は結構合うんじゃないかなぁ。猫田や不毛地帯の芝居がかった新聞記者も
悪くはないがw
ポジション的にくじらのマスターの世良正則が美味しい役だったような感じがする。
大事なところでマルモを支えていたし。最上の命医の時もそうだったけれど比嘉愛未も
明るい役なほうがいいねぇ(・∀・) しましまとか伊武雅刀とか皆いい人ばっかりが
出てくるドラマでほのぼのとした。鶴田真由はちょっとかわいそうな役だった。
まああの母親役として嫌われるのは役者冥利に尽きるのであろうかw
楽しんで観てたけれど、ドラマ自体の完成度はちょっとゆるめな感じが
しないこともない。まあシリアス系じゃないからそれでいいのか。
もうほぼ初期の段階から「マルモ、薫、友樹、ムック、くじら親子」という
キャラ物ドラマになっていたし。
会社系の話はあまり絡めなくても良かったような気がしないこともない。
まあマドンナとの恋を捨てる辺りは必須だったんだろうけれども。
個人的にはEDよりも空気OPと呼ばれているオープニング映像の方が
好きだった。これは昼ドラでのんびりやれば良かったのになと思うOPだった。

まあなんやかんや言って良い作品だった(・∀・)
と思うが、わけわからん特番や次期ドラマとのクロス出演とかを
フジテレビがやると知り、なんだか急激に醒めてしまい、
実は最終回を観ていない( ・´ω・`)
ドラマ世界に現実世界のくだらない要素を無理矢理押しこんで、
ぶち壊す馬鹿が何処にいるんだ(´・ω・`) 所詮はフジテレビか。
機会があったら観るかもしれないが、どうでもいいと言えばどうでもいい。
でもまあトルゥーライズが面白いということを知れたので良しとする(・∀・)
ノーカット版を観たい。


名前をなくした女神はほとんど観たかな。
予想外に結構良く出来たドラマだったかな。
泣かないと決めた日みたいに雑じゃないし、誰かを主人公としてスポットライトを
当ててるわけじゃなかったし。てっきり、泣かないと決めた日の悪役をやった杏に
対してのご褒美ドラマなのかと思っていたけれど、それほど杏は美味しい役
じゃなかった気がする。どちらかというと空気を読まずに地雷を踏み続ける感じの
狂言回しだったような。
一番美味しかったポジションはイーグルさんかなぁ…まあ俳優として美味しかったのは
尾野真知子と倉科カナか。あと子役達もかなり達者だったので、顔は覚えてもらえた
のではなかろうか。あやかちゃん・ララちゃん・そうくん辺りが良かった。
木村佳乃とチオビタのとこはまあ、可もなく不可もなくか。つるのとカイジも空気だった。
バックレかましたバイトとか棒読みのママ友の方が印象に残っている。安達由美も
今ひとつわからない役だった。ミスリードやかつてのママ友地獄を想起させる為だけの
存在だったのか。

ヒモザイルは顔も名前も覚えてないな。子供もちょっと印象にないな。
りょうの「してないんじゃない( ´_ゝ`)?」は中々記憶に残るワンシーンだったw

尾野真知子の夫役(高橋一生)の痴漢の動機って最初からあれだったんだろうかw?
だとするとかなり無理があるような気がするのだけれどもどうなんだろうか。
脚本変更とかあったりしたんだろうか。まあそれはともかく最終回の時に
尾野真知子と高橋一生がTwitterでなんかやりとりしててちょっと吹いたw

泣かないと決めた日や美しい隣人のような直接対決ではないオチだったので、
実況でも不満を漏らす人もそれなりにいたけど、個人的にはまあいい感じで
まとめたんじゃないかなぁと思った。
毎回、直接バトルするような感じにしちゃうと今後のこのサスペンスというか、
サイコホラー系のドラマがマンネリ化しちゃいそうだし。
なんか最後に続編かSPか或いは出演者総取替えの新作でも作りそうな感じだった
けれど、まだやるんだろうか(・∀・)?


前期はmother親子がフジテレビでブレイクしたようなイメージだなぁ(・∀・)