Google Appsのサービスが大幅拡大

メール、カレンダーをはじめビジネス向けのサービスを提供しているGoogle Appsのアカウントで利用できるサービスが大幅に拡大された。

AdSenseiGoogle、AnalyticsやBlogger等々、日頃よく使っているサービスがGoogleAppsのアカウントで利用できる(現在59サービス)こととなり、より統合されたサービスとして生まれ変わった。
現在、GoogleAppsが利用中であれば管理パネルから「移行」ボタンを押すだけでサービスを拡大できる。ただし、アカウントによっては(他のサービスと衝突がある場合等)は移行がGoogle側で行われるため、数日待たされる場合がある。また、全アカウントではなく、特定のアカウントだけ移管することもできる。(試しに移管して場合によってはやめることもできる。)

GoogleAppsと様々なサービスが統合された事で、GoogleAppsEngineのほうも魅力が増した。各サービスのデータ通信関連もこれにあわせて充実していくものと思われる。

GAE SDK 1.3.5

GAE SDK 1.3.5がリリースされた。

主な変更点は以下のとおり。

・タスクキューの制約をアプリあたり50リクエスト/秒からタスクあたり50リクエスト/秒へ緩和。これはタスクキューを多様していたアプリには非常にありがたい変更だ。

PythonでPreCompileをサポート。これによりスピンアップの時間を大幅に短縮することができる。方法はapp.yamlに数行追加するだけ。詳細はこちら

・Blob型のデータを読み出せるストリームクラスが追加。
Python: BlobReader
Java:BlobstoreInputStream

マイナーチェンジなので迷わずアップデートを。

あと、こんな機能もいつの間にか追加されていた。
Admin Console Custom Page

管理者コンソールに独自のページを組み込むというもの。英語版のドキュメントにしか乗っていない。やっぱりGAE関連は英語でチェックしておかないと変更に気づかないですね。

また、9月28日にGoogle Developers Day 2010 Japan開催されますね。登録には前回のGoogle IOでもあったクイズがあるそうで。

PayPalX for GAE

日本ではいまいちだが、海外では絶大な支持を得ている決済サービス「PayPal」。

そのPayPalの決済モジュールはオープンソース化されており、PayPal Xというサイトで、SDKやドキュメント、APIなどが公開されている。PC用のサイトからモバイル、Webサービス等、様々なプラットフォームに対応可能だ。

そのPayPalXからGoogleApssEngine用のAPIがされた。

paypalx-gae-toolkit

もちろん、自前でプロトコルを実装すれば実現できるだろうが、ライブラリがあればさっさと使ったほうが早いし、安全だろう。
現在はJavaバージョンのみのリリースで、PythonはComming Soonと言うことになっている。(最近、Pythonまわりのサポートが遅れ気味なのがきになる)

なかなか日本では浸透しないPayPalだが、最近ではユーザー向けのUI(方式)がかなり改良されている。メールで決済という部分とPayPalに会員登録をしなければ行けないという点でかなり抵抗があったかと思われるが、最近ではユーザーがPayPal会員でなくても、クレジットカード=>PayPalという方式が確立できるため、通常の決済によるカード払いのような方式が取れる。

海外向けのサービスでは必須であろうが、国内向けのサービスでもクレジット決済であれば十分導入する価値があると思われる。
今回のAPIのように、足回りを強化するライブラリがGAE専用としてリリースされてきている。GAEが普及してきた証なのだろう。

次世代フレームワーク Sencha Touch

ExtJSというJavascriptフレームワークをご存知だろうか?
非常に優れたUIを提供するJavascriptクロスプラットフォームフレームワークで、私もよくお世話になっている。(DEMO)

ExtJSは彼らの商品名でもありブランド名でもあったが、次世代フレームワークの投入とともに「Sencha」という名前に変更された。もちろん、語源は日本語の「煎茶」である。名前の良し悪しは個人の意見に任せるとして、彼らが今回投入した「Sencha Touch」は注目に値するフレームワークだ。

一言で言えば「iPadiPhoneそっくりのUIをもつWebアプリが作れるフレームワーク」である。もちろんAndroidもサポートされている。このSencha TouchはExtJSjQueryプラグインである「jQtouch」、ベクターグラフィックライブラリである「Raphael」を融合し、HTML5及びCSS3ベースで再構築を行った「スマートフォン専用フレームワーク」である。

UIの素晴らしさは説明するよりデモを見るほうが早いだろう。UIだけでなく特筆すべき機能が「タッチパネルへのタッチイベントが利用できる」という点だ。これはHTML5ならではの拡張イベントで、あのiPadiPhoneの拡大操作(両指で広げるやつ)なんかもUIとして取り入れられる。これはWeb用フレームワークとしてはかつてないもので、非常に画期的だ。その他の機能としては「ローカルストレージ」へも対応しているようだ。APIを眺めてみたがExtJSを使っていた方ならすんなり行けるはずだ。

問題はライセンスだ。ExtJSは途中でライセンスを「LGPL」から「GPL V3」へ変更したためエンジニアからブーイングが続出、エンジニアチームが分断したり、プロジェクトが枝分かれしたりと何かと物議をかもしだした。GPLとはいえデュアルライセンス形式で、無料のパブリックライセンス(GPL)と有料のコマーシャルライセンスで、要は数万円のライセンスを払えばGPLは免責されますよというものだった。
「Sencha Touch」は現在ベータ版なのでコマーシャルライセンスが準備中となっているが、原則これまでと同じ方式を採用するようだ。しかしながら数多くの批判に対応するためか、パブリックライセンスの場合でも例外事項が新たに設置された。パッケージへSenchaTouchを包括しないこと、SenchaTouchの組み込み方を提示するなどの条件と、配布するパッケージが彼らが提示するオープンソースライセンス(有名なものはほとんど含まれている)で提供する場合に限りGPLの処理(ソースコードにライセンスを書く等)を免責するというものだ。より詳細な説明は彼らのライセンスページ」を参照されたい。

iPadスマートフォンが大ヒット中のなか、「スマートフォン対応アプリ」のニーズは確実に高まっている。これからの技術的な幅を広げるためにも、ぜひチェックしておきたいフレームワークである。

ExtJS - kurz & gut

ExtJS - kurz & gut

ExtJS入門リッチUIなWebサイトをつくるAjaxフレームワーク

ExtJS入門リッチUIなWebサイトをつくるAjaxフレームワーク

Google Apps + Federated Login

Google Apps SDK 1.3.4から、OpenIDによる認証がサポートされるようになった。
最近はKayFrameworkでアプリを作っているのだが、Kayは早くからOpenIDに対応してGoogle Marketplace用のアプリもサポートしていた。今回のSDKのバージョンアップでKayの独自実装は延期となり、新たな統合方法が検討されている。

現在開発しているアプリではGoogle Appsによるアカウント認証を行うためいろいろと調査した。認証方法にさほど変更はなく、create_user_loginメソッドに以下のパラメータが追加されている。

Function
The google.appengine.api.users package provides the following functions:
create_login_url(dest_url=None, _auth_domain=None, federated_identity=None)

_auth_domainとfederated_identityパラメータだ。(Federated Login周りの情報は現在英語版でしか提供されていない)

Google Appsでログインするには_auth_domain=None, federated_identity='Google Appsドメイン’でOKだ。(このあたりの情報はあまり出揃っていないようだ)
実際稼働させてみるとGoogleApssアカウントへの認証へ飛ばされる。もしAppsのロゴなども変更していればそれらも反映されている。

Kayにどうやって組み込もうかとあれこれ考えたが、やっぱり手っ取り早く@apps_login_requiredデコレータを自作することにした。
もともとのkay.auth.decorators.login_requiredのcreate_login_urlの部分を変更してOK。

さて、この時に認証先のドメインをどうやって取得するかが問題となった。

Google Market PlaceであればManifestのURLにドメインを組み込んでセットアップを行うのでその時に情報はあれこれ取得できるだろう。
今回開発しているアプリはMarketplace用ではなく、Google Appsドメイン追加でアプリを追加している。また独自ドメインエイリアスを設定している。

独自ドメインでAppsへ登録したなら、その情報を使えばいいじゃないかということでいろいろと調べた。環境変数のSERVER_NAMEでホスト名は取得できるが、そこからドメインを推測するのは避けたい。AUTH_DOMAINかと思って試したが、gmail.comからかわらず・・。

いろいろ試してようやく見つけることができた。
Google Apps Engineで作ったアプリを、Google Appsドメイン許可して登録すると以下の環境変数が追加される。

・HTTP_X_ZOO: 'app-id=アプリケーションID,domain=GoogleAppsドメイン'
・HTTP_X_GOOGLE_APPS_METADATA: 'domain=GoogleAppsドメイン

これらの環境変数独自ドメインでアプリにエイリアスを登録した時にのみ付与される。(appspot.comの場合は付与されない)
Federated Loginを使用した場合はその他にもFEDERATED_IDENTITYやFEDERATED_PROVIDERなども追加される。(DATACENTERなんていう変数も・・)

また、もうひとつの注意点としてFederated LoginでGooleAppsの管理者アカウントへログインした場合でも、is_current_user_admin()がTrueにはならない。あくまでアプリの管理者リストに登録されている場合にのみTrueが返される。(appspot.comの管理サイトで管理者リストにメールアドレスを登録する必要がある)


これで、AppsEngineで作ったアプリをドメイン追加でApps認証させることができるようになった。

GAE for Business

 Google Apps Engineで新しいサービスがアナウンスされた。

Google Apps Engine for Business


 Google Apss Engineのエンタープライズ向けのサービスである。下記のサイトでロードマップが提示されている。

Google Apps Engine for Business Roadmap

 変更内容はたくさんある。技術的な観点で言えば以下の2点はこれまでビジネス利用ではネックとされていただけに非常に大きなポイントだ。

 GAEがこれら2つをサポートすることで、ビジネス用サービスとしても非常に強力なプラットフォームとなる。(ロードマップで上記2つは年内プレビューリリース予定となっている)

 その他にも以下のような内容が予定されている。

  • 集中管理サイトの提供
  • 価格帯の変更

 集中管理サイトでは、管理下にあるアプリを一括管理できるインターフェースが提供され、認証などの設定が行えるようになる(こちらはプレビューリリースされた)。また、これまでは各アプリごとにDNSの設定が必須だったが、これらをサブドメインで一括管理するなどの機能が提供されている。

 価格体系は以下のようになる。

Each application costs $8 per user, up to a maximum of $1000, per month.
各アプリごとに、$1,000(約10万)を上限として各ユーザーあたり月額8$。

 つまりGAE for Businessでは従量制ではなく、ユーザー単位のコストで決定される。これにより、GAE for Businessでは、GoogleApps Permium Editionと同様SLAで99.9%の動作保証を付けている。価格もユーザー単位で計算しやすく、SLAもつけている点でビジネス的には利用はしやすいだろう。これまでのGAEは利用予測が難しいコンシューマー向け、企業向けサービスはFor Businessというすみわけを狙っていると思われる。

 また、GAEのSDKも1.3.4へバージョンアップしており、OpenID及びOAuthによる認証のサポートがExperimentalながらサポートされるようになった。これにより認証設定が柔軟になり、GAEの適用範囲が広がったと言える。(Google Apps Marketplace対応もかなり楽になると思われる)

 今回のアナウンスで、Googleは本気でGAEをビジネスプラットフォームとして位置づけるという戦略が伺える。独自ドメインSSLやSQLDBのサポートなど、ユーザーの声を拾い上げてウィークポイントを確実に埋めつつある。マネタイズで頭を悩ますコンシューマー向けと違い、ビジネス向けはビッグマーケットだ。Google Marketplaceの動向もあわせてGoogle For Businessの動向は注目だ。

Google Storage

 今週はGoogle IOが開催されていることもあり、Google関連のリリースが目白押しだ。

Google Apps Engine for Business等の他にも気になるサービスがリリースされた。

Google Storage

 現在Labの位置づけではあるが、RESTfulなインターフェースをもつGoogleのストレージサービスである。そう、Google版S3である。

 Google Apps EngineではBlobSotreの取り扱いの制約がきついため、大きなデータを取り扱うアプリには他のサービスとの連携が必要であった。このサービスを利用すればEC2+S3のようなシステムがGAE+Google Storageで実現できるようになることを戦略的に考えていると思われる。

 Storageとはいっても一般的なファイルシステムでいうネストした構造はサポートしていないようで、Bucketバケット、バケツのこと)と呼ばれるコンテナ単位でデータを取り扱う。これはApps Engine同様、スケールアウトのしやすさを設計ポリシーとしているためだろう。

GooglePythonベースのコマンドラインツールGSUtilのほか、Webアプリベースの管理ツール「Google Storage Manager」が提供されている。

サービス自体はこれからという感じだが、Google Apps Engineの開発に携わる人にはうれしい機能だ。