Home > モバイル

モバイル Archive

携帯電話のバックアップをとってる?

携快電話ZEROが SH-04A に対応してた。

なんか SH-04A のメッキ?が剥がれてきてるんですけどー。
物理的な意味でね。

iコンシェルに絶望した

都心にも雪がチラつく雛祭り。

気象情報や運行情報を期待する私に、
執事が持ってきた情報。

「外さない初デートの誘い方教えて!」

おまえクビ。

待ちうけ画面にポップアップするあたり、DMにしても悪質すぎる。
コレでお金とろうってんだからすごい。

Google Calendar と iスケジュールをほげってみた(続き)

えっと、このサイトは技術系サイトなので、ちょっと技術的なフォローしておきます。

今回 Google Calendar に接続するにあたり、使うことにしたのが Zend_Gdata というライブラリです。

この API は phpdoc で公開されているのですが、これがどうにもがっかりな使えなさっぷりなので、マニュアルを読んでもよくわからなかった点をまとめときます。

■ Google Calendar から取得できるデータ
Google Calendar から取得した1件のスケジュールデータはZend_Gdata_Calendar_EventEntry です。
このクラスから主要な情報を取得する方法は以下のようになります。

  1.  <?php
  2.  $eventFeed = $service->getCalendarEventFeed($query);
  3.  foreach ($eventFeed as $event) {
  4.      // タイトル
  5.      $summary = mb_convert_encoding($event->title->text, SJIS, UTF-8);
  6.      // 更新日時("2009-02-27T16:53:43.000Z")
  7.      $upd     = $event->updated->text;
  8.      // 開始日時(2009-03-27T10:00:00.000+09:00)
  9.      $start    = $event->when[0]->getStartTime();
  10.      // 終了日時(2009-03-27T11:00:00.000+09:00)
  11.      $end     = $event->when[0]->getEndTime();
  12.      // 場所
  13.      $location = mb_convert_encoding($event->where[0]->getValueString(), SJIS, UTF-8);
  14.      // 説明
  15.      $detail = mb_convert_encoding($event->content->text, SJIS, UTF-8);
  16.  }

取得できる情報は UTF-8 なので必要に応じて変換する必要があります。(iスケジュールは Shift-JIS)
日時情報はタイムゾーンなど統一されていませんが、基本的に strtotime 関数の引数に直接指定できます。
ただし、Google Calendar 上で終日の指定をしたときは”Y-m-d”形式となり、時間が含まれないフォーマットで返却されてきます。

■ quoted-printable
Zend_Gdata とは関係ありませんが、iスケジュールでは日本語を quoted-printable に変換しなければなりません。
PHP には quoted_printable_encode という関数がありますが、これは PHP5.3 以降でしか使えません。
現時点では PHP5.3 以上を使えないことも多いと思います。そのときはマニュアルを参考に自分で関数を用意します。

  1.  <?php
  2.  if (!function_exists("quoted_printable_encode")) {
  3.   function quoted_printable_encode($string) {
  4.      return preg_replace(/[^\r\n]{73}[^=\r\n]{2}/, "$0=\r\n",
  5.       str_replace("%", "=", str_replace("%0D%0A", "\r\n",
  6.       str_replace("%20"," ",rawurlencode($string)))));
  7.   }
  8.  }

今後 PHP5.3 以降にバージョンアップする可能性を考えて function_exists で判定しておけば万全です。

■ 参考
作ろうiモードコンテンツ:スケジューラデータフォーマット | サービス・機能 | NTTドコモ

[PHP]Zend Google Data Client Libraryで gCal APIs を使う[その3]|株式会社 フラッツ

Zend Framework: Documentation

まるごとPHP! Vol.2
まるごとPHP! Vol.2

Google Calendar と iスケジュールをほげってみた@SH-04A

先日こんなことを言いました。

少なくともどこかのカレンダーサービスとiスケジュールの自動同期ができないようじゃダメだ。

口ばっかりっていうのもアレですし、制限があるならその中でできる限りのことをするべきだろうってことで夜なべして作ってみました。

実機で動くようになったものの、使い勝手がいまいちだったので、公開はしてませんけど。

仕組みは簡単です。
ユーザがこのサイトにアクセスしたとき、Googleの認証セッションを持っていないときは Google のページへ飛ばします。認証されたユーザがこのサイトにアクセスすると、Google Calendar からデータを取得して iスケジュールのデータを作成します。さらに指定のメールアドレスにメールを送信し、ユーザはそのメールのリンクを踏むとスケジュールデータがダウンロードされます。

問題は以下の2点。

  • モバイルから Google アカウントにログインできない。
    これができればわざわざメールを送らなくてもその場でダウンロードできると思ったのですが、ログインできず。
  • iスケジュールをダウンロードしたとき、古いデータを更新できない。
    つまり、ダウンロードするたびに重複されたスケジュールが登録されてしまう。データフォーマットに iスケジュールそのものの ID みたいなものを持っていないよう(公開されていない)なので難しいかな。

これなら、最初からモバイル向けのスケジュールサービスを使ったほうが良いよね。iスケジュールの利点全否定ですもん。なにか方法ないかな。

まあ Google Calendar API とか Zend Framework とか quoted-printable の勉強になったってことで。

ホーム > モバイル

Search
Feeds
Link
あわせて読みたいブログパーツ
Meta

Return to page top