iPhone Tips/Calendarの解析
出典: Fukudat.com
会社のグループウェア(Lotus Notes)のカレンダーと同期をとることを目指して,iPhone のカレンダーの解析を行う.
この解析結果に基づいてLotus Notesのカレンダーと同期する方法を作った.まだ不完全だが,とりあえず私としては満足.
1 データの所在
予定などを記録しているデータの所在を探す.
$ ssh -l root ipod find / -name "*Calendar*" /Applications/DemoApp.app/Calendar.framework ...<snip>... /private/var/mobile/Library/Calendar/Calendar.sqlitedb
sqlitedb に入っていることを確認.
Calendarアプリからいくつか確認用の予定データを入力してから,下のコマンドでファイルをゲット.file コマンドで SQLite 3.x database であることを確認.
$ scp root@ipod:/private/var/mobile/Library/Calendar/Calendar.sqlitedb . $ file Calendar.sqlitedb Calendar.sqlitedb: SQLite 3.x database
2 テーブル構造
sqlite3 でテーブルの構造を確認.
$ sqlite3 Calendar.sqlitedb SQLite version 3.5.5 Enter ".help" for instructions sqlite> .tables Alarm OccurrenceCache AlarmChanges OccurrenceCacheDays Calendar Recurrence CalendarChanges RecurrenceChanges Event Task EventChanges TaskChanges EventExceptionDate _SqliteDatabaseProperties sqlite> .schema Alarm ...<snip>...
解析結果をテーブル構造に示す.
要約すると
- Event テーブルにイベントとして予定を格納
- OccurrenceCache テーブルにイベントを発生日にグルーピングしてキャッシュ
- OccurrenceCacheDays に1日ごとのイベントの数を数えておく
- Alarm にアラームを鳴らす時間を設定
している.
