Google App Engine

Amazon EC2を試そうかと思っていたら、Google App Engineが始まったので、試してみることに。

残念ながら、プレビューリリースは10,000人のみらしく、順番待ちになってしまいました。

BigTableベースのストレージとか、自動で負荷分散とか非常におもしろそう。

サーバには設置できませんが、ローカルで試すことにしました。

とりあえず、Mac OS Xにインストールしてみて、Hello, World!まで実行。

設定を変えて、URLによってハンドラを変えてみたりしてみました。

●Getting Started

Getting Startedにしたがって進めます。

●開発環境

SDKをダウンロードして、インストーラにしたがってインストールします。

/usr/local/google_appengine

に一式インストールされ、

/usr/local/google_appengine/dev_appserver.py
/usr/local/google_appengine/appcfg.py

にコマンド(のリンクファイル)が設置されるので、パスが通った状態になります。

Mac OS Xだと最初からPythonがインストールされているので楽。

●Hello, World!

処理を行うPythonスクリプト(helloworld.py)を作成して、そのスクリプトで処理が行われるように設定ファイル(app.yaml)を書きます。

次は、dev_appserver.pyを実行して、アプリケーションサーバを起動します。Getting Startedでは、

google_appengine/dev_appserver.py helloworld/

でしたが、helloworldディレクトリの中にいて、dev_appserver.pyにもパスが通っているので、

dev_appserver.py .

でOK。

先に進む前に、app.yamlの

handlers:
- url: /.*
script: helloworld.py

を変えて、

handlers:
- url: /test.*
script: test.py
- url: /hello.*
script: helloworld.py

としてみました。

http://localhost:8080/だと、

Not found error: / did not match any patterns in application configuration.

が出ますが、http://localhost:8080/testとかhttp://localhost:8080/helloで始まるURLのときに、それぞれtest.pyかhello.pyで処理が行われます。直感的ですが、URLでマッピングできると。

とりあえず、今日はここまで。

すでに、自ドメインでの提供もできるようなので、早く使えるようにならないかな。


gSync 〜 iCalとGoogleカレンダー

GoogleカレンダーとiCalの同期をしてみました。

これまで外出先では、手帳とGCMG(Google Calendar Mobile Gateway)を使って携帯電話で見ていました。

iCalは全く使っていなかったんですが、ローカルで確認している人を見ると便利そうなのですよ。iCalに入れておけば、PDAとかiPodとの同期なんてこともできそうだし(やらないかなあ)。

少し情報は古いのですが、同期ソフトがまとまっているサイト。

Googleカレンダーをオフラインで使う ~同期ソフト一覧~

候補は2つ。Spanning SyncgSyncです。

Spanning Sync

  • システム環境設定
  • Googleカレンダーの間にサーバが介在する
  • 設定画面を見ると、使えるGoogleアカウントは1つ
  • ライセンスは1年で$25、永久で$65
  • 15日間試用可

gSync

  • アプリケーション
  • Googleカレンダーが直接通信する
  • 設定画面を見ると、複数のGoogleアカウントが使える
  • 10GBP(ユーロと紹介してるページがあったけどポンドのはず。2000円教)
  • 試用可。Register laterを選択すれば、同期できる。

GoogleカレンダーとiCalのどれとどれを結びつけるかは、どちらも設定可。

僕の用途としては、個人のGoogleアカウントのGoogleカレンダーと、Google Apps for your domainのGoogleカレンダーの両方をiCalに同期させたい。ということで、複数アカウントが使えるgSyncから試してみることにしました。値段も安いし、直接通信するので少し安心だし、アプリケーションなのでシステム環境設定が増えないというのもありがたい。

機能的にも満足だったので、数時間試してみて、すぐにレジストしちゃいました。

gSync1.jpg

いろんなブログで見かけたインターフェースからは変わっているようで、かなりシンプルになっています。

Googleアカウントを追加すると、Googleカレンダーのカレンダーのリストが出てくるので、それぞれをiCalのどれに関連させるか指定します。

Show detailsで詳細設定ができるんですが、iCal側のカレンダーは複数設定できるみたい。僕は同期させたいGoogleカレンダーの数だけ、iCal側のカレンダーを作りました。

ちょっと原因が不明なんですが、最初設定しているときに困ったトラブル。

無事に同期が終わっておらず、ログを見るとエラーが出ていました(全て毎年発生するイベント)。で、ふとGoogleカレンダーにアクセスすると、いつのまにか元々Googleカレンダーに入っていた1つの予定が複製されてしまっています。iCalとシンクしてるものとiCalから見えないものと2つになっています。iCalから見ると1つ。

iCalから消すとGoogleカレンダーにはiCalに同期されない予定が残る、Googleカレンダーで消すとiCal側で消えるか残るかが半々。どちらにしても同期できていないので、これから使う予定だけ、再度登録しなおしました。

2個目のアカウントでは、なんの問題もなく登録ができたので、たぶん僕の操作がおかしかったんだと思います。

あと、悩んでることが一つ。iCalから予定を登録するときに、Googleカレンダーのアラートを設定できないんですよね。なにか方法がないものか。

アラートを携帯に送るようにすることがあるんですが、iCalでメール通知を指定すると、MacのMailが起動してメールを送信してくれるだけ。iCalが起動してなくてもいいらしいのですが、Macは起動していてメールが送れる状態にないとダメです(当たり前)。

でも、予定の入力だけ見るとiCalよりもGoogleカレンダーのほうが使いやすいので、iCalを使うのはオフライン時のみになりそう。


iモードIDの仕様公開

すっかり忘れてましたが、以前ブログに書いて気になっていたiモードIDの仕様が公開されてました。

iモードIDについて

リクエストに取得用パラメータをつけることで、レスポンスのヘッダが追加される。7桁の英数字と短い気もしますが、一意性があって、同番号でも名義変更でIDは変更され、iモードIDの再利用はないとのことなので、まあ安心かな。

SSL接続時の取得は、やっぱりできませんでした。残念。

「交換機などの工事・ネットワークの負荷状況によりiモードIDが送出できない」というのは、非通知と同様の動きになるってことなのかなあ。100%を保証はしないけど、大抵大丈夫ってことなんだろうけど。

今度、ちゃんとコード書いて試してみようかな。