iPhone Tips/Lotus Notesのアドレス帳と同期する方法
出典: Fukudat.com
2009-2010年の冬休みの自由研究の成果として,Lotus Notesのアドレス帳をiPhone/iPod touch (FW3.1.2)の連絡帳にコピーする方法を編み出したので,ここに公開する. 逆(iPhoneで編集・更新したアドレス帳エントリーをLotus Notesにコピーする)は実現していない. 意外なことにカレンダーよりもかなり複雑であった.
目次 |
方針
Lotus Notesはアドレス帳のデータをvCard形式でファイルにエキスポートする機能が備わっている(アドレス帳を開いて,File->書き出しを選び,ファイルの種類にvCard 2.0 or vCard 3.0を選べばよい)ので,エキスポートされた vCardデータをiPhoneと同期がとれるアプリ(多分OutlookとかMobileMeとか)で取り込めばよさそうである.しかし,
- vCardへの出力をプログラム(LotusScript)から実行する手段が見当たらない.
- このためvCard経由で同期をとるには手作業でエキスポートしなければならない
- vCardのデータをiPhoneに送り込むことにできるアプリを(私が)持っていない
という理由でvCard形式経由での同期は断念.
ちょっと調べてみると,Lotus NotesにはXML形式でデータを出力することのできる NotesDXLExporter というクラスが用意されていて,任意のデータ(Lotus Notesの文書)をXMLで出力できることが分かった. 一度XMLになってしまえば,適当なスクリプト言語で自由にAddressBookのデータベースに変換することができる.
準備
次の道具を使って実装する.
- 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にアクセスできる環境,またはiPhoneにファイル転送できるソフト
LotusScriptのインストール
LotusScriptプログラムをLotus Notesの連絡先データベースに登録する.
- Domino Designerでエキスポートしたいデータが入ったアドレス帳DBを開く
- 普段,連絡先を眺めるのに使うビュー(私の場合は「連絡先(日本語)」ビュー)を開く
- 作成->アクション->アクションで新しいアクションを作成し,"Export to iPhone" という名前(でなくても何でもよい)でアクションを作成し,実行=クライアント,種類=LotusScriptとする
- Media:ExportAddressBook.lsの中身を,上で作成した "Export to iPhone"にコピーする(右図上).
- アクションのプロパティを開いて,「アクションバーにアクションを含む」「アクションメニューにアクションを含む」にチェックを入れ,アイコンの「Notes」に指定し適当なアイコンを選ぶ(右図下).
Perlスクリプトのインストール
XMLからSQLiteデータベースへの変換を行うPerlスクリプトをPCにインストールする.
- Media:sync-iPhone-AddressBook.plをPathの通ったディレクトリに置いて,実行可能にする
- Media:iPhone-AddressBook.tar.gzをゲットし,適当なディレクトリ(例えば,C:\Users\<ユーザ名>\lib)の下に展開する
- コンピュータ->プロパティ->システムの詳細設定->環境変数を選び,ユーザの環境変数として次の環境変数を作成する
- PERLLIBに上記のtarファイルを展開したディレクトリ(C:\Users\<ユーザ名>\lib)をセット
- iPhoneにiPhoneのIPアドレスをセット
使い方
Notes Client でアドレス帳を開いて,上記で編集したビューを開き,作成した"Export to iPhone"アクションのボタンを押して実行すると,次のように動作して Notes のアドレス帳が iPhone にコピーされる.
- %TMP%\AddressBook.xml にアドレス帳がエキスポートされる
- sync-iPhone-AddressBook.pl が起動し,%TMP%\AddressBook.xml を読み込んで %TMP%\AddressBook.sqlitedb が作成される
- OpenSSHを使って%iPhone%に%TMP%\AddressBook.sqlitedb がコピーされる
もしiPhoneがWiFi経由でアクセスできないのであれば,ファイル転送ソフト(例えばiFunBox)で%TMP%\AddressBook.sqlitedbをiPhoneの/private/var/mobile/Library/AddressBook/AddressBook.sqlitedbにコピーしてもよい.
