アドレス帳同期システムの開発

05H101 藤木仙雅

目次 1 はじめに

今日では、様々な場所にアドレス帳が分散している。例えばパーソナルコンピュータ (以下、コンピュータ) 内に年賀状作成ソフトウェア、メーラー^{*1}、 Web メールなどのアドレス帳が存在し、さらには携帯電話端末にもアドレス帳が存在する。このように複数のアドレス帳を扱っていると管理するのは容易ではなく、全てのアドレス帳に一つずつ情報を入力していくには非常に手間がかかる。さらには情報の入力洩れなども起こりうる。例えば、会社のコンピュータに仕事用のアドレス帳を更新した時、自宅のコンピュータにも同じ情報を入力しておないと、いざ自宅で必要な時に必要な情報が分からないという情況になってしまう。さらには、年賀状作成ソフトウェアは用途が限られており、頻繁に扱うことが少ない。よって、他のソフトウェアでアドレス帳を更新した際に年賀状作成ソフトウェアのアドレス帳の更新を忘れることがしばしば見受けられる。そこでアドレス帳同期、共有システム^{*2}を用い、アドレス帳管理を容易にすることができる。

本研究ではユーザのアドレス帳管理や情報入力の効率を上げるため、アドレス帳同期システムを開発した。

*1 電子メールの作成、送受信や送受信したメールを保存、管理するソフトウェア。

*2 アドレス帳同期システム: 分散したアドレス帳を集約し同期させるもの。また異なるコンピュータ間で自動同期させ常に最新の情報を

維持させる。アドレス帳共有システム:アドレス帳同期システムに、他ユーザとも共有する機能を持たせたもの

2 卒業研究の目的

本研究では複数のソフトウェアに分散したアドレス帳を集約し、同期させることを目的とする。マルチプラッ

トフォームに^{*3}対応し様々な OS^{*4} で動作させる。 CUI^{*5}と GUI^{*6}で動作させ、幅広いユーザが扱えるようにす

る。この時、 CUI をバックエンドで動作させ、 GUI をフロントエンドで動作させる。異なるコンピュータ間の同

期には LDAP ^{*7} [?] サーバを用いる。 LDAP サーバを用いたアドレス帳の同期は Web メールやメーラで標準搭

載されている機能でもあり、開発するアドレス帳同期システムで同期させたアドレス帳を LDAP サーバに登録

し、 Web メールやメーラで扱うこともできる。対応するアドレス帳形式には、様々なソフトウェアで互換性が高

い vCard 形式^{*8}を用いる。

*3 アプリケーションソフトウェアが複数の OS に対応していること。

*4 Operating System

*5 Character-based User Interface

キーボードを用いて入力を行い、文字によって出力を行うユーザインターフェース

*6 Graphical User Interface

コンピュータグラフィックスとポインティングデバイスを用いて、直感的な操作を提供するユーザインターフェース

*7 Lightweight Directory Access Protocol

インターネットやイントラネットなどの TCP/IP ネットワークで、ディレクトリデータベースにアクセスするためのプロトコル

*8 電子名刺の標準フォーマット。 RFC2426 で規定。

3 既存のシステム

アドレス帳共有、同期システムとして以下のシステムが存在している。

• Ripplex [?] Ripplex 社が開発した無料アドレス帳ソフト。 web サービスではなく、クライアントアプリ^{*9}である。複数のコンピュータ間でアドレス帳情報が自動的に同期。他ユーザのアドレス帳と共有し情報管理が容易。アドレス帳だけでなく、 Skype^{*10}、 Twitter^{*11}や mixi^{*12} サービスの情報も管理可能である。各情報は Ripplex サーバではなく、ユーザのコンピュータ内にて管理される。

• Plaxo [?] Plaxo 社が提供するサービス。ネットワークを活用した今までにない、常に最新の情報を保つアドレス帳として開発。自分の情報を公開し、他ユーザと共有するのが第一趣旨であり、アドレス帳やスケジュール帳など共有することができる。現在は pulse という機能が追加され、ブログ、写真、ビデオや様々なレビューなども共有することができる。各情報は Plaxo サーバにて管理。

• Mobile Me [?] Apple 社が提供しているいサービス。メール、アドレス帳、カレンダーやギャラリーなどを同期。メールは iPodTouch^{*13}や iPhone^{*14}だけでなく、 MacOS の Mail.app や MS-Windows の Outlook ^{*15}, Outlook Express^{*16}, Windows Mail とも連係。アドレス帳は MacOS、 MS-Windows のアドレス帳と同期させることができる。各情報はクラウド^{*17}に保存。

• Soocial [?] コンタクト情報にフォーカスしているオランダ発の Web サービス。携帯電話端末、 Mac、 Gmail^{*18}や Outlook のアドレス帳データを同期できる。

*9 クライアント・アプリケーション

デスクトップパソコンやモバイルパソコン内で動作するアプリケーション。 *10 ルクセンブルクに籍を置く Skype Technologies 社が提供するインターネット電話サービス。 *11 Twitter 社が開発した、個々のユーザが「つぶやき」を投稿し合うことでつながるコミュニケーション、サービス。 *12 株式会社ミクシィが運営する SNS(Social Networking Service)

*13 Apple 社が開発したミュージックプレイヤー。 iPod にゲーム、インターネットの機能を追加したもの。

iPod とは Apple 社が開発したミュージックプレイヤーである。 *14 Apple 社が開発した、携帯電話端末、 iPod やインターネットデバイスを一つにしたもの。 *15 Microsoft Outlook

Microsoft 社が Windows 向けに販売している Exchange Server の標準クライアント。電子メールの機能以外に、予定表、連絡先管理、仕事管理やメモなどの機能が実装されている。 *16 Microsoft の Internet Explorer に付属する電子メール及びニュースグループ送受信用クライアントソフトウェア。

Microsoft Outlook とは別物であり、 Internet/Intranet 専用の電子メールクライアント。 *17 Apple のオンラインサーバ *18 Google が提供している web メール

4 開発したシステム

本研究で、アドレス帳同期システム (Address-Book Synchronous System) を開発した。本システムの概略図を図??に示す。

図 1 システムの概略図

4.1 開発環境

• ハードウェア (AT 互換機)

– CPU:Intel(R) Celeron(R) CPU 2.80GHz

– Cache Memory:256KB

• OS ： Vine Linux 4.2 [?] / Ubuntu Linux 8.04 [?] [研究室内マシン/ 個人所有マシン]

• 開発言語： Ruby [?] 1.8.5 / 1.8.6 [研究室内マシン/ 個人所有マシン]

4.2 処理の流れ

以下に処理の流れと付加する機能について説明する。

4.2.1 同期させるアドレス帳の入力

同期させるアドレス帳 Path を一つずつ入力。その際に入力したアドレス帳が存在するか、また vCard 形式であるかを判定する。入力されたアドレス帳が存在し、 vCard 形式ならば、アドレス帳の Path を path.txt ファイルに書き込む。

アドレス帳入力画面を図??に示す。アドレス帳入力のフローチャートを図??、 ??に示す。

5

図 2 アドレス帳入力画面

4.2.2 入力したアドレス帳の集約

アドレス帳集約の際には、入力されたアドレス帳を一件ずつ解析。解析が終了すれば Backup データを用い、既に集約しているアドレス帳と比較し、同一名称で登録されているデータがないか確認。同一名称で登録されているデータを発見すれば、双方が同一ユーザなのかユーザ側が判断。同一ユーザであれば双方のデータを結合させる。同一ユーザ結合の際、同項目に別の情報が入っていた場合もユーザ側に判断させる。同一名称で登録されているデータが発見されなければ解析終了。

解析には一件のアドレス帳一項目ずつ解析し、名前、住所、電話番号、 E-MAIL の個人情報を抽出。抽出した個人情報の内、名前は同一ユーザ発見の際に使用、その他の項目は各ユーザの情報として使用。

入力されたアドレス帳の解析が全て終了すれば、 RFC2426 [?] で定められている vCard 形式のデータ型に置き換える。

アドレス帳集約画面を図??に示す。

アドレス帳集約のフローチャートを図??〜?? に示す。

4.2.3 集約したアドレス帳の同期

path.txt ファイルを参照し、同期させているアドレス帳全てに書き込み処理を行う。書き込む際には nkf^{*19} [?] を用いて文字コード変換を行う。同時に Backup ファイルも作成する。 Backup ファイル作成時には vCard の version ^{*20}別で作成する。

*19 文字コードを変換するコマンド

*20 現在、 version2.1 と version3 が存在する。

図 3 アドレス帳集約画面

4.2.4 同期させたアドレス帳の更新起動時もしくは renewal コマンドにて同期させたアドレス帳の更新を行う。 path.txt ファイルを参照し、全てのアドレス帳の最終更新時間を取得。最終更新時間の新しいものと、 Backup

ファイルの更新時間を比較。最終更新時間を取得したアドレス帳が新しものならば、他の同期させているアドレス帳へ書き込み処理を行い。新しく Backup ファイルを作成する。この場合も、 nkf を用いて文字コードの変換を行う。

アドレス帳更新画面 (更新無し) を図??に示す。アドレス帳更新画面 (更新有り) を図??に示す。アドレス帳更新のフローチャートを図??〜??に示す。

図 4 アドレス帳更新 (更新無し) 図 5 アドレス帳更新 (更新有り)

8 4.2.5 同期させているアドレス帳の一覧表示

pathfile コマンドにて同期させているアドレス帳の一覧を表示させる。アドレス帳一覧表示画面を図??に示す。

図 6 アドレス帳一覧表示

4.2.6 同期の解除 delete コマンドにて同期させているアドレス帳の解除を行う。解除方法として、現在同期させているアドレス帳の一覧を表示。その中から同期を解除させたいアドレス帳の

Path を入力し、入力したアドレス帳が正しければ一覧から削除させる。アドレス帳同期解除画面を図??に示す。

図 7 アドレス帳同期解除

10

5 考察

アドレス帳同期システムを開発し、実際に稼働させた。本システムについて、以下の利点と問題点が挙げられる。

5.1 利点

マルチプラットフォームで動作する Ruby を用いて開発したので、様々な OS で動作する。コンピュータ内に分散されたアドレス帳を集約させることで、アドレス帳の管理、情報入力の手間を省くことができる。対応するアドレス帳に vCard 形式を用いた。 vCard 形式は RFC2426 で規定されているので様々なソフトウェアでの互換性が高い。

5.2 問題点

現在は CUI のみの動作なので幅広いユーザが扱うことは難しい。 Ruby でプログラミングするにあたり、 RFC2426 で規定されているデータ型全て (非標準の型は除く) に対応させて開発した。それにより、一つずつ型の解析を行っている為、読みにくいソースコードとなっている。 vCard 形式は RFC2426 で規定されているが、 “X-” で始まる名前を持つものは非標準の私的な型であり、各ソフトウェアによって様々な情報が当てはめられている。よって、全てに対応させることは出来ない。

6 まとめ

本研究では、分散したアドレス帳を集約し、同期させるシステムを開発した。これにより複数のアドレス帳の管理を容易にし、情報入力の手間を省いた。また、対応するアドレス帳に vCard 形式を用いることにより、様々なソフトウェアに対応することができる。

テスト運用として、携帯電話端末 (docomo P905i)、 Windows マシンに標準搭載されている “アドレス帳” ソフトウェアと Gmail アドレス帳を用いてアドレス帳の同期を行い、アドレス帳同期システムとして稼働することを確認。しかし、携帯電話端末のアドレス帳は JIS X 0201 右側部分が使われている。現状では JIS X 0201 右側部分が認識されておらず携帯電話端末で集約したアドレス帳を読み込んだ際、振り仮名が空白となってしまう。

7 今後の課題

• LDAP サーバの導入異なるコンピュータ間で同期させるため LDAP サーバを導入する。しかし、アドレス帳をサーバに置くことを嫌うユーザが存在する可能性があるので、異なるコンピュータと同期させるか否かをユーザ側で判定をさせる。

• GUI でも動作幅広いユーザが扱えるように、 CUI だけでなく、 GUI を用いて動作させるようにする。

• アドレス帳の自動更新更新を確認するのに、開発したシステムの再起動、 “renewal” コマンドや更新ボタンを押す手間を省くため、アドレス帳更新の確認を分単位で行う。更新確認時間の間隔はユーザ側で指定する。

• Ruby 環境でないマシンでの稼働現在は Ruby 環境のマシンでしか稼働しない。よって Exerb^{*21}や RubyScript2Exe^{*22}を用いて exe ファイルに変換し、 MS-Windows でも稼働させる。

• Backup データの作成現在、 Backup データは過去一回分しか作成していない。よってユーザの誤操作により意図しない結果により更新してしまった場合のことを考慮し、過去数回分の Backup を作成する。過去何回分作成するかをユーザ側で指定させ、複数の Backup データを作成する。

*21 Ruby のスクリプト、拡張ライブラリを単一で動作可能な Windows 実行形式ファイルに変換するソフトウェア。 *22 Ruby スクリプトから Windows 用と Linux 用の実行形式ファイルを作成するソフトウェア。

謝辞

本研究を進めていく上で、ご教授頂いた大垣斉講師、藤井信夫教授、情報安全工学研究室の卒業研究生並びに情報システム工学科卒業生の方々に深く感謝の意を表します。

参考文献

[1] LDAP, [http://e-words.jp/w/LDAP.html]

[2] Vine Linux, [http://www.vinelinux.org/]

[3] Ubuntu Linux, [http://www.ubuntulinux.jp/]

[4] オブジェクト指向スクリプト言語 Ruby, [http://www.ruby-lang.org/ja/]

[5] Ripplex, [http://www.ripplex.com/jpn/index.html]

[6] Plaxo, [http://www.plaxo.com/?lang=ja]

[7] Mobile Me, [http://www.apple.com/ja/mobileme]

[8] Soocial, [http://www.soocial.com/]

[9] RFC2426, [http://www.y-adagio.com/public/standards/tr vcd 2426/toc.htm]

[10] nkf, [http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230849/]

(注)URI は全て 2008 年 11 月 25 日時点のもの

付録 A フローチャート

A.1 アドレス帳入力のフローチャート

図 8 delete メソッド図 9 main-cui.rb

16

A.2 アドレス帳集約時のフローチャート

図 10 clearn メソッド図 11 settype メソッド

図 12 setvcard メソッド

18

図 13 els メソッド

19

図 14 collect メソッド

20

図 15 infdata メソッド図 16 infbdata メソッド

図 17 code-change メソッド図 18 moji メソッド

22

図 19 collect.rb(1)

23

図 20 collect.rb(2)

24

図 21 collect.rb(3)

25

A.3 アドレス帳更新確認のフローチャート

図 22 code-change メソッド図 23 moji メソッド

27

図 24 time メソッド

28

図 25 watch.rb (1)

29

図 26 watch.rb (2)

30

図 27 watch.rb (3)

31

付録 B ソースコード

B.1 main-cui.rb

main-cui.rb

B.2 collect.rb

collect.rb

B.3 watch.rb

watch.rb