higuchi.com blog

The means justifies the ends

Quick Hack [サイボウズのスケジュールをiPod touchに同期させてみた]

iPod Touch
私が活動の拠点にしている会社では、スケジュール管理にサイボウズ Office 6を使っています。
実は、サイボウズを使うのはこれが初めてです。グループスケジューリングのソフトウェア(あえて、グループウェアとは呼ばない)については少々うるさいほうだと思うので、いろいろ言いたいことはあるんですが、まあそれは置いといて……それにしても、外部接続性がまったくないのはなんとかならんものか。
すでに配布やサポートが中断しているOutlookとの同期ソフトをちょっとしたワザを使って入手して、昔懐かしOutlook 2000をインストールして、いままで使っていたカレンダーをどうにかサイボウズに取り込みました。
つぎに、毎日持ち歩くデバイスでスケジュールを参照できるようにしようと思って調べてみたら、サイボウズの画面をスクレーピングしてiCalendar形式に変換してくれるCybozu2ICalというスクリプトをみつけました。これを使ってMacのiCal経由でiPod touchにスケジュールのデータを取り込むことにしたのですが、すんなりいかず、ちょっとした改造をしたらうまくいったので、忘れないうちにその方法をメモしておきます。 まず、MacにCybozu2ICalをインストール。これは、ダウンロードしてきて展開するだけ。でもそのままじゃPerlのモジュールがいくつか足りないので動きません。
PerlのモジュールをCPANでインストールするために、まずはMac OSのインストールディスクからXcode Toolsをインストール。
続いて、Cybozy2ICalを動かすのに必要なモジュールをインストール。ターミナルを開いて
sudo cpan -H -i Text::CSV
(以下同文で、インストールするモジュールの数だけ繰り返し)
でインストール完了。
Cybozu2ICalの設定ファイルを編集してから
./cybozu2ical > cybozu.ics
を実行すると、cybozu.icsというiCalendarファイルができます。
このファイルをiCalから読み込むとサイボウズのスケジュールがiCalに取り込まれました。
と、ここで問題発生。繰り返し予定(反復イベント)が繰り返しなしの普通の予定として取り込まれてしまっています。
iCalendarファイルの中をいじってみて、反復イベントを定義するRRULEプロパティの記述で、次の2点が問題だということが分かりました。
  • Cybozu2ICalがはき出すRRULEプロパティの記述では、たまたまUNTIL=xxxxxが一番最初に出てきていたのだが、どうやらiCalはUNTIL=xxxxxが最後(のほう)に来ないと反復イベントとして読み込んでくれないらしい
  • Cybozu2ICalの今のバージョン(0.13)では、Google Calendarでの反復イベント読み込みの不具合を回避するために、RRULEにWKST="SU"オプションを追加するようにしてあるのだが、どうやらiCalはこれが追加してあると反復イベントとして読み込んでくれないらしい
で、これを回避するためにちょっと改造してみました。

cybozu2ical (バージョン0.13)の85行目あたり。

my %rrules = $freq ne 'WEEKDAYS' ?
( FREQ => $freq, WKST => 'SU' ) :
( FREQ => 'WEEKLY', WKST => 'SU', BYDAY => 'MO,TU,WE,TH,FR' );
$rrules{UNTIL} = to_icaldate($item->until, $item->is_full_day)
if $item->until;
$args{rrule} = join ';', map { $_ . '=' . $rrules{$_} } keys %rrules;
というところを

my %rrules = $freq ne 'WEEKDAYS' ?
( FREQ => $freq ) :
( FREQ => 'WEEKLY', BYDAY => 'MO,TU,WE,TH,FR' );
$args{rrule} = join ';', map { $_ . '=' . $rrules{$_} } keys %rrules;
$args{rrule} .= ';UNTIL=' . to_icaldate($item->until, $item->is_full_day)
if $item->until;
に変更します。
で、無事、iCalにサイボウズのスケジュールが取り込めるようになりました。あとは、iTunesでiCalのカレンダーをiPodに同期するように設定しておけば、iPod touchをUSBで接続したときに自動的にカレンダーを取り込んでくれます。
この改造をすると、Google Calendarでの不具合が再発しちゃうんですが、私はGoogle Calendarを使ってないので、よしとします。iCalendarファイルの解釈は、いろいろ互換性の問題がありそうですね。

コメント

nhcjpnさんのコメント:

ひぐちさま、すみません、iPodさえ使いこなせない私、このレベルにはついていけませんが、その前に、携帯からビジネス携帯に移行するキャリアの動向など全体感を一度ご教授いただければと。

樋口 理さんのコメント:

よろこんで!ご都合の良いときにお声をおかけくださいませ。(私信モード)
2007/10/14 08:16

dieさんのコメント:

初めまして。こちらのサイトを参考にさせていただいていたのですが、
./cybozu2ical > cybozu.ics
を実行すると
dyld: lazy symbol binding failed: Symbol not found: _Perl_newXS_flags
Referenced from: /Library/Perl/5.8.6/auto/HTML/Parser/Parser.bundle
Expected in: dynamic lookup

dyld: Symbol not found: _Perl_newXS_flags
Referenced from: /Library/Perl/5.8.6/auto/HTML/Parser/Parser.bundle
Expected in: dynamic lookup

というエラーが出ます。
環境はPerl5.8.6、MacOS10.4.10です。
お手数をお掛けしますが、ご回答いただけると幸いです。
2007/11/19 14:58
Host: s86.ALPHA-e9.vectant.ne.jp - 124.110.100.86

樋口 理さんのコメント:

dieさん:

改造前のオリジナルプログラムは正常に動いていましたか?エラーの内容からすると、改造による問題ではなく、なにかお使いの環境に依存する、もとからある問題のように思えます。あいにく、Perlの動作環境については知見がありませんので、お力になれません。どなたか、適切な方におたずねください。

また、現在配布されているCybozu2icalは、このパッチで直している問題が修正されていますので、そもそもこの改造は必要でなくなっているはずです。
ご確認ください。
2007/11/19 15:07

dieさんのコメント:

樋口様
さっそくのご回答ありがとうございます。
改造はしておりませんので、環境の問題かもしれません。
サイボウズにログインする際、当方ではアカウントを設定しておらず、
漢字の名前とパスワードでログインできるようにしており、そのためconfig.yaml内の設定で
username: 山田 太郎
と記述しているのですが、その辺が問題という事はありますでしょうか。
2007/11/19 16:34
Host: s86.ALPHA-e9.vectant.ne.jp - 124.110.100.86

樋口 理さんのコメント:

すみませんが、cybozu2icalの中身のことは、私ではなくしかるべき詳しい方にお聞きになった方がよろしいかと。
2007/11/19 16:42

dieさんのコメント:

そうですね。失礼しました。
開発された方にお伺いしてみます。
ありがとうございました。
2007/11/19 16:57
Host: s86.ALPHA-e9.vectant.ne.jp - 124.110.100.86

通りすがりさんのコメント:

通りすがりの者です。

>username: 山田 太郎
>と記述しているのですが、その辺が問題という事はありますでしょうか。

username でなく、userid で設定されたら如何ですか?
ユーザIDは、サイボウズ上の「ユーザー名簿」で確認できますよ。

そんな私は、こちらのサイトを参考にインストールに挑戦中 (^^;

くぼさんのコメント:

はじめまして。
jailbreak を試みたところ失敗いたしました。w
途中まではいったのですが

BSD root: md0, major 2, minor 0

というのが無限にでてきます

解決法はありますかね??

悪戦苦闘さんのコメント:

樋口様
はじめまして。もし、おわかりであれば教えてください。このコーナーを参考に挑戦していますが、Cybozu.icsの書き出しのところでエラーが出ます。
5.8.8とLeopardですが、10.5は問題なくうごくのでしょうか?
2008/4/10 00:44
Host: FLH1Aib223.tky.mesh.ad.jp - 125.193.37.223

樋口 理さんのコメント:

悪戦苦闘さん:
私は Leopard で問題なく使えています。

上にも書いたとおり、今配布されているcybozu2icalでは、ここにかいてある改造に相当する修正がされていますので、なにも手を入れずにそのまま動きます。
ですので、そのまま動かしてみてください。
2008/4/10 07:02

悪戦苦闘さんのコメント:

樋口様

 早速のコメントありがとうございます。
もう一点、ActivePerlについては現在5.10が配布されていますが、こちらとの組み合わせでも問題ないでしょうか?
いずれにしても再挑戦してみます。
2008/4/10 07:19
Host: FLH1Aib223.tky.mesh.ad.jp - 125.193.37.223

樋口 理さんのコメント:

ActivePerlですか?Windowsの?
私は普通に /usr/bin/perl を使っていますので、ActivePerl についてはなんとも……お役に立てずすみません。
2008/4/10 07:41

コメントを書く

関連するかもしれない記事

Macユーザー限定 [サイボウズのスケジュールを iPhone のカレンダーに同期する方法]

今日日珍しく外部ツールとの連携がヒジョーに弱いサイボウズ。カレンダーの中身を携帯端末などに Sync ...

この記事を読む »

手段と目的が逆転しているかも [Cybozu2ICalの改造 その2]

先日のCybozu2ICalのパッチを大満足で使っていたのですが、サイボウズで「毎月第○週の×曜日」と、月の第...

この記事を読む »

Dropbox on HP mini 1000 MI Edition

lpia vs. i386 [HP mini 1000 MIE に Dropbox]

右下のシステムトレイに Dropbox アイコン飽きずに HP mini 1000 MI Edition を日常の持ち運びメモ機に...

この記事を読む »

Windows 転送ツール

懐かしの Laplink [XP から Windows 8.1 への移行には Windows 転送ツールが使えない件]

ゴールデンウィークを迎えてご実家に帰省したら、サポート終了した Windows XP パソコンを新しい Win...

この記事を読む »

Work Around [MacBook Air に Windows をインストール]

MacBook Air に Parallels Desktop を使って Windows をインストールしたときにちょっととまどったこと...

この記事を読む »

TypePad AntiSpam ステッカー

読者プレゼント [NP_TypePadAntiSpam]

先日の続きです。 シックス・アパートの無料コメントスパム除けサービス《TypePad AntiSpam》を Nucl...

この記事を読む »

大は小を兼ねない [Photoshop のインストールがこける件]

Photoshop Elements 6.0 の Mac 版が出ました。Mac 用の Photoshop Elements はバージョン 4.0 が出たき...

この記事を読む »

iPhone ない人のためのガイガーカウンター測定ソフト [Geiger Robo]

iPhone ない人のためのガイガーカウンター測定ソフト [Geiger Robo]

自作ガイガーカウンターの計測データをグラフ化したり、インターネットで公開したりするためのソフ...

この記事を読む »

もっとヘテロジニアス [Macに使える802.11g USB 無線LAN]

先日の記事の続きです。 上の記事は11Mbpsの古いUSB無線LANアダプタをMacで使う汎用ドライバの話でし...

この記事を読む »

試行錯誤の結果 [iPod touch FW1.1.3 Jailbreak の手順]

ちょっとした事情があって、一度ファームウェアを1.1.3にアップデートして、2,480円のアップグレードま...

この記事を読む »