先週末、駅のホームで知人からケータイに電話があり、新端末の話で大盛りあがり。見た目の変化はあまりないけど、W-CDMAとCDMA2000両対応、いいよね! レンズも明るくなったうえにフルHDムービー対応だって! なんてったって、Siri! 最高だよSiri! ……そのとき女子高生が歩いてきて、思いきり避けられました。そう、iPhone 4Sだからね。
さて、今回は「リーディングリスト」について。Safari 5.1で導入されたこの機能、クラウドを通じてiOSデバイスと同期できることから、Webページの未読/既読管理に絶大な効果を発揮する。iOS 5とiCloudが正式リリースとなったいま、もっと注目されていい存在だ。そのリーディングリストの実体に迫ってみたい。
リーディングリストのここがイイ!
リーディングリストは、有り体にいえばブックマークの一種だ。しかし、ブックマークの中身がWebページのURLとそのタイトルに過ぎないことに対し、リーディングリストには"未読か既読か"を管理するための情報が加えられる。それゆえに、Safariなど同機能をサポートするWebブラウザでなければデータとして共有できないが、iOS 5にリーディングリストをサポートしたMobile Safari(WebKit 534.46ベース)が収録されたため、一気に活用範囲が広がった。
たとえば、自宅で気になるWebページをいくつか見つけたとしよう。これを通勤電車内のiPhoneで見るとなると、従来はiTunesの機能で同期するか、Mobile Me経由で同期するか、URLを自己宛のメールなどに書き出しiPhoneで受け取るかの大きく3通りだったはずだが、iCloudのサービス開始とMobile Safariのリーディングリスト対応により、ワイヤレスかつ無償、しかも全自動での同期が可能になった。しかもリーディングリストだから、未読/既読の情報付きだ。
視野を広げれば、Evernoteなどのクリッピングサービスを使う方法もあるだろうが、リーディングリストは(iCloudの利用を除けば)Webブラウザの機能のみ、それもごくシンプルなUIで実現している。iOSデバイス持ちなら使わない手はないと思うが、いかがだろう?
リーディングリストを根掘り葉掘り
このように、iOSデバイス持ちには重宝されること間違いなしのリーディングリストだが、欠点とまではいかないまでも難点が1つある。カスタマイズ性がまったくといっていいほどないのだ。サイト名と本文の先頭から抽出した要約文により内容を判断するしかなく、Webページにカテゴリ情報や重要度を付けておいて閲覧時の参考にする、といった使い方には対応しない。
カスタマイズの余地があるとすれば、リーディングリストの情報が記録されたファイルを直接編集することだ。
OS X版Safariでは、ブックマーク情報を「~/Library/Safari/Bookmarks.plist」に保存している。拡張子からわかるとおり、このファイルは「プロパティリスト」であり、OS X Tiger(v10.4)以降のデフォルトとなったバイナリフォーマットタイプだ。そのため、一般的なテキストエディタでは内容を表示することも変更することもできない。Xcode 3までは、「Property List Editor」が標準装備されていたが、現在では「Xcode」に統合されてしまったため、適当なGUIツールも見当たらない。
しかし、「plutil」コマンドを使いXMLフォーマットに変換すれば、人間が識別可能となりテキストエディタでの編集も可能になる。リーディングリストの情報もBookmarks.plistに保存されているので、Webページの要約文を編集したうえでバイナリフォーマットに再変換し、元の「~/Library/Safari/Bookmarks.plist」として保存すれば、理屈のうえではリーディングリストの内容を編集できるはずだ。
実際やってみた。適当なディレクトリに「Bookmarks.plist」をコピーし、plutilコマンドでXMLフォーマットに変換、それを適当なテキストエディタ -- Cocoa Emacsを利用したがUTF-8を編集できればどれでも構わないだろう -- で開き、ドメイン名の一部を検索語としてWebから対象の文字列を探し出して編集後に上書き保存、それを再びplutilコマンドでバイナリフォーマットに変換した。
$ cp ~/Library/Safari/Bookmarks.plist .
$ plutil -convert xml1 Bookmarks.plist
(適当なテキストエディタで編集)
$ plutil -convert binary1 Bookmarks.plist
$ cp Bookmarks.plist ~/Library/Safari/
Safariが終了していることを確認し、cpコマンドで「Bookmarks.plist」を「~/Library/Safari」にコピー、その後Safariを起動してリーディングリストを表示したところ……よし、OK! 無事、Webページから自動抽出された文章は消え、筆者が挿入した文言が表示されていた。正直、この作業がどれほどの価値があるかはわからないが……同等の処理を実現する機能拡張が公開されるとうれしい、とは思う。