本書では、Google App Engineの上で動作するアプリケーションの開発方法と、そのスケーラブルなモデルを最大限に活用する方法を解説します。メールの送信や画像の操作などのスケーラブルなサービス群や、デプロイと管理のためのツール、独自のドメイン名を使ってGoogleのアカウントやGoogle Appsと統合するための機能といった、App Engineの主要な機能を取り上げています。さらに、タスクキューやオフライン処理など、App Engineを最大限に活用するための最適化のテクニックについても議論しています。また、本書のかなりの部分で、App Engineのスケーラブルなデータストアに関する議論をしています。アプリケーションのモデルとデータストアが提示するWebアプリケーションに関する新しい考え方は、Web開発者がこれまで当たり前だと思っていた原則について改めて考えるきっかけを与えてくれるでしょう。
プログラミングGoogle App Engine
Dan Sanderson 著、玉川 竜司 訳
- TOPICS
- Programming , Web , Java , Python
- 発行年月日
- 2011年01月
- PRINT LENGTH
- 392
- ISBN
- 978-4-87311-475-0
- 原書
- Programming Google App Engine
- FORMAT
関連ファイル
目次
はじめに 1章 Google App Engineの紹介 1.1 ランタイム環境 1.2 静的ファイルサーバー 1.3 データストア 1.3.1 エンティティとプロパティ 1.3.2 クエリとインデックス 1.3.3 トランザクション 1.4 サービス 1.5 Google Accounts 1.6 タスクキューとcronジョブ 1.7 開発ツール 1.8 管理コンソール 1.9 App Engineが(今のところ)できないこと 1.10 始めてみよう 2章 アプリケーションの作成 2.1 SDKのセットアップ 2.1.1 Python SDKのインストール 2.1.2 Java SDKのインストール 2.2 アプリケーションの開発 2.2.1 ユーザープリファレンスパターン 2.2.2 Pythonアプリケーションの開発 2.2.3 Javaアプリケーションの開発 2.2.4 開発コンソール 2.3 アプリケーションの登録 2.3.1 アプリケーションIDとタイトル 2.3.2 ドメイン名の設定 2.3.3 Google Appsと認証 2.4 アプリケーションのアップロード 2.5 管理コンソールの紹介 3章 Webリクエストの処理 3.1 App Engineのアーキテクチャ 3.2 フロントエンドの設定 3.2.1 Pythonアプリケーションの設定 3.2.2 Javaアプリケーションの設定 3.2.3 ドメイン名 3.2.4 App IDとVersion 3.2.5 リクエストハンドラ 3.2.6 静的ファイルおよびリソースファイル 3.2.7 セキュアな接続 3.2.8 Googleアカウントでの認可 3.3 アプリケーションの実行 3.3.1 Pythonのランタイム環境 3.3.2 Javaのランタイム環境 3.3.3 サンドボックス 3.3.4 アプリケーションキャッシング 3.3.5 ロギング 3.4 クォータと制限 3.4.1 リクエストの制限 3.4.2 CPUの制限 3.4.3 サービスの制限 3.4.4 デプロイメントの制限 3.4.5 課金対象のクォータ 3.4.6 リソース利用状況ヘッダ 4章 データストアのエンティティ 4.1 エンティティ、キー、プロパティ 4.2 PythonデータストアAPIの紹介 4.3 JavaデータストアAPIの紹介 4.4 プロパティの値 4.4.1 文字列、テキスト、Blob 4.4.2 unsetとnull値 4.4.3 複数の値を持つプロパティ 4.5 キーとキーオブジェクト 4.6 エンティティの利用 4.6.1 キーを使ったエンティティの取得 4.6.2 エンティティオブジェクトを調べる 4.6.3 エンティティの保存 4.6.4 エンティティの削除 5章 データストアのクエリ 5.1 クエリと種別 5.2 クエリの結果とキー 5.3 GQL 5.4 PythonのクエリAPI 5.4.1 Queryクラス 5.4.2 PythonでのGQL 5.4.3 結果の取得 5.4.4 キーに対するクエリ 5.5 JavaのクエリAPI 5.5.1 Javaでのキーに対するクエリ 5.6 インデックスの紹介 5.7 自動インデックスとシンプルなクエリ 5.7.1 ある種別のすべてのエンティティを返すクエリ 5.7.2 等価演算子フィルタを1つだけ持つクエリ 5.7.3 不等号フィルタ群を持つクエリ 5.7.4 ソート順序が1つ指定されたクエリ 5.7.5 キーに関するクエリ 5.7.6 種別を指定しないクエリ 5.8 カスタムインデックスと複雑なクエリ 5.8.1 複数のソート順序 5.8.2 複数のプロパティに関するフィルタ 5.8.3 複数の等価条件フィルタ 5.9 非等号とINフィルタ 5.10 Unsetされたプロパティと、インデックスを持たないプロパティ 5.11 ソート順序と値の型 5.12 クエリと複数の値を持つプロパティ 5.12.1 シンプルな例 5.12.2 PythonでのMVP 5.12.3 MVPと等価条件フィルタ 5.12.4 MVPと不等式フィルタ 5.12.5 インデックスの爆発的な増大 5.13 インデックスの設定 5.13.1 Pythonでのインデックス設定 5.13.2 Javaでのインデックス設定 6章 データストアのトランザクション 6.1 エンティティとエンティティグループ 6.1.1 キー、パス、祖先 6.1.2 祖先のクエリ 6.2 トランザクション中で起こりうる事象 6.2.1 トランザクション内での読み込み 6.3 Pythonでのトランザクション 6.4 Javaでのトランザクション 6.5 エンティティの更新 6.6 エンティティの読み出し 6.7 バッチ更新 6.8 インデックスの更新 7章 Pythonでのデータモデリング 7.1 モデルとプロパティ 7.2 プロパティの宣言 7.2.1 プロパティの値の型 7.2.2 プロパティの検証 7.2.3 インデックス付けされないプロパティ 7.2.4 自動的に設定される値 7.2.5 リストプロパティ 7.2.6 モデルとスキーマのマイグレーション 7.3 関係のモデリング 7.3.1 1対多の関係 7.3.2 1対1の関係 7.3.3 多対多の関係 7.4 モデルの継承 7.5 クエリとPolyModel 7.6 独自のプロパティクラスの作成 7.6.1 プロパティ値の検証 7.6.2 値の型のマーシャリング 7.6.3 デフォルト値のカスタマイズ 7.6.4 引数の受け入れ 8章 Java Persistence API 8.1 JPAのセットアップ 8.2 エンティティとキー 8.3 エンティティプロパティ 8.4 埋め込みオブジェクト 8.5 オブジェクトの保存、フェッチ、削除 8.6 JPAでのトランザクション 8.7 クエリとJPQL 8.8 関係 8.9 詳しい情報 9章 メモリキャッシュ 9.1 Pythonのmemcache API 9.1.1 Pythonでの値の設定と取得 9.1.2 複数の値の設定と取得 9.1.3 memcacheの名前空間 9.1.4 キャッシュの有効期限 9.1.5 キーの削除 9.1.6 memcacheのカウンタ 9.1.7 キャッシュの統計 9.2 Java memcache API 10章 URLとWebリソースのフェッチ 10.1 PythonでのURLのフェッチ 10.2 JavaでのURLのフェッチ 10.3 Pythonでの非同期リクエスト 10.3.1 RPCオブジェクト 11章 メールとインスタントメッセージの送受信 11.1 インバウンドサービスの有効化 11.2 メールメッセージの送信 11.2.1 送信者のアドレス 11.2.2 宛先 11.2.3 添付 11.2.4 Pythonでのメール送信 11.2.5 Javaでのメール送信 11.3 メールメッセージの受信 11.3.1 Pythonでのメールの受信 11.3.2 Javaでのメール受信 11.4 XMPPメッセージの送信 11.4.1 チャットの招待の送信 11.4.2 チャットメッセージの送信 11.4.3 Google Talkのユーザーステータスのチェック 11.5 XMPPメッセージの受信 11.5.1 PythonでのXMPPメッセージの受信 11.5.2 JavaでのXMPPメッセージの受信 12章 バルクデータ操作とリモートアクセス 12.1 Python用リモートAPIのセットアップ 12.2 Java用リモートAPIのセットアップ 12.3 バルクローダーツール 12.3.1 SQLiteのインストール 12.3.2 バックアップとリストア 12.3.3 データのアップロード 12.3.4 データのダウンロード 12.3.5 バルクローダーの制御 12.4 リモートシェルツールの利用 12.5 スクリプトからのリモートAPIの利用 13章 タスクキューとスケジュールタスク 13.1 タスクキュー 13.1.1 処理のレートとトークンバケット 13.1.2 タスクの要素 13.1.3 タスクハンドラとリトライ 13.1.4 タスクのテストと管理 13.1.5 Pythonでのタスクキューの利用 13.1.6 Javaでのタスクキューの利用 13.1.7 トランザクションを利用したタスクの積み方 13.2 スケジュールタスク 14章 WebアプリケーションフレームワークDjango 14.1 Djangoのインストール 14.2 Djangoプロジェクトの生成 14.3 リクエストハンドラスクリプト 14.4 Django App Engine Helper 14.5 Djangoアプリケーションの作成 14.6 DjangoでのApp Engineのモデルの利用 14.7 Djangoのユニットテストとフィクスチャの利用 14.8 Django Formsの利用 15章 アプリケーションのデプロイと管理 15.1 アプリケーションのアップロード 15.2 バージョンの利用 15.3 サービス設定の管理 15.4 インデックスの管理 15.5 ログのブラウズとダウンロード 15.6 データストアの検査 15.7 アプリケーションの設定 15.8 開発者の管理 15.9 クォータと課金 15.10 情報を得るには 索引