普段のスケジュール管理にAdvanced/W-ZERO3 [es]でOffisnail Date for WM6 Proを使っているが、勤務先では某グループウェア、自宅では家族でeGroupWareと、複数個所にスケジュールを入力するのがなかなかに鬱陶しい。勤務先とプライベートでは書き込む内容がけっこう違うから仕方ないとしても、Ad[es]のOffisnail Dateは勤務先のグループウェアの一部と自宅のeGroupWareの大半を合成した感じで、重複する内容が多い。と言うかほとんど重複する。そこでこの辺のムダが省けないものかと、探してみた。

Offisnail Date
するとオープンソースのFunambolと言うツールを使うと、SyncML プロトコルを介してeGroupWareとWindows Mobile間でデータの同期ができるらしい。いいぞ。
早速Funambolの入手に向かうと、CAB ファイルが "Windows Mobile Smartphone" 用と "Windows Mobile PocketPC" 用で別になっていて、どちらを使えばいいのか迷う。とりあえず両方ダウンロードしてそれぞれAd[es]で実行してみると、"Windows Mobile Smartphone" 用ではプラットフォームが違うと怒られた。
と言うことで "Windows Mobile PocketPC" 用をインストールしてFunambolを起動させると、サーバーの URL と認証情報を尋ねられ、ここでまた迷う。「多分eGroupWareのログインページの URL を入れても違うんだろうな」 と調べてみると、ここでちゃんと解説されていた。"rpc.php" なんてインターフェイスがあるわけか。
Funambolの画面は実にシンプル。基本的な操作は同期対象の項目か "Sync All" ボタンをタップするだけ。僕はメールを自宅の IMAP サーバーで管理していてeGroupWare自体やその他複数の手段でアクセスできるので、デフォルトのまま Contacts、Calendar、Tasks を対象とした。通信データ量が少ないに越したことはない。

Funambol メイン画面
しかしこの状態で同期を試みると、"Error connecting to the server." と言われて失敗。Funambolはログレベルを変更できるので、[Menu] → [About Funambol] → [Menu] → [Logging] で "Log Level" を "Debug" にして再度同期を実行。エラーの再現を確認してログ設定画面の [Menu] → [View] でログを見てみると、
HttpSendRequest error 12045: この証明機関は、無効か正しくありません
とのこと。eGroupWareはApacheで SSL に redirect させるようにしてたんだけど、そうですか、オレオレ証明書はダメですか。でも何でこの部分だけログが日本語なんだ?

Funambol ログ設定画面
Funambol側で 「証明書の検証をしない」 的なオプションは見当たらないので、Apacheの設定を変更。と言っても SSL への redirect は外したくないので、mod_rewrite でFunambol以外 (=HTTP_USER_AGENT に文字列 "Funambol" が含まれない場合) を redirect の対象とするようにする。その後Funambolのアカウント設定で "Server location" に設定してあった URL の "https" を "http" にし、ようやく同期ができるようになった。
ただ、サーバー側で正規の証明書を使用している場合は当然そのまま SSL 経由で同期できるはずだが、僕の環境では、上記の理由で SSL を経由せずに認証情報をやり取りせざるを得ない。これは嬉しくないので、データの同期は別途構築してあるOpenVPN経由に限定することにした。"Server location" を Web サーバーのローカル IP アドレスで指定しておけば、うっかり事前の VPN 接続を忘れて同期を試みて、VPN トンネルの外からアクセスしてしまうことを防げる。同期が成功するのは、VPN トンネルの内側を通って認証された場合のみだ。

Funambol アカウント設定画面
変更したログレベルを、元の "Error" に戻して作業完了。Funambolが保存するログは最後のアクセス時のみのようなので放置しても問題はなさそうだけど、一応、ね。
■ 関連リンク
