Google App Engine
−すべては20%プロジェクトからスタートした
Google App Engineプロダクトマネージャー ピート・クーメン氏×
「音ログ」「ナタリー」開発者、ナターシャ 立薗理彦氏
@IT編集部
2008/6/24
プロダクトマネージャーに聞く、App Engineの成り立ちと現状、ビジネス、Amazon EC2との違い、そして日本人への期待
6月10日に横浜パシフィコで「Google Developer Day 2008」が開催され、Google App Engine(以下、GAE)チームのプロダクトマネージャーのピート・クーメン(Pete Koomen)氏は当日の基調講演で、同社ソフトウェアエンジニアの鵜飼文敏氏とともにGAEを紹介した(参照:【Google Developer Day基調講演レポート】アンドロイドやOpenSocialなどデモ多数、グーグル)。その後のセッションでは、同社ソフトウェアエンジニアのブレット・ストラキン氏と、GAEでWebアプリケーションを作成して動作させる様子をデモで紹介した。
講演中のピート・クーメン氏 |
セッション最後の聴講者からの質問コーナーでは、やはりGAEでPythonの次にサポートするプログラミング言語に関する質問が多かった(2008年6月現在、GAEで使える言語はPythonのみ)。クーメン氏は「今後、開発者からのフィードバックを参考にGAEで使えるプログラミング言語をいろいろと増やしていく予定だ」との回答にとどめていたが、PyAMFを使うことでAMF(Action Message Format、圧縮率の高いバイナリデータフォーマット)通信によってGAEのPythonアプリケーションとFlash系技術(FlexやAdobe AIR)のクライアントとの連携も可能と付け加える場面もあった。
ナターシャの立薗理彦氏 |
その後の@IT編集部で行ったインタビューで、さらにGAEについてさまざまな話を語ってくれたので、その模様をお伝えしよう。インタビュアーは、「音ログ」の開発者で、現在は「最新型音楽ニュースサイト」として名を馳せている「ナタリー」で技術を任されているナターシャの立薗理彦氏。
立薗氏は、個人や小さな会社でWebサイトを運営していく際にGAEはどのように活用できるのかを中心に、GAEの成り立ちや現状、ビジネス、Amazon EC2との違い、サポートするプログラミング言語、別サービスとの連携、プロトコルなどについてクーメン氏に質問した。
Google App Engineの成り立ちと現状
立薗理彦(以下、立薗):まずは、GAEの現状についてお聞きします。発表から2カ月たちましたが、開発者からの反応はいかがですか?
ピート・クーメン(以下、クーメン):フィードバックをたくさんもらっている。大きく分けて「非常に素晴らしい」「本当に使いやすい」「びっくりしている」という反応と、「素晴らしいけど、必要な機能もある」という反応があった。
立薗:開発されるアプリケーションの数は? 1日にどれくらい増えていると思いますか?
クーメン:具体的な数字は分からないが、たくさんの面白いアプリケーションが増えてきている。公開当初、利用できる開発者を抽選で1万人に絞ると発表したが、その1万人から漏れた開発者にはウェイティングリストにサインアップして待ってもらうことになった。結果、15万人以上が待機するという状況になっていたが、2週間前に一般公開してすべての開発者に使ってもらえる状況になった。
2008年5月28日の一般公開当時、GAEのSDKで作成したアプリケーションをGAEにデプロイする際に必要なGAEのアカウントをもらうには、SMS(Short Message Service、電話番号で個人を識別して送る短文メールサービス)で検証コードが送られるようになっていた。しかし、日本の一部携帯電話キャリアは海外からSMSを受け取るのに対応していないため、米グーグルからのSMSを受け取れないという問題があり、日本の開発希望者を困惑させるという事態が生じていた。
Google App Engineのアカウント申し込みフォーム
クーメン氏は冒頭で紹介したセッション中に「近日中に対応する」と発表した結果、2008年6月24日現在、SMSではなく携帯電話用メールアドレスを入力するフォームに変わっていたが、メールアドレスの@の直前までのユーザー名を入力できるのが20ケタまでになっているなど、まだGAEにデプロイできない日本の開発希望者もいるようだ。
立薗:GAEを始めたきっかけは、どんなものですか?
クーメン:何といっても重要なのが、そもそもWebアプリケーションを作るということ自体が非常に難しいということだ。いろいろな課題がある。例えば、ホスティング、サーバの設定、データベースの分析、ロギングを作ってモニタリングなど、まずセットアップに対するコストが多くかかる。そして、アプリケーションができた後もかなり大きなエネルギーを使わなければならない。例えば、トラフィックが増えて、当初導入したホストマシンが耐えられなくなった場合は、複数のホストを用意しなければならないし、アプリケーションやデータベースの負荷分散もしなければならない。本来であれば、アプリケーション自体にもっとコストを掛けたいところだが、それができないで嘆いている開発者も多いことだろう。
GAEはまず、2つのゴールを意識してサービスを始めた。1つはアプリケーションをできるだけ最小からスタートできるように。そしてもう1つは、拡張性もサポートすること。現在、いろいろなホスティングサービスや汎用コンピューティングがあるが、GAEはあくまでもWebアプリケーションの開発に焦点を絞って作った。それ故に、多くのスタックのレイヤを抽象化して開発から切り離すことができた。開発者の方でサーバを用意する必要がないし、負荷分散も心配する必要がない。
立薗:GAEのプロジェクトは会社の方針というよりは、開発者の提案から始まったのでしょうか?
クーメン:おっしゃるとおり! 実際に、われわれグーグルの開発者もソリューションを作っていくうえでかなりの時間を費やした。GAEはグーグルが持っているインフラを開発者に解放しようということで開始した。
立薗:GAEから得られるグーグルの利益とは何でしょうか? 株主に話すようにお願いします。
クーメン:株主!? OK、分かったよ(笑)。 いまGAEは完全に無償だ。ただ、今年の年末にかけて、開発者の方々により多くのコンピューティングリソースを購入していただく機会を提供していく。そこで、実際にディスクスペースや帯域を売る可能性があるが、最初は無料だ。ここでより重要なことは、Webをプラットフォームとしてどんどんどんどん前に進めたいということだ。
GAEを作ったことによって開発者は仕事がしやすくなって、より良いアプリケーションを作ることできる。作れば作るほど有用性が高まる。有用性が高まれば高まるほどそこで多くの時間を使ってくれる。こういうサイクルができることによって、グーグルの利益につながってくる。
音楽SNSの「iLike」もGoogle App Engineを利用
次に、立薗氏はGAEとAmazon EC2の違いへと質問の内容を移行していった。
立薗:Amazon EC2は、まだまだ日本では人気がないですが、海外では新興サービスのビジネスの基盤として使われています。GAEもそのような目的でAmazon EC2のように使われることを意識したのでしょうか。
クーメン:GAEは、簡単に始められることと簡単に拡張できることで、小規模なグループでの開発にフィットしている。なぜなら、規模が小さければ小さいほどインフラの整備に時間をかけるのが難しいからだ。それと同時に、われわれは非常にパワフルなツールを作ったとも思っていて、今後は大手のGAEのパートナーも出てくるだろう。例えば、音楽SNSのiLike。彼らのガジェットをGAE上に作っている。
Amazon EC2とは、そもそもプロダクトが異なると考える。GAEは汎用のコンピューティングのプラットフォームではない。あくまでもWebアプリケーションの開発に特化している。Web開発者には非常に評価してもらえるだろう。
立薗:それは、次の質問だったんですが(笑)、LinuxのホスティングではなくWebアプリケーションのホスティングにしたのはなぜですか?
クーメン:(笑って)繰り返しになるがグーグルとしてはWebをプラットフォームを前進させたいからだ。将来は分からないが、いまはあくまでもWebアプリケーションに特化している。
立薗:GAEにできずAmazon EC2にできることは何でしょうか。
クーメン:例えば、大規模なコンピューティングだとか、かなりのデータリソースが必要で何時間も演算処理をしなければならないものだ。GAEはリクエストをもらって小さな処理を行ってレスポンスを返すというリクエスト駆動のアプリケーション向きだ。オフラインの大規模な処理には適切ではない。
立薗:逆に、Amazon EC2にできずGAEにできることは何でしょうか。
クーメン:あくまでも、簡単にスタートできて簡単に拡張できるということだ。
立薗:これで、Amazon EC2の質問は終わりです。
クーメン:フー(笑)。
Google App Engineは20%プロジェクトから生まれた
立薗:GAEは、いわゆる「20%ルール」(勤務時間の20%は自分の好きなことをするグーグルの社内ルール)のプロジェクトで始まったのでしょうか?
クーメン:そう。最初は私はいなかったが、2人のエンジニアと1人のプロダクトマネージャーで始まった。
立薗:いまは何人ぐらいのプロジェクトですか?
クーメン:具合的な数字はいえないが、小さなチームでやっている。
立薗:チームの役割分担はどうなっていますか?
クーメン:素晴らしいエンジニアたちがこのプロジェクトにかかわっている。まず、ブレット(ブレット・ストラキン氏、冒頭で紹介したソフトウェア・エンジニア)がいて、彼が「クォータ(Quota)システム」や開発環境を作った。小さなチームで「Datastore API」を担当し、BigTableをエキスポートするチームがいる。Pythonを作ったグイド・ヴァンロッサム(Guido Van Rossum氏)がいろいろな仕事をしている。ほかにも「管理者コンソール」を作っている開発者や、2人のプロダクトマネージャーなど、役割分担はしっかりしている。
立薗:BigTableは社内と同じものですか?
クーメン:内部で使っているBigTableのうえにレイヤがあり、そのレイヤをエキスポートして「Datastore API」として使っている。
「クォータシステム」はGAEが設けている、無料で使える範囲(Quota)内でCPUの使用量に制限を掛けるシステムで、GAEにいたずらに負荷を掛けるなどの乱用を防ぐ。「BigTable」は大量のデータを使うためのグーグルのデータベースのような分散ストレージ技術。「Datastore API」はアプリケーションのデータをBigTableを使っって保持する、これまたデータベースのようなGAEの仕組みの1つ。SQLライクなGQLで(Google Query Language)操作できる。
立薗:現在開発している人から、「クォータシステムの上限にひっかかるのでは?」と心配しているという声はないのでしょうか?
クーメン:確かにそれを気にしている開発者もいて、いろいろと協議している。すべてのGAEのアプリケーションは「クォータシステム」でCPUを限定しているが、もっと必要だという開発者には実は、もっとリクエスト処理ができるように、CPUクォータを増やす方法をケース・バイ・ケースで評価して提供している。
別サービスとの連携やHTTP以外のプロトコルについて
立薗:今日のセッションで、「今後、開発者からのフィードバックを参考にGAEで使えるプログラミング言語をいろいろと増やしていく」と話していましたが、なぜ最初にPythonをサポートしたのですか?
クーメン:第一に、グーグルが会社全体としてPythonが好きであるということ。Pythonはグーグルでたくさん使われているし、グイド・ヴァンロッサムもGAEのチームにいる。それは別としても、非常によい言語だと思う。
立薗:Pythonは言語として好きなのですか? それとも、パフォーマンスがいいから?
クーメン:両方だよ(笑)。非常に学習が簡単でマネージドコードなので、GAEに適している。
立薗:HTTP以外のプロトコルをサポートする予定はありますか?
クーメン:それは、おそらくRPCやキューイングのことも含めてだろうね。もちろん、ほかの可能性もある。いま、オフラインのプロセスの開発もしている。例えば、ジョブのスケジューラだとか、バッチ処理だとかに関連して非同期機能も開発している。
立薗:今後の予定は開発者からのリクエストで決めていくのでしょうか?
クーメン:そのとおり。開発者からのフィードバックには間違いなく注目している。例えば、今日の講演で話した「Images API」は実は、開発者からのリクエストを聞いてグーグル開発者の1人が20%ルール内でボランティアで開発した。
ここで、立薗氏は同氏の友人がTwitterを使ってGAE上に作った「Tagtter」をクーメン氏に紹介し、同氏の友人からの質問をぶつけた。
立薗:私の友人からの質問です。「GAEはGoogle DocsとかGmailなどのサービスにマクロのような形で新しく機能を追加するのに使えるのではないでしょうか?」
クーメン:GData(Google Data API)を使えば、可能だろう。Google DocsやGoogle Calendarのインターフェイスと、より閉じたコネクションで接続して有用性を上げることができると思うが、それについてはもう少し研究が必要だろう。
立薗:彼からもう1つ、先ほどいっていたHTTP以外のプロトコルについての質問があります。「HTTPではないソケットのようなものをサポートしないのでしょうか?」
クーメン:Pythonの標準ライブラリにはソケット通信は外されているよね。これはセキュリティを意識して外したのだが、私としてはGAEにソケット通信をぜひ戻したいと考えていて、セキュアでありながらもソケット通信が実現できるように研究開発中だ。
立薗:彼から「ファイルの書き込みができるようにならないでしょうか?」という質問もありました。
クーメン:そう、たしかに現在はファイルの書き込みはできないが、開発者にはGAEのDataStore APIを使ってデータのパーシステンス(永続化)を保持するように話をしている。具体的には、あなたの友人は何を求めているのだろうか?
立薗:彼がいうには、「大きなデータをGAEの外にエキスポートできないのでしょうか?」と。
クーメン:データをオフすることはできるかもしれない。ハンドラーを書いてちょっとずつやっていく。リクエストを送ってデータをもらってまたリクエストを送るといった具合だが、おっしゃるとおりで、もっと研究する必要がある。
「日本人には超クリエイティブなアプリを期待している」
立薗:最後に、日本の開発者にGAEでどんなアプリケーションを作ってほしいですか?
クーメン:いろいろなアプリケーションを作ってほしいと思っている。創造力を駆使してほしい。ぜひGAEを使ってみてください。そして、フィードバックやご意見をお願いします。
立薗:日本人ならではのものというと何が思い当たりますか? ほかの国の人にはできないような。
クーメン:日本は世界の中でも本当に頭の良い開発者がいると思う。超クリエイティブなアプリケーションを絶対に考えてくれると期待している。どんなものが日本人ならではかについては、具体的には分からないよ。ごめんね(笑)。
終始、笑顔でインタビューに応じてくれたピート・クーメン氏 |
■ 関連記事
Google App EngineはAjaxへのハードルを下げるか? Ajax うきうき Watch(32) Ajaxに挑戦するなら、自由にプログラミングできるサーバ環境が必須。Google App Engineは、そんなハードルを取り払ってくれるはずです…… 「リッチクライアント & 帳票」フ ォーラム 2008/4/24 |
リッチクライアント&帳票 全記事一覧へ |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|