iPhone Tips/Lotus Notesのカレンダーと同期する方法
出典: Fukudat.com
Lotus NotesのカレンダーをiPhoneにコピーする方法.逆(iPhoneで編集・更新したカレンダーエントリーをLotus Notesにコピーする)は実現していないので,同期とはいえない(もし要望があれば作りますが,私自身は必要としていないんで,期待した人はごめんなさい).
2011年1月 iOS4にバージョンアップしたらまたしてもテーブル構造が変わっていて動かなくなってしまった.簡単に対応できそうなのだが,直前にリリースされたGooCalSyncをハックすることで,双方向の同期が可能になったため,そちらに乗り換えることにした.
目次 |
1 変更履歴
- 2008/8: 夏休みの自由研究の成果として,iPod touch (FW1.x)向けにCSV経由の方法を開発し,公開.(FW2.x, 3.xでも,iPhoneがカレンダーDBを自動的に変換してくれたので,何とか使えた)
- 2010/1: 冬休みの自由研究の成果として,現在のiPhone 3G (S) (FW3.x) に対応し,XML経由とする方法を編み出したので公開.
- 2011/1: iOS4のCalendarのデータベーススキーマに変更があり,そのままでは動かない.(簡単に直せそうだが,GooCalSyncのほうが便利そうなので,当面そちらを使って見ることにする)
2 方針
Lotus NotesはカレンダーのデータをiCalendar形式でファイルにエキスポートする機能が備わっている(カレンダーを開いて,File->書き出しを選び,ファイルの種類にCalendar Fileを選べばよい)ので,エキスポートされた iCalendarデータをiPhoneと同期がとれるアプリ(多分OutlookとかMobileMeとか)で取り込めばよさそうである.しかし,
- iCalendarへの出力をプログラム(LotusScript)から実行する手段が見当たらない.
- このためiCalendar経由で同期をとるには手作業でエキスポートしなければならない
- iCalendarのデータをiPhoneに送り込むことにできるアプリを(私が)持っていない
という理由でiCalendar形式経由での同期は断念.
アドレス帳の場合と同じように,
- NotesDXLExporterを使ってLotusScriptからカレンダーをXMLファイルに出力し,
- それをiPhoneのCalendarデータベースに書き込み,
- そのデータベースをiPhoneにコピーする
方法を採用する
3 準備
使用する道具は以下の通り.
- jailbreakしたiPhone (FW 3.1.2 7D11)
- CydiaからインストールしたOpenSSH
- 以下のソフトが動く Windows PC
- Notes Client (V8.0.2を使用したが,何でもよい)
- Domino Designer (同上)
- cygwinのPerl (V5.10を使用したが,何でもよい)
- CPANからゲットした XML::Simple, Net::SCP, DBD::SQLite
- PCからWiFi経由でiPhoneにアクセスできる環境 (必須じゃないけど)
4 LotusScriptのインストール
LotusScriptプログラムをカレンダーDBに登録する.
- Domino Designerでエキスポートしたいデータが入ったカレンダーDB(Mail DB)を開く
- 普段,カレンダーを眺めるのに使うビュー(私の場合は「($Calendar)」ビュー)を開く
- 作成->アクション->アクションで新しいアクションを作成し,"Export to iPhone" という名前(でなくても何でもよい)でアクションを作成し,実行=クライアント,種類=LotusScriptとする
- Media:ExportCalendar.lsの中身を,上で作成した "Export to iPhone"にコピーする(右図上).
- アクションのプロパティを開いて,「アクションバーにアクションを含む」「アクションメニューにアクションを含む」にチェックを入れ,アイコンの「Notes」に指定し適当なアイコンを選ぶ(右図下).
5 Perlスクリプトのインストール
XMLからSQLiteデータベースへの変換を行うPerlスクリプトをPCにインストールする.
- Media:sync-iPhone-Calendar.plをPathの通ったディレクトリに置いて,実行可能にする
- Media:iPhone-Calendar.tar.gzをゲットし,適当なディレクトリ(例えば,C:\Users\<ユーザ名>\lib)の下に展開する
- コンピュータ->プロパティ->システムの詳細設定->環境変数を選び,ユーザの環境変数として次の環境変数を作成する
- PERLLIBに上記のtarファイルを展開したディレクトリ(C:\Users\<ユーザ名>\lib)をセット
- iPhoneにiPhoneのIPアドレスをセット
6 使い方
Notes Client でカレンダーを開いて,上記で編集したビューを開き,作成した"Export to iPhone"アクションのボタンを押して実行すると,次のように動作して Notes のカレンダーが iPhone にコピーされる.
- %TMP%\Calendar.xml にカレンダーがエキスポートされる
- sync-iPhone-Calendar.pl が起動し,%TMP%\Calendar.xml を読み込んで %TMP%\Calendar.sqlitedb が作成される
- OpenSSHを使って%iPhone%に%TMP%\Calendar.sqlitedb がコピーされる
もしiPhoneがWiFi経由でアクセスできないのであれば,ファイル転送ソフト(例えばiFunBox)で%TMP%\Calendar.sqlitedbをiPhoneの/private/var/mobile/Library/Calendar/Calendar.sqlitedbにコピーしてもよい.
7 リンク集
- iPhone Calendarデータベースの構造
- Lotus Notesのアドレス帳と同期する方法
- Lotus Sandbox - Notesカレンダーを iCal 形式で Export/Importする - V5 の話でちょっと古い.
- Today's E90 - Lotus NotesのカレンダーをiPhoneに - この方法(FW1.x用)をベースにした詳しい方法を載せてくださっています.
