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の連絡先データベースに登録する.

  1. Domino Designerでエキスポートしたいデータが入ったアドレス帳DBを開く
  2. 普段,連絡先を眺めるのに使うビュー(私の場合は「連絡先(日本語)」ビュー)を開く
  3. 作成->アクション->アクションで新しいアクションを作成し,"Export to iPhone" という名前(でなくても何でもよい)でアクションを作成し,実行=クライアント,種類=LotusScriptとする
  4. Media:ExportAddressBook.lsの中身を,上で作成した "Export to iPhone"にコピーする(右図上).
  5. アクションのプロパティを開いて,「アクションバーにアクションを含む」「アクションメニューにアクションを含む」にチェックを入れ,アイコンの「Notes」に指定し適当なアイコンを選ぶ(右図下).

Perlスクリプトのインストール

XMLからSQLiteデータベースへの変換を行うPerlスクリプトをPCにインストールする.

  1. Media:sync-iPhone-AddressBook.plをPathの通ったディレクトリに置いて,実行可能にする
  2. Media:iPhone-AddressBook.tar.gzをゲットし,適当なディレクトリ(例えば,C:\Users\<ユーザ名>\lib)の下に展開する
  3. コンピュータ->プロパティ->システムの詳細設定->環境変数を選び,ユーザの環境変数として次の環境変数を作成する
    • PERLLIBに上記のtarファイルを展開したディレクトリ(C:\Users\<ユーザ名>\lib)をセット
    • iPhoneにiPhoneのIPアドレスをセット

使い方

Notes Client でアドレス帳を開いて,上記で編集したビューを開き,作成した"Export to iPhone"アクションのボタンを押して実行すると,次のように動作して Notes のアドレス帳が iPhone にコピーされる.

  1.  %TMP%\AddressBook.xml にアドレス帳がエキスポートされる
  2. sync-iPhone-AddressBook.pl が起動し,%TMP%\AddressBook.xml を読み込んで %TMP%\AddressBook.sqlitedb が作成される
  3. OpenSSHを使って%iPhone%に%TMP%\AddressBook.sqlitedb がコピーされる

もしiPhoneがWiFi経由でアクセスできないのであれば,ファイル転送ソフト(例えばiFunBox)で%TMP%\AddressBook.sqlitedbをiPhoneの/private/var/mobile/Library/AddressBook/AddressBook.sqlitedbにコピーしてもよい.

リンク集