TopHatenar+HatenarMapsのシステム構成
TopHatenarとHatenarMapsのシステム構成が、バージョンアップの度に複雑化してきて、自分でも把握しづらくなってきたので、整理する意味で図を作ってみました。
図に示したように、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%未満と、良好な結果が出ています。
Mayaa
HTMLテンプレートエンジンです。テンプレートを奇麗なHTMLで書ける上に、JavaオブジェクトをJavaScriptの式で参照できたり、レイアウト共有機能(HTMLのコンポーネント化)が秀逸だったりとメリットが多いので、Cubbyと組み合わせて使っています。
S2JDBC
http://s2container.seasar.org/2.4/ja/s2jdbc.html
JPAの改良版的な位置付けのO/Rマッパーです。Genericsや可変長引数をフル活用した「流れるようなインターフェイス」によって、DBアクセスコードを簡略化できます。
S2Flex2
http://s2flex2.sandbox.seasar.org/ja/
これを使うことで、FlexからJavaオブジェクトを簡単に呼び出せるようになります。通信にはAMF3が使われるので高パフォーマンスです。
ちなみにHatenarMapsではFlex 3を使っているので、今度S2Flex2の代わりにS2BlazeDSも試したいと思っています。
最後に
こうして見ると、TopHatenarとHatenarMapsは、かなりSeasar色に染まってますね。JavaでWebサービスを作るとき、Seasarファミリーはとても役に立つと思います。