読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

サイボウズの予定を、Googleカレンダーを使ってiPhoneのカレンダーと同期する

技術メモ

 仕事のスケジュール管理は、サイボウズを使用しています。またプライベートのスケジュールはGoogleカレンダーを使っています。そして普段持ち歩いているのはiPhoneです。スケジュールをiPhoneで一本化して見たいなぁと思って試行錯誤してみました。幾つか方法があるのですが、サイボウズのスケジュールをGoogleカレンダーに同期を取って、更にGoogleカレンダーとiPhoneのカレンダーを同期させれば良いようです。少々手間は掛かりますが、一度設定してしまえば後は自動で同期がとれるのでかなり便利です。


 全体の流れとしては、次の通りです。
1. Cybozu2ICalを使って、サイボウズのスケジュールをiCal形式でエキスポートする
2. iCalファイルをWebサーバに公開する
3. Googleカレンダーから、Web上のiCalファイルを読み込むように設定する
4. Micrisoft Exchangeの機能を使ってiPhoneのカレンダーとGoogleカレンダーを同期する


 では、順を追って設定していきましょう。

1. Cybozu2ICalを使って、サイボウズのスケジュールをiCal形式でエキスポートする

 まずは、サイボウズとGoogle Calendarの同期を取ります。Ogawa::BuzzさんのCybozu2ICalというCPANモジュールが便利です。事前に下記のモジュールをCPANでインストールしておきます。

Text::CSV 1.0+
DateTime
LWP
Crypt-SSLeay
Class::Accessor::Fast
Data::ICal
YAML または YAML::Tiny 

その後に、Cybozu2ICalのモジュールをダウンロードして解凍するだけです。


次に環境ファイルの設定です。

cybozu_url: http://www.example.com/cbag/ag.cgi
calname: Your Calendar Name
username: user
#userid: XX
password: pass
time_zone: Asia/Tokyo
tzname: JST
input_encoding: shiftjis
output_encoding: utf8
#output_encoding: ncr
calendar_driver: SyncCalendar
#calendar_driver: ApiCalendar
date_range: 30

 urlやusername,passwordはそれぞれ設定して貰うとして、注意すべきは文字コードとcalendar_driverです。私の場合、最初にUTF-8でインポートしたらGoogleカレンダーの方で文字化けしました。そこで、ncrというコードに変更したらGoogleカレンダーの方では文字化けしなかったのですが、iPhoneのカレンダーで文字化けしました。色々試行錯誤したところ、文字コードをUTF-8で指定して.htaccessで文字コードの指定をしてやればGoogleのbotはちゃんと読み込んでくれるようになりました。(他の環境では試していないので、人によっては変わるかもしれません。)
 calendar_driverについては、お使いのサイボウズによって変える必要があるようです。


設定ファイルをconfig.yamlとして保存して下記のコマンドを実行します。

$ ./cybozu2ical > cybozu.ics

2. iCalファイルをWebサーバに公開する

 無事、iCal形式でエキスポート出来ればひとまず成功です。次は、適当なWebサーバにファイルを公開しましょう。注意点は、Webサーバにアップロードする為に、検索エンジンからインデックスされる可能性があることです。ファイル名を長くしたり、.htaccessで制限したりとある程度の対策はとれますが、根本的には人に見られる可能性があるということは必ず念頭に置いておいて下さい。また、前述の通り、.htaccessで文字コードの指定をしてください。

AddType "text/calendar; charset=UTF-8" .ics


 GoogleカレンダーからのiCalファイルの読み込みはGoogleBotで来るようなので、下記の設定を追加すればよいはずです(試していません) 2009/10/05追記:駄目っぽいです。後でアクセスログがちゃんと出る環境を作って試してみます。

SetEnvIf User-Agent "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html" calbot
order deny,allow
deny from all
allow from env=calbot

 1,2のエキスポートと公開の部分をcronで登録しておけば、自動的にサイボウズとGoogleカレンダの同期がとれるようになります。

3. Googleカレンダーから、Web上のiCalファイルを読み込むように設定する

 次にGoogleカレンダーの方から、iCalファイルを読み込むように設定します。これは割と簡単で、Googleカレンダにログインして、「他のカレンダーを追加」->「URL」を選択して、先ほど公開したURLを入力するだけです。追加した後で数分で同期されます。その後は、定期的に同期を取ってくれるようです。

4. Micrisoft Exchangeの機能を使ってiPhoneのカレンダーとGoogleカレンダーを同期する

 最後にiPhoneのカレンダーとGoogleカレンダーの同期を取ります。iPhoneでGoogleカレンダーを見るよって方は必要ないかもしれません。やり方はこのサイトに詳しく書いているので、簡単に説明します。
1. iPhoneの設定から「メール/連絡先/カレンダー」を選択する
2. アカウントの追加でMicrisoft Exchangeを選択する
3. アカウントの設定を行う
   ユーザ名、パスワードにGoogleのを設定した後に、サーバにm.google.comといれる
4. Google syncの設定を行う
   iPhoneのsafariで、http://m.google.com/sync/にアクセスして設定する。
   言語モードをEnglishにしてから、アカウントの設定をするだけ


 以上です。文字コードでハマった以外は、すんなりいけました。かなり便利ですよ。一度お試しあれ


参考にしたサイト:
Ogawa::Buzz: Cybozu Office 6のカレンダーを Google Calendarで表示する
Cybozu2ICal - ogawa - サイボウズオフィス6のカレンダーをiCalendar形式に変換するスクリプト。 - Project Hosting on Google Code
【便利!】サイボウズのスケジュールをGoogleカレンダーで確認!!|イムIT! - 仏教系!?IT活用ライフハックメモ
iPhone標準のカレンダーとgoogleカレンダーを同期させる一番便利で簡単な方法(複数のカレンダーのアカウント共有可)
Cybozu2ical (alglab)


Gmail超仕事術―効率と生産性が飛躍的にアップする!
山路 達也 田中 拓也
アスペクト
売り上げランキング: 12927