2009 6月 at ミネルヴァの梟は黄昏とともに飛び始める

ミネルヴァの梟は黄昏とともに飛び始める

Follow me on Twitter: http://www.twitter.com/dddaisuke

Archive for 6月, 2009

Google Guiceが便利!

with one comment

model2

Googleが開発したGuiceというDI(Dependency Injection)フレームワークが便利すぎる。

ちょっと、Guiceの勉強してみて3Dプログラムを開発してみたけど、各クラスの依存関係を簡単に分断できました。さらにXMLなど静的ファイルを利用して、あとから機能を追加/削除を簡単にしたい箇所もすべてプログラムに書くことができました。

これでは、何が何やら分からない人も多いと思いますので、分かりやすく書くと、上の画像の右にあるボタンは、DIで簡単に取り外しができるようになっています。

依存関係はすべてJavaのソースコードとして記述してあるので、Eclipseのリファクタリング機能でクラス名やメソッド名、パッケージ階層などを簡単に変更できます。これが、従来通りXMLファイルにパッケージ名やクラス名を書いておいて、リフレクションでクラスをロードするようにプログラムを書いていると追従が非常に困難になってしまいますし、XML記述時のタイプミスも実行時まで発見されない可能性もあります。

さらに、DIでボタン機能が依存注入されているので、他の機能に切り替えるのも非常に簡単で、モッククラスと切り替えてテストプログラムを走らせるのも非常に楽です。

また、普通に公開されているGuiceのバイナリパッケージには含まれていないのですが、リポジトリからソースコードをチェックアウトしてきてビルドすると、extensions\grapher以下に参照関係をグラフで表示するためのライブラリが生成されます。

これを利用すると、.dotという拡張子のファイルを生成でき、Graphvizというツールにかけると以下のような画像が生成されます。これは便利!!!

model21

以下のメソッドにファイル名と、injectorインスタンスを与えるだけでファイルを出力できます。

public static void graph(String filename, Injector demoInjector) throws IOException {
PrintWriter out = new PrintWriter(new File(filename), "UTF-8"); //$NON-NLS-1$

Injector injector = Guice.createInjector(new GrapherModule(), new GraphvizModule());
GraphvizRenderer renderer = injector.getInstance(GraphvizRenderer.class);
renderer.setOut(out).setRankdir("TB"); //$NON-NLS-1$

injector.getInstance(InjectorGrapher.class).of(demoInjector).graph();
}

Written by daisuke

6月 25th, 2009 at 8:45 pm

Google Waveのアカウントを発行してもらった

with 10 comments


wave1

非常に多くの人が検索エンジンで飛んできて、ブログを読まずに「招待してくれ」というコメントやメールを送ってくる人が後を絶ちません。まずは、こちらを読んで下さい

せっかく、Google Waveのアカウントを発行してもらったのに、知り合いを招待できんのか!

一人で遊ぶしかないなんて。残念でならない。。。

左下に追加されているユーザは自分でテスト用のユーザデータを追加したもの。

次のニコニコ生放送のテーマは「Google Waveを触らせます」で決まりだな(笑)

Written by daisuke

6月 23rd, 2009 at 3:55 pm

Posted in Google Wave

Javaの勉強

without comments

すぎゃーんさんの記事からたどりつきました。

勉強がんばってください!

新入社員にこういうのやらせるのは面白いかも。

Written by daisuke

6月 19th, 2009 at 2:54 pm

Posted in Java