Home > はてな, はてなブックマーク, プログラミング > ソーシャルブックマークを有効活用したい 第一段

ソーシャルブックマークを有効活用したい 第一段 このエントリをはてなブックマークに登録 Yahoo!ブックマークに登録 このエントリをlivedoorクリップに登録

1月 28th, 2009

自分は普段からはてなブックマークを利用している。

けど最近気づいたのがブックマークをつけるだけつけて有効利用していないのだ。

ソーシャルブックマークは、webでの情報を見つけるのみ有効な場合もあるが昔つけられたブックマークは自分でもあまり見ない。

けどせっかくコツコツとつけてきたブックマークを再利用したい場合、はてなブックマークからいちいちリンクを作るのもいい加減面倒くさいと思った。そこではてなブックマークから任意のもののリンクを自動的に作成できればいいのかなと思ったのだ。

したいこと。調べたこと

昔つけてきたブックマークのリンク集を作成したい。例えばブックマークで任意のタグからリンク集を自動生成する仕組みが欲しいと思った。

そこでしたことは、どうもはてなブックマークだけでなくdeliciousなど他のSBMサービスでもweb apiと呼ばれるものが用意され自分が作成したアプリケーションからデータをいじれるらしいことがわかった。

deliciousの場合はrubyやjavaから直接いじれるapiも用意されているようである。そのためdeliciousに完全に移行することも考えたが今まで貯めてきたブックマークを捨て新しい所に移るのはもったいないと思ったので、あくまでも汎用性の高い方法がいいと思った。

いろいろ検討した結果、RSS/ atomを用いて必要な情報を取り出して再整形する方法が汎用性が高いのではないかという結論に達した。

とりあえず結果から

結果からいうとjavaとromeというjava apiを利用したものでとりあえず作ることが出来た。

はてなブックマークからmixiのタグのものを抜き出しました。

本当はもっと改良が必要だとおもうがmixiのタグをつけたものからリンクを作成することに成功した。

何をしたか

mycom:【ハウツー】JavaでAtomやRSS等のフィードを扱うならこれ! – ROME (1) ROMEの特徴 | エンタープライズ | マイコミジャーナル

を参考にしてnetbeans 6.5を用いてプログラムを作成した。RSS/ atomを処理するのにROMEとよばれるライブラリーを使用する必要がある。

ROMEについては以下のページから英語ではあるが説明されている。

TWiki . Javawsxml . Rome

ROMEは以下のライブラリーを必要とする。

JDOM

また、httpを利用してRSS/ atom フィードを取得するので

TWiki . Javawsxml . RomeFetcher

が必要になる。これらのページから必要なライブラリーをダウンロードした。

netbeans を普段利用しているのは開発するためにいろいろ設定をしたりする手間がないからだ。ライブラリーの追加はプロジェクトベースで用意にできる。

mycom:【ハウツー】JavaでAtomやRSS等のフィードを扱うならこれ! – ROME (1) ROMEの特徴 | エンタープライズ | マイコミジャーナル

にあるソースコードからほとんど変更する必要がなかった。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package atomtest;

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;
import java.net.URL;
import java.util.List;

public class Main {

/**
* @param args the command line arguments
*/

public static void main(String[] args) throws Exception {
// TODO code application logic here

FeedFetcher fetcher = new HttpURLFeedFetcher();

// フィードの内容、フィードに含まれる記事エントリの内容を出力する
for (String url : args) {
// フィードの取得 ………(2)
SyndFeed feed = fetcher.retrieveFeed(new URL(url));

System.out.format(“フィードタイトル:[%s] 著者:[%s]\n\n\n”,
feed.getTitle(),
feed.getUri());

for (SyndEntry entry : (List<SyndEntry>) feed.getEntries()) {
/*
System.out.format(“\t更新時刻:[%s] URL:[%s] 記事タイトル:[%s] %s\n”,
entry.getPublishedDate(),
entry.getLink(),
entry.getTitle(),
entry.getDescription().getValue());
*/

// 変更した部分
System.out.format(“<p><a href=\”%s\” target=\”_blank\”>%s</a></p>\n<p>%s</p>\n\n”,
entry.getLink(),
entry.getTitle(),
entry.getDescription().getValue());
}
}
}
}

見てもらえればわかるがほとんど変更していない。ソースを公開することはほとんどの人にとっては無意味であるとは思うが、役に立つ人もいるかもしれないので掲載する。(本当は自分が再利用する時に必要だと感じている)

パッケージ名は atomtest にしたので実行する方法は、

java -jar atomtest “フィードしたいrss/ atomのurl”

で実行できる。ここでは あるまとめサイト管理人のブックマーク / mixi から情報を取り出したいので以下のようなコマンドを実行した。

java -jar atomtest  http://b.hatena.ne.jp/nannte-0223/rss?tag=mixi

になる。

これからの検討したいこと

ここをみればわかるように単純に抜き出してもおもしろいものにはならないことがわかった。そのための工夫は必要だとは思うが当面これを利用してさらに使いやすくなるように改良をしていきたい。

javaとROMEについて勉強することも必要だとおもうが何をするかスコープをまず決めたい。

改良次第、このブログで報告するつもりである。

2009年1月29日追記:atomtestのソースコードをアップしました。

admin はてな, はてなブックマーク, プログラミング , ,

  1. No comments yet.
  1. No trackbacks yet.