Googleとのお付き合い

良くも悪くもAndroidでは様々なデータがGoogle等に渡されて保存されます。
まぁ正直なところOSの設定や特に重要でないアプリの設定程度なら別にそれがGoogleで保存されていても構わないし寧ろ便利なことの方が多いくらいです。また、位置情報を録られていたとしても特に隠し事や疚しいことも無いのでそれもまた個人的には構いません。と、いうか「Google位置情報サービス」は積極的にOnにしているくらいです。
しかし、それが例えばスケジュールであるとか、知人の個人情報の塊といっても良いアドレス帳であるとなれば話は違います。何処でどう利用されるか解らないところに置いておくわけにはいきません。

先ずは用意しなければならないのがCalDAVサーバとCardDAVサーバです。
ここでどこかの会社が提供しているサーバを選んでしまうとGoogleにデータを預けるのと同じと言ってよいでしょう。
やはりCalDAV,CardDAVサーバは自前(自社)で用意するのが一番です。
幾つか簡単に立てられるCalDAV,CardDAVサーバはありますが、個人的にオススメしたいのはBaïkalです。

Baïkalは非常に軽量のCalDAV,CardDAVサーバで、ApacheなどのhttpサーバとPHP5.3.1.以上(with php-pdo, php-xml)、それとSQLite3かMySQLがあればあとは5分程度でセットアップできます。

問題はAndroid側で、iPhoneやWindowsPhoneの様に標準でCalDAV,CardDAVに対応しているわけでも無い上に何故か公開されているCalDAV,CardDAV対応アプリも殆ど無い状態です。

CalDAVを設定する

CalDAV-Sync beta
CalDAV-Sync beta

Android4.1の場合は再起動でCalDAV-Sync betaの設定が消える事象が発生する機種があるので発生した場合だけJB Workaround CalDAV-Syncもインストールします。(インストールするだけ)発生しなければ不要です。

ジョルテ
Androidでは有名なアプリですが、ジョルテです。このカレンダー/予定表アプリは使いやすいだけでなく、同期させるカレンダーの種類を選択できることです。作者には申し訳ないですがこの記事の趣旨からするとジョルテクラウドには同期させたくありません。

2016年6月30日追記: ジョルテではCalDAVカレンダーが使えなくなりました。代わりにaCalendarあたりがシンプルで使い勝手が良いのでオススメに。

では、CalDAV Syncを設定してジョルテに予定が表示されるようにします。

「Add new account」を選択
手順1 ドロワーからCalDAV Syncを起動し「Add new account」を選択する。
「CalDAV」を選択
手順2 「CalDAV」を選択する。
URL入力
手順3 CalDAVサーバのURLを入力
CalDAVサーバホスト名/cal.php/ または CalDAVサーバホスト名/cal.php/calendars/ユーザー名/default/ と入力する。(どちらも最後にスラッッシュ付けます)
CalDAVサーバが非SSLならチェックを外す。
ユーザー名とパスワードを入力し「Next」を押す。
「Next」を押す。
手順4 デフォルトカレンダーが登録されたので「Next」を押す。
「Sync from server to phone only」のチェックを外す
手順5 メールアドレスを入力し
「Sync from server to phone only」のチェックを外す
「Finish」を押す。
「Edit account settings」を選択
手順6 ドロワーからCalDAV Syncを起動し「Edit account settings」を選択する。
「Sync entire calendar」にチェック
手順7 「LONG TERM SYNC RANGE」の直下の「Sync entire calendar」にチェックを付ける。Sync entire calendarという項目は複数あるので注意。CalDAV Syncの設定完了。
「カレンダー」を選択
手順8 ドロワーからジョルテを起動する。メニューボタンを押して「カレンダー」を選択する。
Default calendar(org.dmfs.caldav.account)にチェック
手順9 Default calendar(org.dmfs.caldav.account)の左の四角にチェックする。(右の四角は文字色変更なので必要に応じて)
もちろん、この記事の趣旨に従うとGoogleカレンダーなどはチェックを外して利用しないようにします。
備考: 手順7のLONG TERM SYNC RANGEのSync entire calendarにチェックすることで過去の全てのイベント等が表示されます。ただし、過去に非常に多くのイベント等を入れている人はチェックを外して過去1ヶ月のだけ同期する方が良い場合もあります。

なお、予定表のデータをGoogleカレンダーからCardDAVサーバに移す手順の詳細は割愛します。
Googleのウェブから予定データをエクスポートしてThunderbirdのカレンダ機能アドオンのLightningにCalDAVサーバを登録してGoogleからエクスポートしたデータをインポートしてCalDAVサーバに登録という方法があるということだけ紹介しておきます。

CardDAVを設定する

CardDAV-Sync beta
CardDAV-Sync beta

Android4.1の場合は再起動でCardDAV-Sync beta設定が消える事象が発生する機種があるので発生した場合だけJB Workaround CardDAV-Syncもインストールします。(インストールするだけ)発生しなければ不要です。

CardDAV Sync betaの設定の仕方は基本的にCalDAV Sync betaと殆ど同じです。
サーバURLの部分が CardDAVサーバホスト名/card.php/ (最後のスラッシュを付ける)というのと「Sync from server to phone」のチェックを外すかEdit account settingsで「SYNC DIRECTION」直下の「One-Way-Sync」のチェックを入れないところだけ注意します。

これでCardDAV Sync betaの設定は終わりです。CardDAVに登録された連絡先が表示されないようならAndroidの「設定」の「アカウント」でCardDAVを同期し直してて下さい。

Googleに登録されている連絡先はGoogleのウェブでvCard形式でエクスポートしてから削除します。

Windows7までを使っている人にはCardDAVサーバとデータをやりとりするアプリを持っていないかもしれませんが、eM Clientを利用するとGoogleでエクスポートしたvCard形式のデータをCardDAVサーバに登録することができます。また、連絡先の編集もeM Clientで自由に行えます。そもそもメールクライアントアプリとしてもeM Clientは優秀なのでオススメです。

Xperiaシリーズを使っている場合はCardDAV Sync betaを使うとXperiaの「連絡先」アプリのバグのせいで「連絡先」から登録済の誰かをクリックすると「連絡先」アプリがエラーで終了するようです。(手持ちのXperia S(NX)でも発生することを確認しました)
この場合はGoogle PlayからContact View Freeをインストールし起動して[Contact]を選択。「連絡先」アプリが起動するので登録済みの誰かを選択すると「連絡先」と「Contact View Free」の選択画面になるのでContact View Freeを選択し「毎回」にします。
これで連絡先の詳細を開く時に自動的に「Contact View Free」で表示されるようになります。なお、Contact View Freeアプリは単独では「連絡先」アプリの代替となることはできません。(連絡先アプリから呼び出されることを想定しているようです)