オープンソースのカレンダ・マネージャを使う
Internet Mail Consortiumは、iCalendar(RFC2445)、iTIP(RFC2446)、iMIP(RFC2447)といった、カレンダリングおよびスケジューリングに関するメジャーなインターネット標準を定めている団体だ。iCal(iCalendarの略)をサポートしている製品を選ぶべきだ。iCalは、以前のvCalendar標準を基にして、カレンダ・オブジェクトの構造を定義するものである。
すべてのカレンダ・プログラムがカレンダの格納にiCal形式を使用しているわけではないが、iCalendarデータをインポートおよびエクスポートできるものがほとんどだ。iCalendarデータを含むファイルには、.ics拡張子が付くことが多い。
iTIPは、イベント、TO-DO、ジャーナル、free/busy iCalenderオブジェクトが、カレンダ・システム間でどのようにやり取りされるかを定めている。iMIPは、そのやり取りを電子メールで行う方法を定めている。
2つの共有法iTIPとiMIPでは、ユーザがグループ・スケジューリングを行うことができる。つまり、会議の通知を同僚に送り、受信した側はその通知に対して、受け入れ、拒否、別日程の提案などを行うことができる。幸いなことに、プロプライエタリ・ソフトウェア・パッケージでも、このマルチユーザ・カレンダリングがサポートされている。
また、複数のコンピュータから同じカレンダにアクセスできるのも便利だ。この機能を利用すれば、カレンダの同期が可能になる(たとえば、会社のPC、ノートブック、PDA、自宅のPCなどから同じカレンダにアクセスできる)。さらに、管理スタッフが紙の予定表を管理しているような場合、電子カレンダをこのように共有しておけば、そのスタッフが簡単にこれを管理することができる。一部のカレンダはプロジェクト・チームなどのグループ、または国全体(国民の祝日を反映したカレンダなど)に対応させることもできる。
実際、Apple Computerは、自社製品であるiCalのユーザがインターネット経由で登録できるカレンダを提供している。これらのカレンダも、その他の無料Webサイトで配布されているその他のカレンダもiCal形式なので、iCal対応のアプリケーションであればどれでも、これらを利用できる。
このようにカレンダの共有を行うには、サーバベースの製品が必要であり、相互運用性の面では厄介だ。ここに、ストレージ形式としてiCalenderを使用するメリットがある。オープンソース・プログラムには、プロプライエタリのサーバ製品とインターフェイスさせるための何らかの次善策があるのが普通だが、サーバ側でインターネット標準を採用し、それをサポートしているクライアントを選択する意義は十分ある。
以下で、オープンソースのカレンダリング・クライアントを2つ紹介する。サーバ側で考慮すべき点についても見ていこう。
Mozilla Calender/SunbirdMozilla FoundationによるクロスプラットフォームのMozilla Calender/Sunbirdアプリケーションは、開発の初期段階であるにもかかわらず、大きな期待を抱かせるものになっている。これはMozilla Calendarの名で、Mozilla、Firebird、およびThunderbirdのアドオンとして、また、Sunbirdの名でスタンドアロン・アプリケーションとして発表されている。
Sunbirdでは、iCal形式カレンダを複数管理することができる。各カレンダは、ローカルに置くことも、WebサーバからWebDAV(HTTPプロトコルの拡張機能で、発行を可能にする)経由でアクセスすることもできる。
私が試用したバージョン(0.9b)にはいくつか問題があった。たとえば、複数のアラームが同時にポップアップすると、JavaScriptインタプリタがエラーメッセージを表示するまでの数分間、アプリケーションがフリーズしてしまうのだ。それでも、Mozilla/Netscape 7、Thunderbird、Firefoxのユーザにとって優れたアドオンであることには変わりない。Sunbirdは、カレンダの共有にApache/WebDAVを利用して、複数のOSで問題なく動作した。
KOrganizer私が気に入っているオープンソースのカレンダリング・アプリケーションはKDEで提供されているもので、KDEのメール・クライアントやアドレス帳アプリケーションとうまく統合することができる。KOrganizerはオープンソースのiCalenderライブラリlibicalを基にしており、Mozilla Calendarと同様にストレージ形式としてiCalを使用できる。
KOrganizerでは、複数のカレンダを扱えるほか、kioslaveプラグインによって実装されるKDEの仮想ファイルシステム・レイヤを利用することで、WebDAV(HTTP)、FTP、そしてSSH(fish kioslaveを利用)経由でリモートのカレンダを読み書きできる。これにより、柔軟性が大きく向上する。プライベート・ネットワークから外部へはHTTP接続しか許可せず、外部からプライベート・ネットワークへはSSH接続しか許可しないことの多いファイアウォールでも、KOrganizerではインターネット経由で個人のカレンダに簡単にアクセスできる。さらに、Sunbirdやその他のiCalベースのプログラムとカレンダを共有するのも容易だ。
アラームは、korgacという小さなデーモンによって処理される。korgacはKDEシステム・トレイにあり、KOrganizerが立ち上げられていなくても常時実行されている。コマンドライン版のkonsolekalendarも含まれており、ここでは、カレンダ・ファイル内のイベントを表示、追加、削除したり、インポート/エクスポートを行ったりすることができる。これを、Unix環境での強力なスクリプティング機能と組み合わせることにより、まったく新しいレベルの柔軟性が生まれる。ターミナル画面での作業に抵抗がないユーザにお勧めしたい。
iMIPのサポートでは、他のユーザとのグループ・スケジューリングが可能になる。他のユーザがOutlookやEvolutionを使っていても問題ない。KOrganizerにはExchange Serverプラグインも用意されており、異種ネットワーク環境にあるUnixユーザに最適だ。
KOrganizerは、PDAや携帯電話との同期という点ではmutlisync機能のあるEvolutionに見劣りするが、Qt GUIライブラリの組み込み版であるQtopiaで動作するバージョンもある。Qtopiaは、Sharp ZaurusやOpie(HPのiPAQ PDA向けLinuxディストリビューション)上で動く。また、KOrganizerを気に入ったなら、Cygwinを使ってMicrosoft Windowsで利用することもできる。これで、移植性はMozilla Calendarにも引けを取らない。
サーバ側KOrganizerではFTPやその他のネットワーク・ファイル・プロトコルを利用できるが、Mozilla Calendar、AppleのiCalなどその他のクライアントでは、カレンダ共有用のネットワーク・プロトコルとしてWebDAVのみを使用しているようだ。すべてのユーザがKOrganizerとその他のプロトコルを採用するのでない限り、WebDAVを利用するのが無難だろう。
WebDAVは、mod_davとmod_dav_fsという2つのモジュールによってApache Webサーバに実装される。この2つのモジュールは、HTTPプロトコルの拡張機能を扱ってファイル・システムとのインターフェイスを司るほか、安定した分散ファイル共有に欠かせない、ファイルロックのメカニズムを提供する。
iCalファイルをWebDAVで登録(ダウンロード)する操作は、通常のHTTP GETリクエストと何ら変わりない。生のiCalデータは一般的なWebブラウザで表示できる。とはいえ、iCalを見栄えの良いWebフォーマットに変換してくれる、PHPベースのphpiCalendarのようなWebフロントエンドがあれば非常に便利だ。
また、管理者が任意のユーザ・グループを定義し、それぞれに、特定のカレンダや複数のカレンダが格納されたフォルダへの読み取り専用または読み書きのアクセス許可を与えることができるような、認証およびアクセス制御のメカニズムがあるとよいだろう。このようなアクセス制御は、前述のWebインターフェイスと組み合わせて、カレンダリング・プログラムを持たないユーザも、インターネット経由で、自分のカレンダに安全にアクセスできるようにするために役立つ。つまり、予定を確認するためだけに、出張先にノートブックやPDAを持っていく必要がなくなるのだ。インターネット・カフェからカレンダを確認すれば済む。結論
HTTP/WebDAVとiCalendarは、非常に強力なコンビネーションだ。Microsoft Exchangeなどのプログラムで、カレンダをWeb経由で共有するために必要なRPC-over-HTTPのように、プロトコルの複雑さに悩まされることもない。
Unixのicalのような10年選手のプログラムから、機能を犠牲にすることなく最新のSunbirdやKOrganizerなどのプログラムに簡単に移行できるということは、基底にあるテクノロジの設計が優れていることを意味する。より良いカレンダリング・テクノロジの採用や移行を考えているなら、iCalendarベースのアプリケーションを検討してみてはいかがだろうか。
原文