【ハウツー】
では、実際にROMEを使用してフィードを読み込んでみよう。ただし、ファイルを読み込むだけでは面白くないので、HTTPを使用してインターネットからフィードを取得するようにする。そのためには、ROMEだけではなく、サブプロジェクトであるROME Fetcherも必要だ。
ROMEのダウンロードはこちらのサイトから行うことができる。また、ROME Fetcherの最新バージョンである0.9はこちらからダウンロード可能だ。
インストール作業は特に必要ない。ダウンロードしたアーカイブを展開すると、JARファイル(ROMEはrome-0.9.jar、ROME Fetcherはrome-fetcher-0.9.jar)が入手できるので、これらにクラスパスを通してコンパイル/実行を行えばよい。
HTTPを用いてフィードを取得するサンプルは以下のようになる。
import java.net.URL;
import java.util.List;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.fetcher.FeedFetcher;
import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher;
public class PrintFeed {
// フィードのURL
private static final String[] FEED_URLS = {
"http://journal.mycom.co.jp/haishin/rss/enterprise.rdf",
"http://d.hatena.ne.jp/Syunpei/rss",
};
public static void main(String[] args) throws Exception {
// HTTPを元にフィードを取得するクラス「FeedFetcher」 ………(1)
FeedFetcher fetcher = new HttpURLFeedFetcher();
// フィードの内容、フィードに含まれる記事エントリの内容を出力する
for (String url : FEED_URLS) {
// フィードの取得 ………(2)
SyndFeed feed = fetcher.retrieveFeed(new URL(url));
System.out.format("フィードタイトル:[%s] 著者:[%s]\n",
feed.getTitle(),
feed.getUri());
for (SyndEntry entry : (List<SyndEntry>) feed.getEntries()) {
System.out.format("\t更新時刻:[%s] URL:[%s] 記事タイトル:[%s]\n",
entry.getPublishedDate(),
entry.getLink(),
entry.getTitle());
}
}
}
}
このサンプルをコンパイル、実行する際にはROMEとROME FetcherのJARファイルをクラスパスに含めるのを忘れないこと。
ポイントは以下の2点だけだ。
FeedFetcherが、ROME Fetcherで開発されたHTTPを用いてフィードを取得するクラスになる。JDKコアパッケージに含まれるHttpURLConnectionを使用してフィードを取得する。この他にも、Jakarta Commons HttpClientを用いるバージョンも存在する
フィード(SyndFeedクラス)を取得する。FeedFetcher#retrieveFeed(java.net.URL)がそのメソッドだ
このサンプルは、あらゆるバージョンのAtomとRSSのフィードを取り扱うことができる。また、フィードを表すSyndFeedクラス、個々のエントリを表すSyndEntryクラスはすべて単純なPOJOなので、Hibernateなどを用いて永続化することも簡単だ。
以上、簡単ではあるが、ROMEの紹介をこれで終わりにする。今回ご紹介できなかったが、フィードを書き出す際にもSyndFeedなどの同じクラスを使用でき、非常に容易だ。
最近では、RSSやAtomのフィード配信は当然と思われており、Javaアプリケーションの開発プロジェクトでも必要になるケースは少なくない。Javaでフィードを統一的に扱うことのできるライブラリとして、ROMEへの期待はこれからどんどん高まっていくはずだ。使い方を覚えておいて損のないライブラリであることは間違いないだろう。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
激シブ!もう一度ゴルフ Ⅱ の魅力を味わってみませんか?【大阪オートメッセ2012】 [03:06 2/11] キャリア |
|
『ヘタリア』キャラソン、新シリーズが配信決定! [03:05 2/11] キャリア |
|
全国の温泉を擬人化したドラマCD、第1弾「草津」は櫻井孝宏さん! [03:05 2/11] キャリア |
|
柿原徹也さんの2ndミニアルバム「CONTINUOUS」2月15日発売 [03:04 2/11] キャリア |
|
アニメ「Fate/Zero」陣営ごとのお守りが発売決定 [03:03 2/11] キャリア |