トップページ

2006年10月20日

Googleカレンダーを携帯で利用するPHPスクリプト

これは自作のGData API用クラスライブラリのデモとして制作した、携帯電話向けにGoogleカレンダーの表示と編集を行うウェブアプリケーションです。
しかしそもそも、携帯電話の画面にHTMLだけで、カレンダー/スケジューラのまともなインタフェースを作るのは結構無理難題なわけで。いちいち通信が必要なウェブアプリじゃあ、操作性も決してよろしくなく。携帯電話でGoogleカレンダーを利用する理想形は、やっぱ、Googleカレンダーとデータを同期するJavaアプリとかだと思うのですよ。実際iアプリなどには優れたカレンダー/スケジューラが既に多くあり、これらがこういう機能を備えれば、こんなウェブアプリはそりゃもう用無しだ罠。

予定リストの表示 カレンダー形式の表示 予定の詳細 予定の編集

PC/PDAで、このスクリプトのオンラインデモを確認できます。
このデモでは、アカウントの認証をこのアプリの本来の方式ではなく、AuthSubという方式で行います。この認証方式は、iモードやEZwebなどの携帯電話ブラウザからは利用できません。またGoogle Apps for Your Domainのアカウントも利用できません(当然ですが、このアプリの本来の方式では、いずれも利用できます)。

アーカイブのダウンロード

» gcal.zip 0.9.5 (eternally beta) issued 2007-06-06

機能制限

以下は現時点でGoogle側に不具合があるための制限です。追記参照

動作要件とか

設置手順

このアプリ自体の認証は、携帯電話の端末ID(製造番号とかサブスクライバIDとかシリアル番号とか)とパスコード(暗証番号)で行います。(端末IDが送信される状態で)ログインフォームに暗証番号を入力するだけという、ケータイフレンドリーな認証ですね。
そういうわけで、最初に設定ファイル(Config.inc.php)に、端末IDとパスコード、そしてGoogleアカウントのメールアドレスとパスワードを登録しておく必要があります。

  1. アーカイブ内の各ファイルをサーバの任意のディレクトリにアップロードし、「data」ディレクトリのパーミッションを707など、書き込み可能なものに変更します。
  2. 携帯ブラウザで_check_auth.phpにアクセスし、パスコードを入力して表示される内容をメールなどでPCに送ります。この内容を、Config.inc.phpファイルの「$auth_db」とある箇所に登録してください。「SERIAL」と表示される内容を$auth_dbの「serial」欄に、「PASS」と表示される内容を$auth_dbの「password」欄に、それぞれ登録します。
  3. 引き続き$auth_dbの、「google_username」欄にGoogleアカウントのユーザ名(@記号以降のドメイン名までを含むメールアドレス)を、「google_password」欄にそのパスワードを登録し、Config.inc.phpファイルをサーバにアップロードします。
  4. PCや携帯のブラウザでgcal.phpにアクセスして、期待通りに動作するか確認してみてください。この時点ではまだ、認証はパスコードのみで、端末IDでの認証は行っていないので、PCのブラウザでもアクセスできる筈です。
  5. 最後に、Config.inc.phpファイルの冒頭にある「define('GCAL_USE_DEVICE_ID_FOR_AUTHENTICATION', true);」とある行の、先頭のコメント記号(ふたつのスラッシュ記号)を削除し、これをサーバにアップロードしてください。これで、認証時に端末IDも照合されるようになり、端末IDを登録した携帯電話以外からはアクセスできなくなります。

gcal.phpのファイル名は任意のものに変更できます。設定などは不要です。
HTML表示を変更するにはTemplate.htmlを編集してください。各種の設定はConfig.inc.phpで行います。

ありがちなトラブル

スクリプトにアクセスするとHTTP 500 Internal Server Errorになる。
アーカイブ中の.htaccessファイルをサーバにアップロードしている場合は、この. htaccessの記載内容による設定変更が許可されていないことが原因かもしれません。.htaccessファイル中の「php_flag」で始まる行を削除して、再度試してみてください。ただこの場合、サーバのPHPの設定次第では、このスクリプトは期待通りには動作しないかもしれません。
日時が日本時間じゃない?
PHP4ではスクリプトが明示的にタイムゾーンを設定することができないため(できたっけ?)、日時はスクリプトが動作しているサーバのタイムゾーンに沿ったものとして表示されます。例えば海外のレンタルサーバなどでPHP4の場合は、日時が現地のタイムゾーンで表示されるかもしれません(適切なタイムゾーンが設定されていないサーバも同様です)。逆に、Googleカレンダーのタイムゾーンが海外に設定されていても、国内のサーバでは、PHP4なら日本時間で表示されることでしょう。
PHP5では、設定ファイルで、定数GCAL_TIMEZONEの値に指定したタイムゾーンのIDに沿ったものになります。このIDは、例えば「Asia/Tokyo」や「America/Los_Angeles」など、タイムゾーンのリストにあるものです。

ライセンスとか

このプログラムの本体であるgcal.phpファイルはGNU GPL v2+でライセンスされますが、このプログラムは、そそくさと制作を済ませるために既存のオープンソースソフトウェアをあれこれ流用しており、かつ簡単に設置できるように、アーカイブにはこれらのファイルも含まれてるかもしれません。こうしたソフトウェアのライセンスは、そのファイルに記載のものとなり、gcal.phpとは別にライセンスされる点ご注意ください。

追記@2007/06/06

オフィシャルのモバイル版Googleカレンダーが登場したので、そろそろこのアプリは消そうかと思っていた矢先、トルコ方面から唐突に、「カレンダーAPIのコメント追加の件はどうなった?」とだけ書かれたメールがやってきた。なんのこっちゃ?と思って想像力を働かせたところ、このアプリを作ってた頃に、自分がGoogle Calendar Data APIのディスカッションフォーラムに投稿した、コメントの追加に関する不具合のことなのだろうなあ、と思い当たる。

当時Googleの担当者は、これをバグだと回答していたので、このアプリでもこの機能は放置して、そしてこれを作り終えて以降はGData APIのことなんてすっかりさっぱり忘れ去っていたのだけど、このメールを見て、そういやどうなったんだろうと思って久しぶりにディスカッションフォーラムを見てみたらば、バグだと回答していた当のGoogleの担当者が、その後に別の人物が同様の質問を行ったのに対して、こうすればちゃんと動くぜぃ、と回答してやがるじゃあーりませんか。おーいバグだったんじゃないのかよ。

てなことで、コメント投稿の部分を修正しました。唐突なメールをくれたwww.posthouse.com.trの中のヒトに感謝(笑)。

Category: ウェブ制作
Posted 2006年10月20日 00:00

トラックバック

このエントリーのトラックバックURL:
http://www.rcdtokyo.com/mt/mt-rcdtokyo5428-tb.cgi/787

このリストは、次のエントリーを参照しています: Googleカレンダーを携帯で利用するPHPスクリプト:

» 携帯でGoogleCalendarを利用 from Washo3 Blog
Under Construction, Babyにて、携帯でGoogleCalendarを利用出来るPHPスクリプトが公開されてます。 私の環境では、G... [続きを読む]

Pinged at 2006/10/23 21:15

» GmailとかGoogleCalendarとか from killri::net
最近プライベート用のメールアドレスをGmailに統一してみた。 フリーアドレスだとメールのフッタなんかに広告が付いたりするけどGmailは一切ないしweb... [続きを読む]

Pinged at 2007/01/20 22:58

» Googleカレンダーを便利に使う from 暇つぶし屋
いろいろ便利なツールを作るGoogleが作ったカレンダー 「Googleカレンダー」 Ajaxを使用しているのでGoogle側が落ちてもある程度使... [続きを読む]

Pinged at 2007/04/22 00:52

コメント

以下のようなエラーが出る事があります。携帯(i-mode N701i) 、PC(firefox1.5) でも発生します

Warning: Invalid argument supplied for foreach() in /var/www/html/gcal/gcal.php on line 863

OS: CentOS3.5
PHP: 4.4.4

です。

Posted by Yuumi3さん at 2006/11/10 22:14

直してみました。お手数ですがgcal.phpを落とし直して入れ替えてください。ここ数日中にダウンロードされたものをご利用であれば多分ビンゴの筈。

Posted by ucbさん at 2006/11/10 22:42

DLさせていただいて早速使わせていただいています。
premini-IIで問題なく表示されています、ありがとうございます。

Posted by さん at 2007/01/20 18:46

XREA鯖は軒並みBBQに焼かれてるので、XREA鯖に設置のブログからのトラックバックは、直ちには公開されないのでありました。

Posted by ucbさん at 2007/01/21 10:01

すばらしいスクリプトの公開いただきありがとうございます。
ezで予定を追加して「一覧」を押すとパスワード入力待ち画面に戻ってしまいます。 PCではうまくいきました。お気づきの点がありましたらご教授ください。

Posted by トロさん at 2007/04/03 21:11

すいません。自己解決しました。感謝。

Posted by トロさん at 2007/04/03 21:20

自己解決気になるw

Posted by ucbさん at 2007/04/04 00:27

はじめまして。スクリプト使わせていただきます。
オフィシャル版に編集機能がなかったので(ですよね?)乗り換えました。
API自分で実装するの面倒だったので、助かります。
オフィシャル版に編集機能がないのはなぜなんでしょうね。

Posted by kanjistさん at 2007/07/10 02:49

>オフィシャル版に編集機能がないのはなぜなんでしょうね。

実装するのが面倒だったのではないかと(笑)
いや、まじめに考えてみると、オフィシャル版の登場までずいぶん間があり、その間にいろんなサードパーティが携帯対応を出してきてましたから、そっちでいいじゃん&いまさらオフィシャルであれこれやらかすとサードパーティから文句言われるじゃん、という大人な感じの事情なのではないかすら?

ちなみにこいつはPHP4用なので、ただでさえAPI経由で遅いのにXMLまわりの処理がめんどくさいことになってて複数のカレンダーを読ませたりするとタイムアウトしやがったりするわけですが、PHP5をご利用なら、XMLをハッシュに変換してるところをSimpleXMLあたりにサクっと書き直してもらうと幸せになれるかもしれません。

Posted by ucbさん at 2007/07/10 21:14

>自己解決気になるw

携帯の設定で,履歴を残すにしておかないと変になります。
履歴なんかいらないのですが。
でも,もしかして私だけ?

Posted by トロさん at 2007/08/13 18:43

このスクリプトは、EZweb相手なら端末とのひも付け(セッション管理)をCookieで行っています。
「一覧」はごく普通のリンクなので、これをクリックしてログイン画面に戻ってしまうときというのは、単純に本来はサーバに送信されるべきCookieが、そのときには何故かちゃんと送信されてないのでしょうねえ。
Cookieが一切送受信されないなら、これに限らずあらゆる操作が不能なわけで(というか、スクリプト側でCookieを使わない方法に自動的に切り替わりますが)、Cookieが送信されないのはその操作のときだけだと思います。
で、「履歴を残す」設定だとちゃんと送信される、と。なんだかなあ…。

Posted by ucbさん at 2007/08/14 13:22

またまたお世話になります。
Googleカレンダーに予定を記録するとき,不定期周期だけど繰り返す項目があります。
これを入力するのに,
1. 期限を設定して毎日繰り返させて登録。
2. 不要な日の分のみ,削除。(その日のみ削除を指定。)
という手順でデータを登録しています。
これをgoogleカレンダーのモバイル画面から回覧すると問題ないのですが,本ソフトから回覧すると削除データが残っています。お手数をおかけしますが,対応方法についてご教授いただけますようお願いいたします。

Posted by トロさん at 2008/01/12 10:34

いやむしろ今やってみたら逆に、削除したほうの日しか表示されない!(笑)
で、大元の、GoogleのAPIが返すデータを眺めてみたら、その通り、削除したほうの日しかデータにないので、GoogleのAPIが、なんかトラブってるのではないかと(よくトラブってるし、トラブってても全然直さないし)

Posted by ucbさん at 2008/01/19 16:28

ucbさん、ありがとうございました。そっちの方なのですか。ガクッ。
手数をおかけしてスイマセンでした。しばらく様子を見ます。
彼らは分かってるのかな。英語、分からなくて連絡できないけど。
連絡手段がこの掲示板しかなくて藁をもつかむ思いでした。
こんないいソフト、どうして有名にならないのだろう?
本家が携帯からスケジュール登録できても、デザインによっては使い続けるつもりです。
ご多忙中とは思いますが、今後ともフォローのほどお願いいたします。

Posted by トロさん at 2008/01/20 16:53

コメントをどうぞ



保存しますか?


Aoaka Style Valid Aoaka