2008 年 2 月の履歴(もしくは日誌)


2008 年 2 月

2 月 14 日

iCal から Micoroformats 対応のページを生成する

Safari Microformats plugin というソフトウェアがあります.これをインストールすると Mac の Safari ブラウザで Microformats に対応したページを閲覧するときに,イベントの情報を iCal に取り込んだり,人のコンタクト情報をアドレスブックに取り込んだりできます.「2008 年 2 月 イベントカレンダー」のページだと荒川サイクリングや曽我梅見サイクリングの情報があって,これを iCal に取り込めます.

ぼくはサイクリングのイベントカレンダーのページを自分の iCal のデータをツールで変換して生成しています.iCal の iCalender のデータを Perl や XSLT を使って変換しているので,Mac OS X でなくても Linux とか Cygwin とかでも同様のことができると主増す.このことについて紹介したのは 2004 年 7 月 7 日だから,もうずいぶん昔のことです.

でも公開している情報が半端で整理されていなかったので,今回整理してみました.

この ical2hevent-20080214.zip を展開して,実行すれば iCal のデータを Microformats 対応の XHTML のページに変換できます.

iCal から iCalendar 形式のデータを書き出すには,書き出す「カレンダー」を「iCal」アプリケーションの「カレンダー」リストから選択します.ファイルメニューから「書き出す...」を選んで書き出すと拡張子 ics の iCalendar 形式のデータが書き出せます.

次に iCalendar 形式のデータを変換する方法ですが,簡単のためにまずは iCal から書き出したファイルを変換するのではなくて,Internet から iCalendar 形式のデータをダウンロードしてきて,それを変換する手順で説明します.
説明は Mac OS X 前提ですが Linux や Cygwin を使っている人なら,それらの環境でどうすれば良いのかはすぐ分かると思います.

  1. ical2hevent.zip をダウンロードする.
  2. ical2hevent.zip を適当なところで展開する.ダブルクリックすれば OK.
  3. ical2hevent ってフォルダができる.
  4. ical2rdf.pl をダウンロードして,ical2hevent フォルダの中に保存する.
  5. もし Jcode.pm がインストールされていなければ,Jcode.pm をダウンロードして,ical2hevent フォルダの中に保存する.
  6. アプリーケーションフォルダの中のユーティリティフォルダの中のターミナル.app を起動する.
  7. ターミナル.app で開いたウインドウに cd って入力する.
  8. 続けて,ターミナル.app のウインドウに ical2hevent ってフォルダをドラグアンドドロップする.
  9. すると例えば cd /Users/myname/Downloads/ical2hevent みたいに表示された状態になるのでキーボードのリターンキーを押す.
  10. ターミナル.app で開いているウインドウに ./ical.sh って入力してからリターンキーを押す.
  11. ical2hevent ってフォルダの中に Site ってフォルダがあって,そこにいろいろファイルができる.
  12. ical2hevent ってフォルダの中に Site ってフォルダの中身をすべて自分の Web サーバにアップロードする.
  13. もしくはファイル名の終わりが .html になっているファイルをダブルクリックして開いてみる.

この ical.sh ってファイルの最初のほうで,cycling-event.ics をダウンロードしていて,少し後で ical2rdf.pl を使って RDF/XML に変換しています.もし iCal から書き出したファイルを変換するのであれば,cycling-event.ics をダウンロードしている,curl -o cycling-event.ics http://onohiroki..... って行の先頭に # をつけてコメントアウトしておいて,iCal から書き出したファイルを cycling-event.ics っていうファイル名に変えてから ical2hevent ってフォルダに入れておいてください.それから ical.sh を実行すれば iCal から書き出したファイルを変換することができます.まぁここらへんはそれぞれで工夫してみてください.

制限
iCal で繰り返しデータになっているものは,毎月とか連続で数日っていうイベントについては対応できていますが,毎日とか毎週っていう繰り返しイベントには対応していません.もともとサイクリングのイベントをカレンダー形式で表示する目的だったのですが,毎週とか毎日っていうサイクリングのイベントが自分のまわりにはなかったんですよ.
ical.sh っていうシェルスクリプトの中では処理する ics ファイルは cycling-event.ics となってます.もし必要なら適当に書き換えてください.
Apple の iCal でなくても iCalendar のデータなら行けそうですが検証していません.

データ変換の流れは次のような感じです:

  1. iCal から iCalendar データを書き出すか,iCalendar データをダウンロードする.
  2. iCalendar データを ical2rdf.pl で RDF/XML である RDFicalendar に変換.
  3. RDFicalendar データを XSLT で XML に変換する.このときに繰り返しデータを展開する.
  4. XML から XSLT で XHTML に変換する.このときに Microformats に対応する.

Safari Microformats plugin が出てきて Microformats が実際に応用できる例が出てきたので面白いですね.誰か iCal のデータをこんな感じで変換して公開してみませんか?

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20080214n1 TrackBack