SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Google App Engine for Javaを使ってみよう!

Google Developer Day 2009で学んだ
Java版Google App Engineの勘所

「Javaで動かすGoogle App Engine」セッションレポート

API呼び出しの仕組み

 すべてのAPI呼び出しがcom.google.apphosting.api.ApiProxyを経由するので、いわゆるアスペクト指向のコーディングが可能で、プログラム全体にログを埋め込むというコードが簡単にかけます。

ApiProxyインターセプト
  • API呼び出しはApiProxyを経由
    • com.google.apphosting.api.ApiProxy
    • 独自APIの呼び出しは必ずこのProxyを経由する
    • Delegate(サービス実装)にAPI呼び出しが転送される
  • AppEngineの外部でAPIコールをするには
    • Delegateを設定 - ApiProxy.setDelegate(Delegate)
  • ユニットテスト時にはApiProxyLocalFactoryが便利
    • JAR Service Providerの仕組みを使用してAPI実装を見つける
    • クラスパスを変更することによってAPI実装を置き換えることが可能

 ApiProxyは、実際のApp Engine環境だけでなく、ローカル環境でも利用できるので、気軽にUnitテストやプロファイルデータ収集を行うことができます。

予定されている機能拡張

Coming Soon...
  • タスク・キュー
  • フル・テキスト・サーチ
  • メール受信機能
  • XMPP
  • 巨大ファイル・ストリーム
  • Datastoreインポート/エクスポート・ツール

 タスク・キューは、既に実装されているUnixライクなCronのように、指定した時間がトリガーとなってプログラムが実行されるのではなく、ある処理の中でタスクをキューに追加することで、タスクが順番に処理されるような仕組みになるようです。

 筆者は、タスク・キューによって、実質的にスレッド的な処理や、1回の処理時間が30秒を超えるような処理を行えるようになるのではないかと期待しています。

App Engine Datastoreの概要

 ここから講演者が鵜飼文敏氏に交代し、App Engine Datastoreの解説がされました。

(写真中の人物は鵜飼文敏氏)
(写真中の人物は鵜飼文敏氏)
App Engine Datasoreの概要
  • トランザクションをサポート
  • 巨大なテーブルは分割
  • 階層的
  • スキーマなし
  • Bigtable上に構築
  • リレーショナルDBではない
  • SQLエンジンではない

 基本概念は「ソフトスキーマ」。DBのスキーマを決定した後に、アプリケーションをそのスキーマに合わせて実装するのではなく、アプリケーションの構造そのままを保存できます。また、スキーマの定義には、設定ファイルが必要なく、アノテーションで定義できます。

 プログラムの変更がそのまま、スキーマの変更になるので、開発が非常に楽になります。

データ読み取りのポイント

クエリ
  • 読み出し時に処理するより読み出しが単純・高速にできるように書き込み時に処理をするようにする
  • joinについては非正規化するか、複数のクエリに
  • サポートされていないフィルター(distinct, toUpperなど)
    • 複数のクエリに書き換え
    • クエリの結果をメモリ上で処理する

 読み取りを速くするという概念の上では、RDBMSにおいても非正規化は正しいアプローチなのですが、それでもRDBMSでは可能な限り正規化を維持するのが良しとされています。しかし、App Engine Datastoreでは読み取りを早くするために、積極的に非正規化を進めます。

DataStoreのまとめ

  • App Engine Datastoreは永続化を簡単にします
  • ソフトスキーマはJDO/JPAを使って実現できます
  • 非正規化をおそれずに

  セッション終了後に、Googler(グーグル社員)との雑談で聞いた話では、どちらかと言うとJDOの開発に力を入れているそうなので、どうしてもJPAを利用しなければならないというのでなければ、JDOを利用した方がよさそうです。ちなみに、Googleが公開しているGoogle Plugin for Eclipseでは、新規プロジェクトを作成するとデフォルトでJDOの設定ファイルが自動生成されます。 

Google Developer Relations Japan

 「Google Developer Relations Japan」というGoogleのデベロッパーコミュニティサイトがあります。過去に開催されたGoogle Developer Dayを含むイベントのスライドやビデオが公開されていますので、興味のある方はアクセスしてみてください。

まとめ

 Google Developer Dayでは例年、イベント終了後に交流会が開催されます。イベントには、Googleのテクノロジーに興味のある、モチベーションの高いエンジニアが集まりますので、交流会での情報共有は非常にレベルの高いものとなっています。

 また、その交流会にはGooglerも参加しますので、最新テクノロジーの面白い話も聞けたりします。 この記事で少しでも興味を持った方は、ぜひとも来年Google Developer Dayに参加してみて下さい。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Google App Engine for Javaを使ってみよう!連載記事一覧

もっと読む

この記事の著者

山下 大介(ヤマシタ ダイスケ)

  京都大学を中心とした、産官学共同プロジェクトのSOBAプロジェクトに参加後、同プロジェクトで開発したP2P配信によるVoIP技術を2005年に商業化。オープンソース、VoIP、P2P、クラウドコンピューティングに精通。趣味はGoogleの追っかけ。現在は、株式会社SOBAプロジェクト取締役。ブログ:『~ ミネルヴァの梟は黄昏とともに飛び始める ~』所属:株式会社SOBAプロジェクトGoogle Developer Day 2008サポーター, 2009サポーターGoogle App Engine API Expert

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4050 2009/06/16 16:30

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー