FUSEを使ってはてなブックマークから POOKMARK Airlines へ乗り換える方法

Google Code で macfuse がリリースされたのをきっかけに、FUSEをみんながおもちゃにするに違いないと思ったのにだれもおもちゃにしていないみたいで、くやしかったので自分でおもちゃにしてみました。

FUSEの利点は、ファイルシステムという今まで数十年間使われてきた標準的なインターフェイスに任意のサービスをマッピングできるということにあります。数十年間、ファイルシステム上でファイルを扱うために様々なツールが開発されてきました。ファイルシステムにサービスをマッピングできるということは、数十年間蓄積されてきたファイルを扱うためのツールをそのままサービスを扱うためのツールとして利用できるということです。

例として WikipediaFS, view and edit Wikipedia articles as if they were real files を見てみましょう。このwikipediafsを使うとwikipediaの任意の項目をファイルとしてマウントすることができます。ファイルとしてマウントすることができれば、ブラウザの中で動く絶望的に使いにくいへんなエディタ(しかもサービスによってUIがまちまち!)ではなく、いつも使っているvimやemacsのようなエディタでいつもつかっている変なショートカットを使って編集することができます。さらにはcpでどこかに書いたことをそのまま持ってくることもできますし、消したくなったらrmで消せて、subversionなんかに入れておけば履歴のdiffをとることもできます!

というわけで、ソーシャルブックマークサービスにポストしたブックマークひとつひとつをファイルに見立ててFUSEでマウントして、ふつうにファイルとしてコピーするとサービス間でブックマークがコピーされるというのを作って試してみました。そのために はてなブックマーク - ソーシャルブックマーク をマウントするperlのモジュール BookmarkFS::Hatena.pm と POOKMARK Airlines - ソーシャルブックマークサービス をマウントする BookmarkFS::Pookmark.pm を書きました。

macfuseではFUSEのperlバインディングであるFuse.pmがうまく動かないようだったので、無用なトラブルを避けるべくWindows用の Virtual PC 2004 SP1 に Fedora Core 6 をインストールして Virual PC 上のFedoraでFUSEを使っています。

サービスをマウントする

細かい話を書くと本題と関係ないことがいろいろあって長くなるのでなしにして、まず、それぞれのソーシャルブックマークサービスをマウントします。
perl hatenafs.pl /home/kuma/hatenafs ku0522 [password]
というコマンドを実行するとku0522のブックマークが /home/kuma/hatenafs にマウントされるようにしました。マウントするとこうなります。
hatena bookmark
マウントしたディレクトリの中をNautilusで見てみましょう。
mounted hatenafs
登録されているブックマークそれぞれを.urlファイルとして見ることができるようにしてあります。ほんとうはページタイトルをファイル名にしたかったのですが、FUSE側で日本語をうまく扱えないかんじなので今回はパスしました。いちばん上の RadiumSoftware-Identicon.url の中身をテキストエディタで開いて中を見てみましょう。
inside of .url file
中身はWindowsのインターネットショートカットと互換性があるフォーマットにしました。Linuxのフォントの関係で漢字が表示できていませんがデータとしてはUTF-8で正しく入っています。


次にブックマークのコピー先の

perl pookmarkfs.pl /home/kuma/pookmarkfs ku0522a [password]
で POOKMARK Airlines をマウントします。いつも使っているアカウントにコピーすると上書きされちゃうので新しくアカウントを作りました。なので中身はまだ空の状態です。

pookmark airlines
これをFUSEで /home/kuma/pookmarkfs にマウントします。
mounted pookmarkfs
POOKMARK Airlines にはまだブックマークがないので、マウントしたディレクトリも空の状態です。

.urlファイルのコピー

hatenafsの中にある.urlファイルをNautilusでふつうにドラッグアンドドロップしてコピーします。
copying bookmarks

すると裏側ではFUSEを経由して BookmarkFS::Pookmark.pm が呼び出されます。Pookmark.pmモジュールは、書き込まれた.urlファイルの中身をパースして、その内容をもとにHTTPリクエストを組み立て POOKMARK Airlines に送ります。結果としてpookmarkfsディレクトリと、POOKMARK Airlines にブックマークがコピーされます。

POOKMARK Airlines のなかみを確認

コピーがすんだところで POOKMARK Airlines のページを見てみましょう。
Copyed Pookmarks.Png
コピーしたブックマークが行き先として登録されています。タグやコメントもきちんと反映されます!

まとめ

というわけでFUSEを使って POOKMARK Airlines に乗り換える方法をご紹介しました。 それってどうなのよーと思われたあなた、ぜひ POOKMARK Airlines に登録 して BookmarkFS.pm をダウンロードして実際に試してみてください。 =)


この方法のいいところは


  • コピー元/コピー先がどんなサービスであっても操作は常に一定

  • .urlファイルをほかのディレクトリにコピーすることで容易にバックアップが可能


なところです。
そして、せっかくファイルシステムにマッピングしてるのだからdiffやrsyncを使ってブックマーク間の差分がとれたり、シンクができたりするとかっこいいけれど、そのためにはブックマークを表現するための中間形式の標準化が必要だというところが限界でもあります。.urlファイルはsafariとIEで開けるものの、ソーシャルブックマークサービスでふつうに使われるタグやコメント、公開非公開などの情報を表現することができません。今回はdel.icio.usのAPIのパラメータ名にあわせてタグやコメントを勝手にプロパティとして記述しています。
しかし、標準化なしではcpを使ってサービス間で透過的にブックマークをコピーすることはできませんし、diffやxmldiffのような汎用的なコマンドでふたつのブックマークが同じかどうかを判別することもできません。

FUSEでファイルシステムとして扱えることの利点は、レスポンスがXMLとして帰ってくるということと、普及しているということとで、atomAPIをラップしてファイルとしてみせるatomfsなんかだとかなり発揮されるのかもと思います。

WebDAVとはさみうちの定理

ちょうど、このbookmarkfsを書いているときに(書いている時間よりもVirtualPCやsmbやNFSやX11ではまった時間の方が長かったけど) ウノウラボ Unoh Labs: Web APIとしてのWebDAV を読んで、ファイルシステムとしてマウントできたりするものなので当然といえば当然ですが、WebDAVに用意されているメソッドがFUSEのインターフェイス(OSが提供するファイルシステムのインターフェイス)と全く同じなのに気がつきました。 FUSEがクライアント側でサービスを無理矢理ファイルシステムにマッピングすると便利だよねという話なのに対して、ここで述べられているのはサーバ側でAPIとしてWebDAVを採用することでファイルシステムにマッピングできて便利だよね、という話なわけです。上と下からファイルシステムにマッピングしたいという動きがあるということは、はさみうちの定理により、いろいろファイルシステムにマッピングすると便利ということを証明することができます。

なんだかんだいってもバイナリ、なんだかんだいってもローカルのファイルシステムなのです。


tags

  • FUSE
  • 「 FUSEを使ってはてなブックマークから POOKMARK Airlines へ乗り換える方法」のはてなブックマーク数
  • 「 FUSEを使ってはてなブックマークから POOKMARK Airlines へ乗り換える方法」deliciousブックマーク数
  • 「 FUSEを使ってはてなブックマークから POOKMARK Airlines へ乗り換える方法」をはてなブックマークに追加
  • save " FUSEを使ってはてなブックマークから POOKMARK Airlines へ乗り換える方法" to del.icio.us
  • 「 FUSEを使ってはてなブックマークから POOKMARK Airlines へ乗り換える方法」をリアルタイムブログ検索
  • permalink
  • クラッシュダンプを読んでその原因を究明する
  • rootkitとWindowsの Installable FileSystem (IFS)

comments

TypeKey Enabled
スタイル用のHTMLタグが使えます。
*required
Favicon for http://uva.jp/dh/mt/ひらた
2007.02.11 00:33

Fuse.pm ですが、コンパイルオプションの設定でなんとかなるようで、Developer Release の 0.09_1 だと、インストールできて example.pl は動きました。どれくらいちゃんと動くのか、確認していませんが、ご参考まで。

ku
2007.02.14 15:35

ありがとうございます!次回はOSXで試してみます。ほんとうは見慣れたGUIのもので実現したかったのでFinderで表示できるとうれしいです。

trackbacks

トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。

http://labs.gmo.jp/mt/mt-tb.cgi/92
©2010 Kentaro Kumagai, GMO Internet Labs., GMO Internet, inc.
bits and bytes
2007 .02. 02 19:13

tagcloud

  • API1
  • C/C++2
  • E4X1
  • FUSE2
  • Firefox18
  • HTML4
  • IE1
  • MySQL1
  • OSX4
  • Opera2
  • PHP4
  • XML1
  • XPCOM4
  • XPath3
  • apache2
  • binary2
  • book1
  • data11
  • debug4
  • design1
  • experiments3
  • extension10
  • google gears1
  • google maps API1
  • greasemonkey3
  • httpd5
  • javascript17
  • linux1
  • logging2
  • mobile3
  • perl4
  • tips4
  • tool11
  • vim2
  • visualization2
  • widget1
  • wii1
  • windows7
  • サービス6
  • 和訳1

Archives

  • 2008.02 (6)
  • 2008.01 (3)
  • 2007.12 (4)
  • 2007.11 (5)
  • 2007.10 (4)
  • 2007.09 (4)
  • 2007.08 (4)
  • 2007.07 (8)
  • 2007.06 (7)
  • 2007.05 (4)
  • 2007.04 (5)
  • 2007.03 (6)
  • 2007.02 (4)
  • 2007.01 (6)

about

  • bits and bytesのXML
  • 「bits and bytes」のCreative Commons
  • Powered by Movable Type
  • イベントと地図 - モグ
  • Use ecto to blog!
  • bits and bytesのはてなブックマーク数
  • bits and bytesをMy Yahoo!に追加
  • Subscribe with Bloglines