Friends - S2Robot
DBFluteとは直接無関係ながらも、親和性の高いフレームワークを紹介します。
S2Robotとは?
Web およびファイルシステムをクロール可能なクローラフレームワークです。 S2Robot内の一部機能で DBFlute が利用されています。(DIコンテナは Seasar が利用されています)
S2Robotの概念図
クロール結果の保存方法
クロール結果をメモリに保存するか、データベースに保存するかを選択することができます。
- メモリに保存
 - 設定が少なく、簡単にS2Robotを利用することができる
 - 保存料はメモリ量に依存し、アプリが終了すれば保存結果は消える
 - データベースに保存
 - 大量の情報を保存することができる
 - H2 や MySQL など DBMS を切り替えることができる (デフォルトは H2 Database)
 
ここでの紹介の前提
ここではクロール結果はデータベースに保存することを前提とし、メモリに保存する方式は割愛します。 また、Maven を使った環境であることを前提とします。
S2Robotの環境構築
詳しくは本家サイトにて。フォロー的な内容だけここでは書いておきます。
S2RobotのDicon構造
pom.xml の設定
s2-robot-db と s2-robot-db-[利用するDB (h2 or mysql)] を dependency に定義します。repository として、Seasar の Maven2 Repository の指定が必要です。
e.g. pom.xml に S2Robot のライブラリを定義する (H2 Database 利用) @pom.xml
...
<repositories>
    <repository>
        <id>maven.seasar.org</id>
        <name>The Seasar Foundation Maven2 Repository</name>
        <url>http://maven.seasar.org/maven2</url>
    </repository>
</repositories>
...
<dependencies>
    ...
    <dependency>
        <groupId>org.seasar.robot</groupId>
        <artifactId>s2-robot-db</artifactId>
        <version>0.4.2</version>
    </dependency>
    <dependency>
        <groupId>org.seasar.robot</groupId>
        <artifactId>s2-robot-db-h2</artifactId>
        <version>0.4.2</version>
    </dependency>
    ...
</dependencies>
	dicon ファイルの設定
app.dicon にて、s2robot_db.dicon を include します。
- app.dicon にて、s2robot_db.dicon を include する
 - s2robot_jdbc.dicon を作成して、Crawl結果を保存するDBへの接続設定 (jdbc.dicon のように)
 - URLFilter や Rule など拡張したい機能の dicon をコピー作成して独自修正 (*1)
 
*1: S2Robot のライブラリに組み込まれた dicon の拡張は、プロジェクトの src/main/resources にコピー作成するか、S2ClassBuilder の機能を利用してピンポイントで差し替えるかで実現可能。
S2Robotの使い方
詳しくは本家サイトにて。フォロー的な内容だけここでは書いておきます。
処理ルールの設定
TODO jflute now writing

