プログラミングGoogle App Engine

[cover photo]
TOPICS
Programming , Web , Java , Python
発行年月日
PRINT LENGTH
392
ISBN
978-4-87311-475-0
原書
Programming Google App Engine
FORMAT
PDF
Print
3,740円
この商品は品切れ再入荷未定です

本書では、Google App Engineの上で動作するアプリケーションの開発方法と、そのスケーラブルなモデルを最大限に活用する方法を解説します。メールの送信や画像の操作などのスケーラブルなサービス群や、デプロイと管理のためのツール、独自のドメイン名を使ってGoogleのアカウントやGoogle Appsと統合するための機能といった、App Engineの主要な機能を取り上げています。さらに、タスクキューやオフライン処理など、App Engineを最大限に活用するための最適化のテクニックについても議論しています。また、本書のかなりの部分で、App Engineのスケーラブルなデータストアに関する議論をしています。アプリケーションのモデルとデータストアが提示するWebアプリケーションに関する新しい考え方は、Web開発者がこれまで当たり前だと思っていた原則について改めて考えるきっかけを与えてくれるでしょう。

関連ファイル

目次

はじめに
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 情報を得るには
索引