2008年6月21日土曜日

アドレスブックとGmailの連絡先の同期ではまる

MacOS X 10.5.3 の新機能として、アドレスブックとGoogleのコンタクトリストの同期ができるようになっています。ただし、iPhoneまたはiPod touchのユーザのみ現れる機能のようです。.Macの同期機能も有効にすると、アドレスブック、.Mac、Gmail、iPod touchのアドレス帳の同期をとってくれるわけです。

これは便利だ…というわけで、早速試していたのですが、おおはまりしてしまいました。やっ
と落ち着いてきたのでこうして投稿しているわけですが、一時は、アドレスブックもGmailのコンタクトリストもぐちゃぐちゃになり、手作業による再構築を余儀なくされてしまいました。

具体的に起きた症状は次のようなものでした。
  • .Mac同期の度に「整合性がとれない」旨のメッセージが現れ、手作業での整合を強いられます。ところがここで整合作業を行うと、同じエントリが複数出現したり、姓名が登録されていないエントリ(Emailアドレスのみ登録されているエントリ)で違う人のエントリが一つにまとめられてしまったり、といった現象が起こります。何度整合をとっても、同期の度に同じ現象が発生します。
  • MacOS Xのアドレスブックでは、会社のエントリが登録できます。Gmailと同期をとる度に、この会社エントリの姓名が新たなエントリとして登録し直されてしまいます。会社エントリと担当者のエントリが別々に登録されてしまうわけです。
  • Google Talkのリストが完全に消えてしまいました。
他にもあったと思うのですが、忘れてしまいました…

英語のページも含めて情報収集していくと、こちらのページをはじめいくつかのページで同様の症状が報告されており、Gmailのコンタクトリストを完全に消してから同期しろ、とか、1つ前のGmailのバージョンを使え、とかいう示唆がありました。今更そんなこと言われてもねえ…と思っていたところ、Gmailと同期するならSpanning Syncのベータ版を使え、という示唆を発見しました(すいません、どこのページだったか失念しました)。Spanning Syncは以前からGoogle CalendarとiCalデータの同期に使っており、安定性はよく承知しています。それで、MacOS Xの純正同期機能をあきらめ、Spanning Sync 2.0のベータ版を使用して、アドレスブックとGmailコンタクトリストの同期を試みました。

確かに安定して同期が行えています。先に挙げた問題点はすべて発生しませんでした。しかし、これでめでたしめでたし、とはいきませんでした。Gmailのコンタクトリストで、名前がすべて「名」「姓」の順番になってしまうのです。「Takeo Kunishima」なら問題ないんですけど、「丈生 国島」となるのはちょっとどうかと…

これはそもそも、アドレスブックとGmailコンタクトリストで、データベーススキーマにギャップがあることに原因があるように思われます。アドレスブックでは「姓」と「名」が別のフィールドになっています。一方Gmailでは、姓名がまとめて一つの文字列フィールドになっています。ですから、Gmailからアドレスブックへの変換は何らかの文字列パターン照合でしかできないでしょう。欧米の名前であれば比較的容易でしょうが、日本人の名前の場合、「Takeo Kunishima」「Kunishima Takeo」「国島 丈生」のどれもあり得ます。これでは自動でパターン照合するのはほぼ不可能です。一方、アドレスブックからGmailへの変換についても、英語圏のことしか想定していないならば、単に名、姓の順に文字列を連接するでしょう。Spanning Syncは英語圏のことしか考えていないんじゃないかなあ、と思われるわけです。

データベーススキーマのギャップに原因があるのだとしたら、今のままのデータで完全に解決するのは不可能です。ということで、アドレスブックに登録されている名前をすべて「Takeo Kunishima」のようなローマ字表記にすることも考えました。これなら、Spanning Syncの想定しているデータ形式であり、全く問題なく同期が可能であると思われます。しかし、ローマ字表記は、人名の認識速度が漢字表記に比べて遥かに遅い。アドレス一覧から特定の名前を探し出す速度が全然違うわけです。根っから日本人なんだなあ、と思うのですが、ともあれ、この使い勝手を考えると、漢字表記を中心にせざるを得ません。

で、結局どうするか。「アドレスブックとGmailコンタクトリストの同期をしない」ということに落ち着きそうです。今回の一連の作業をやっているうち、同期をとらなくても使い勝手はそれほど落ちないんじゃないか、と思い始めたわけです。

Gmailは、メールを出した相手を自動でコンタクトリストに登録してくれますので、人手の手間はほとんどかかりません。また、iPod touch付属のメールアプリは、アドレス登録が非常に簡単に行えます。メールを見ているときにアドレスをクリックするだけで、登録されていないアドレスであれば、アドレス登録画面に飛びます。このメールアプリはGmailもIMAP経由で閲覧できますから、アドレスブックに登録したい人だけiPod touchで登録すれば、手間はあまりかかりません。あえて同期で苦労するよりも、同期せずにGmailとMac/iPod touch/.Macとを独立に管理したほうが、むしろ簡単な気がしています。

3 comments:

kazuNT さんのコメント...

はじめまして。
いろいろ試行錯誤して姓名が入れ替る問題と住所のフィールドの問題の解決方法を見つけました。

http://blog.toming.jp/2009/01/mac-os-x-leopard10.html

Takeo Kunishima さんのコメント...

はじめまして。ブログを拝見しました。とても興味深い解決策です。私はiCalから入力することがほとんどなので、そのまま応用するのは難しそうですが、これなら将来的に改善される可能性がありますね。
私のページと合わせ、アップルにフィードバックを送信しておきました。いずれ改善されるとよいのですが。

教師@イギリスの田舎 さんのコメント...

私もGmailのコンタクトとアドレスブックを同期させて大変なことになってしまいました。重複したものが大量に作られて、元の倍以上の量のコンタクトが作成されて、整理に2日かかってしまいました。