本稿ではWebインタフェースにて操作するカレンダ情報の表示と管理を目的とした、 WebCalendar 、 VCalendar 、 CaLogic という3つのプロジェクトを解説する。これらのプロジェクト間で共通しているのは、LAMPサーバにて動作することおよび、カレンダへのイベント登録をWeb形態のインタフェースにて扱うという点だ。
こうしたカレンダ関連の試験をする場合、私はicalshare.comにて一般公開されているiCalendarファイルの中からUS HolidaysとUK Holidaysを使うようにしている。また今回のインストールとテストに用いた環境は64ビットFedora 9マシンである。
WebCalendar
WebCalendarはPHPで記述されており、バックエンドにて使用するデータベースエンジンは複数のタイプに対応している。またシングルユーザだけでなくマルチユーザに対応したセットアップが可能となっている関係上、イベント予定や変更発生のメール通知および、1つのビューに複数のカレンダをオーバーレイするといった処理(異なるユーザの登録したイベント情報の合成など)ができるようになっている。
今回、WebCalendarバージョン1.2を手元のFedoraにソースからインストールするための作業として下記のコマンド群を実行した。他のディストリビューションの場合は、Apacheのconf.dディレクトリのパスなどが異なってくるかもしれない。
# mkdir -p /usr/local/php
# cd /usr/local/php
# tar xzvf /.../WebCalendar-1.2.0.tar.gz
# ln -s WebCalendar-1.2.0 WebCalendar
# vi /etc/httpd/conf.d/WebCalendar.conf
Alias /webcal /usr/local/php/WebCalendar
<Location /webcal>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</Location>
# service httpd reload
# cd /usr/local/php/WebCalendar
# chgrp apache includes
# chmod g+w includes
# chmod +s includes
以上の準備が終了したら、各自のWebブラウザからhttp://localhost/webcalにアクセスする。これから行うWebインストールの手順は4段階に分かれているが、最終的にWebCalendarのインタフェースに管理者ユーザとしてログインできれば、ここでの作業は終了だ。まずステップ1の作業として、settings.phpパスワードの設定をした後、そのパスワードを用いたログインをする。ステップ2では、WebCalendarで使用するデータベースの種類と位置を指定する。ステップ3では、データベーススキーマのインストール用ボタンが提示され、ステップ4ではサーバURLの指定が求められる(ここでは現在のサイトへのアクセス方式を基にした推定値が提示される)。その際には各自の希望する認証方式が確認されるが、同時にデフォルトの管理者アカウント作成を行うかも質問される。後者のオプションを選択した場合、最初はデフォルトの管理者パスワードでログインすることになるが、その後で独自のパスワードに変更しておくべきだろう。使用可能な認証方式は複数存在し、WebCalendar自身にデータベースのユーザ名とパスワード検索を行わせる方式の他、HTTP-auth、NIS、LDAP、IMAPを利用することもできる。
|
| WebCalendar |
WebCalendarで行うビューのユーザ定義では、カレンダの表示スパン(日間、週間、月間)とレイアウト(水平、垂直、タイムバー)の組み合わせおよび、当該ビューにてどのユーザのカレンダを表示させるかを指定する。
別ユーザの作成したカレンダは、レイヤの1つとして追加できる。各レイヤにはそれぞれ異なるカラー指定が行え、また複数レイヤに共通するイベントの重複を解消した単一表示をさせることも可能だ。例えばアメリカとイギリス用のカレンダの休日表示では、クリスマスなど多くの行事が重複しているはずだが、これらをそれぞれ1つのイベントにまとめられるのである。
WebCalendarにおけるリモートカレンダの追加はURLおよびID指定で行えるが、それだけでなくリモートカレンダの先頭名と末尾名での指定という方式も使える。おそらくリモートカレンダ機能は、別ユーザのカレンダをレイヤの1つとして追加する機能のコードを基にしているのであろう。
WebCalendarのシステム管理者ガイドには“two-way authenticated iCalendar(ics)sync”という機能のサポートについて言及されている。ただしWebインタフェース上に該当する機能は提示されていなかったので、私はicalclient.phpファイルにて利用可能なのだと推測したのだが、このファイルにはアルファ版段階のコードである旨の念入りな警告が付けられていた。実際、WebインタフェースのPreferencesにおいてこの機能を有効化したところ、http://localhost/webcal/icalclient.phpがMozilla Sunbirdにてリモートカレンダの1つとして認識されるようになり、イベントの追加と削除とキャンセル機能にアクセス可能となってくれたが、イベントの削除は正常に処理されなかった。この件に関してはicalclient.phpファイル中に記されていた、イベントの取り消しは削除ではなくキャンセルを使用する必要があるという警告の通りである。その他にしばしば遭遇したのが、Sunbird側から実行した変更結果がWebインタフェースに反映されるまで数秒を要するという現象だ。またicalclient.phpを使用した場合、Sunbirdでの編集をしなかったイベントがWebCalendarにて重複するという現象も散発するようである。これらの現象については、アルファ版コードである旨の警告は未だ有効ということだろう。インストールとセットアップの詳細についてはicalclient.phpファイルのヘッダ部にあるコメントを参照して頂きたい。
このようにWebCalendarは、単一画面上における異なるモードでの複数カレンダの表示を、ビューとレイヤを組み合わせる方式によりサポートしている。また各自のカレンダを外部から編集する方式として、Sunbirdなどの専用カレンダアプリケーションを利用できるようにしたのは、賢明な選択であったと評していいだろう。可能であれば、先に触れたicalclient.phpにてイベントが重複表示されるといった問題を、次のリリースにて修正してもらいたいところだ。なお今後の対応予定にはSyncMLのサポートも取り上げられている。
