TopHatenar+HatenarMapsのシステム構成

TopHatenarHatenarMapsのシステム構成が、バージョンアップの度に複雑化してきて、自分でも把握しづらくなってきたので、整理する意味で図を作ってみました。

図に示したように、HatenarMapsは、S2RMIを使ってTopHatenarと協調動作しています。はてなダイアリーはてなブックマークに関するデータをクロールしているのは、TopHatenarの側です。HatenarMapsの側では、TopHatenarのService層をS2RMI経由でコールして、集計済みのはてブ情報を取得し、クラスタリング処理の後にポリゴンを計算しています。その他、HatenarMaps上でコメントビームの表示等がリクエストされる度に、TopHatenarをコールしています。よって、HatenarMaps側のDBには、基本的にポリゴンデータしか入っていません。

以下、図中に出てくるフレームワークやライブラリについて紹介します。

JFreeChart

http://www.jfree.org/jfreechart/

Javaのチャートライブラリの決定版です。ほぼあらゆる種類のグラフを描くことができます。高機能すぎて、Javadocを読んだだけでは目的のクラスやメソッドを見つけ出すのが難しいほどです(笑)。

Ehcache

http://ehcache.sourceforge.net/

Javaの汎用キャッシュライブラリです。TTLやディスクキャッシュの使用可否をXMLファイルで簡単に設定できて、気軽に使えます。memcachedより高速という情報もあります。

TopHatenarブログパーツを多くの方に貼っていただいているので、キャッシュが非常に重要ですが、今のところミスヒット率は10%未満と、良好な結果が出ています。

Cubby

http://cubby.seasar.org/

RESTっぽいURIを簡単に扱えることが特徴の、軽量なWebフレームワークです。重宝してます。

Mayaa

http://mayaa.seasar.org/

HTMLテンプレートエンジンです。テンプレートを奇麗なHTMLで書ける上に、JavaオブジェクトをJavaScriptの式で参照できたり、レイアウト共有機能(HTMLのコンポーネント化)が秀逸だったりとメリットが多いので、Cubbyと組み合わせて使っています。

S2JDBC

http://s2container.seasar.org/2.4/ja/s2jdbc.html

JPAの改良版的な位置付けのO/Rマッパーです。Genericsや可変長引数をフル活用した「流れるようなインターフェイス」によって、DBアクセスコードを簡略化できます。

S2RMI

http://s2rmi.seasar.org/ja/

DIコンテナに登録された任意のオブジェクトを、アノテーション等一切不要でJava RMI対応にできてしまうという、DI+AOPの真価を見せつけてくれる素晴らしいライブラリです。

S2Flex2

http://s2flex2.sandbox.seasar.org/ja/

これを使うことで、FlexからJavaオブジェクトを簡単に呼び出せるようになります。通信にはAMF3が使われるので高パフォーマンスです。

ちなみにHatenarMapsではFlex 3を使っているので、今度S2Flex2の代わりにS2BlazeDSも試したいと思っています。

最後に

こうして見ると、TopHatenarHatenarMapsは、かなりSeasar色に染まってますね。JavaWebサービスを作るとき、Seasarファミリーはとても役に立つと思います。