目次
第1章 クラウド時代のシステムインテグレーション
1.1 クラウドコンピューティング
- クラウドコンピューティングの登場
 - クラウドコンピューティングとは
 - 各プロバイダの特徴
 - Force.comプラットフォーム(salesforce.com)
 - Amazon EC2(Amazon.com)
 - Windows Azure(Microsoft)
 - Google App Engine(Google)
 
1.2 Google App Engine
- Google App Engineの概要
 - GAEを使うメリット
 - アプリケーション環境としての特徴
 
1.3 Google App Engine for Java
- 機能概要
 - Java実行環境
 - Webアプリケーションサーバ環境
 - データストアへのアクセス
 - 各種サービスAPI
 - Java以外のプログラミング言語の利用
 
第2章 制約
2.1 Quota(割り当て)とLimit(制限)
- QuotaとLimit,GAEを特徴付ける2つの制約
 - Quotaとは
 - Quotaの種類
 - Quotaの制限を超えてしまった際の動作
 - Tip 分間Quotaのさらなる引き上げ
 - Limitとは
 - Limitを超えた場合の動作
 - サービスAPIに対する制約
 - データストアサービスに関するQuota
 - Column 自動的に生成されるメタデータ
 - データストアサービスに関するLimit
 - メールサービスに関するQuota
 - メールサービスに関するLimit
 - URLフェッチサービスに関するQuota
 - URLフェッチサービスに関するLimit
 - Column URLフェッチサービス使用時の送受信量について
 - Imagesサービスに関するQuota
 - Imagesサービスに関するLimit
 - Memcacheサービスに関するQuota
 - Memcacheサービスに関するLimit
 - リクエストに対する制約
 - リクエストに関するQuota
 - リクエストに関するLimit
 - デプロイに対する制約
 - デプロイに関するQuota
 - デプロイに関するLimit
 - Column データストア使用時のCPU時間
 
2.2 Java APIに対する制約
- Java API,Servlet APIに対する制約
 - ファイルに対する制約
 - 書き込みは行えない
 - 参照と読み込みの制限
 - プロセス,スレッドに対する制約
 - プロセス,スレッドは使えない
 - 代替手段となるもの
 - ソケットの利用の禁止
 - User Interface Toolkitsの利用の禁止
 - Tip クラウド環境でのアプリケーションのパス
 - 画像の編集はImages APIで
 - Tip User Interface Toolkits制限緩和の可能性
 - Reflectionに対する制約
 - アプリケーション内のクラス
 - JRE,App Engine SDK内のクラス
 - その他GAE/JのSDKによって提供されるクラス
 - java.lang.Systemに対する制約
 - 何もしないメソッド
 - 常にnullを返すメソッド
 - java.lang.SecurityExceptionを送出するメソッド
 - Logging
 - LoggingライブラリはJava標準で
 - 標準出力もログになる
 - すべての標準出力がログにリダイレクトされるわけではない
 - ClassLoaderに対する制約
 - Column GAEに制約が必要な理由
 
第3章 開発手順
3.1 GAEアカウントの作成とデプロイの準備
- デプロイに必要な手続き
 - Googleアカウントの作成
 - GAEへのサインアップ
 - アプリケーションの作成
 - Column Googleアカウント作成時の注意点
 - Column アプリケーションIDの注意点
 
3.2 開発環境の構築
- GAE/J環境構築の手順
 - Javaの入手とインストール
 - Windows,Linux環境の場合
 - Mac環境の場合
 - Eclipseの入手
 - Google Plugin for Eclipseのインストール
 - Eclipse 3.4(Ganymede)の場合
 - Eclipse 3.3(Europa)の場合
 - Tip Eclipse,Google Pluginを使わない場合
 
3.3 アプリケーションの作成とデプロイ
- 開発からデプロイまでの流れ
 - プロジェクトの作成
 - ディレクトリ構成
 - srcディレクトリ
 - warディレクトリ
 - アプリケーションの実行とデバッグ
 - GAEへのデプロイ
 - Column Eclipse,Google Pluginを使わない場合のビルド,デプロイ
 - Column warディレクトリの応用
 - Column ローカル環境と実環境との違い
 
3.4 アプリケーションの設定
- 設定ファイルの記述と配置
 - デプロイの設定(web.xml)
 - web.xmlファイル
 - サーブレットとURLパス
 - JSP
 - ウェルカムファイル
 - フィルタ
 - セキュリティと認証
 - HTTPS通信
 - エラーハンドラ
 - Column デフォルトバージョン以外へのHTTPSアクセス
 - GAE/Jでサポートされていない設定
 - アプリケーションの設定(appengine-web.xml)
 - appengine-web.xmlファイル
 - 静的ファイルとリソースファイル
 - Column 静的ファイルを認識させるための設定例
 - Column ローカル環境と実環境の相違点
 - システムプロパティと環境変数
 - ssl-enabled
 - セッションを有効にする
 - Cronの設定(cron.xml)
 - cron.xmlファイル
 - スケジュールのフォーマット
 - Cronを使用する上での注意点
 - 管理者権限のみでのタスク実行
 - Cronの更新と確認
 
3.5 アプリケーションの管理
- 管理コンソールによる管理
 - Main
 - Dashboard
 - Quota Details
 - Logs
 - Cron Jobs
 - データストア
 - Indexes
 - Data Viewer
 - Administration
 - Application Settings
 - Developers
 - Versions
 - Admin Logs
 - Billing
 - Billing Settings
 - Billing History
 
第4章 データストア
4.1 BigTable
- 行と列の概念を持つ巨大なテーブル
 - BigTableとは
 - 検索のしくみ
 - GAEで利用されるBigTableの構造
 - Protocol Bu?ersによるデータ構造の構築
 - RDBMSとの違い
 - BigTableでできないこと
 - 考え方をシフトする
 - データストアの利用方法
 - Tip Null値に対する検索
 
4.2 JDOによるデータストアの操作
- JDOによるデータ構造の定義
 - 気を付けるポイント
 - キーによるエンティティの操作
 - エンティティの追加
 - エンティティの取得
 - エンティティの更新
 - エンティティの削除
 - クエリを使ったエンティティの取得
 - エンティティのライフサイクル
 - Tip detachCopy( )メソッドの自動設定
 
4.3 インデックス
- インデックスの構造と種類
 - Kindインデックス
 - Single-propertyインデックス
 - Compositeインデックス
 - インデックス定義ファイル
 
4.4 トランザクション
- トランザクションとは
 - GAEでのトランザクション処理
 - 楽観的ロック
 - 複数のデータを扱うトランザクション処理
 - キーの階層を利用したエンティティグループ
 - トランザクションとエンティティグループ
 
4.5 JDO以外のデータストアAPI
- JPA,Low Level APIによるデータストアの利用
 - JPAによるデータストアの操作
 - GAEでサポートされていないJPAの機能
 - JPAを使用するためのセットアップ
 - EntityManagerインスタンス
 - JPAにおけるデータ構造の定義
 - エンティティの追加
 - エンティティの取得
 - エンティティの更新
 - エンティティの削除
 - Low Level APIによるデータストアの操作
 - エンティティの操作
 - Keyの取得と変換
 
4.6 データストア設計上の注意点
- データストアのパフォーマンス対策
 - 書き込みと読み込みのコスト
 - 分散カウンター
 - Listプロパティを使った高速検索
 
第5章 サービスAPI
5.1 Memcache API
- メモリキャッシュサービスMemcache
 - Memcacheの概要
 - Memcacheに向いている性質のデータ
 - JCacheを使ってデータをキャッシュする
 - キャッシュデータの有効期限
 - Column キャッシュでないメモリへのロード
 - QuotaとLimit
 - Memcacheの注意点
 - Cacheインスタンスが異なっても同じMemcache
 - Cacheインスタンスのsize( )は全Cacheの合計
 - 登録しているキーの一覧が取得できない
 - get( ),put( )の呼び出しパフォーマンス
 - version間でも共有
 - Memcacheを使用する
 - キャッシュ可能なオブジェクト
 - JCacheとLow Level APIの違い
 - JCache API
 - Low Level API
 
5.2 URLフェッチAPI
- HTTPリクエストでほかのホストと通信
 - URLフェッチの概要
 - リクエストの作成
 - HTTPSリクエスト
 - リクエストヘッダの扱い
 - レスポンスの扱い
 - ローカル開発サーバでの挙動
 - URLフェッチリクエストのタイムアウト
 - QuotaとLimit
 - URLフェッチを使用する
 - java.net API
 - Low Level API
 
5.3 Images API
- Images API~画像データの加工
 - Images APIの概要
 - Javaでの画像変換
 - 利用可能な画像加工
 - 画像の形式
 - 画像とローカル開発サーバ
 - QuotaとLimit
 - Images APIを使用する
 - ①画像リソースを準備する
 - ②画像データを読み出すコードを記述する
 - ③変換処理をケース別に用意する
 - ④サーブレットに画像出力処理を実装する
 - ⑤画像の合成方法を理解する
 
5.4 Mail API
- Mailサービス
 - Mail APIの概要
 - メール送信サービスを支える環境
 - Column GoogleのSMTPサーバはいかに分散されているか
 - メール送信APIの制限
 - 送信者のメールアドレスの制限
 - SMTPサーバの制限
 - QuotaとLimit
 - ローカル開発環境における制限
 - Mail APIを使用する
 - Column 見えない送信制限
 - JavaMail API
 - Low Level API
 - 管理者宛メール送信
 - ユーザアカウントAPIとの組み合わせ
 - Column 今後追加される可能性のあるAPI
 
第6章 テスト
6.1 ユニットテスト
- テスト環境
 - テストコンテナ
 - SDKで提供されているライブラリ
 - API Proxy
 - API Proxyの環境設定
 - ローカルサービスの実装
 - テストクラスの作成
 - 基底テストクラス
 - データストアのテスト
 - テストの実施
 
6.2 ローカル環境でのテスト
- ローカル環境下でのテストのポイント
 - Eclipse上でのアプリケーションデバッグ
 - データストア
 - ローカル環境のデータストアの操作
 - 各種サービスAPIの挙動
 - Images API
 - URLフェッチAPI
 - Mail API
 - ロギングの方法
 - ログフォーマットのカスタマイズ
 
6.3 実環境でのテスト
- データストア
 - テストデータのインポート,エクスポート
 - bulkloaderについて
 - ローダ/エクスポータクラス
 - Remote API
 - 実環境でのロギング
 - 管理コンソールの時間表記について
 - システムステージングの手法
 - 別アプリケーションとしてデプロイ
 - 同一アプリケーションの別バージョンとしてデプロイ
 
6.4 パフォーマンスの確認
- アプリケーションのパフォーマンス評価
 - ツール
 - レスポンスタイム
 - CPU負荷
 - Tip 負荷増大に応じたスケール変化のタイミング
 - ネットワークトラフィック
 - データストアのパフォーマンス
 - メール送信
 - Column やってはいけないこと
 - Column アプリケーション設計時の注意点
 
第7章 Googleが提供するサービスとの連携
7.1 GAEが連携可能なGoogleアプリケーション
- アプリケーション
 - GAEからアプリケーションを利用するためのサービス
 - Google Apps
 - GAEから見たGoogle Appsとアプリケーション利用の違い
 - Editionによる違い
 
7.2 アカウント認証サービスとの連携
- アカウント認証サービスとは
 - アカウント認証サービスを使ってみる
 - プロジェクトの作成
 - 認証処理のフロー
 - ローカルサーバでのテスト
 - GAEでのテスト(Google Accountsを利用)
 
7.3 Google Calendarとの連携
- Google Data(GData)API
 - GData APIクライアントライブラリ
 - デモアプリケーションの実行
 - デモアプリケーションのダウンロード
 - サンプルアプリケーションの実行
 - コマンドラインアプリケーションでの操作
 - クライアントライブラリのダウンロード
 - Eclipseによるアプリケーション作成
 - 予定を取得するアプリケーション
 - シーケンス
 - サービスクラス
 - クエリ
 - クエリ条件
 - 取得したデータの表示
 - 予定を更新
 - GAE/Jアプリケーションの作成
 - プロジェクトの作成
 - プログラム
 - コマンドアプリケーションとの違い
 - シーケンス
 - ログイン画面へ
 - 認証情報取得
 - ローカルサーバでのテスト
 - GAEにデプロイしてのテスト
 
7.4 GAE/Jアプリケーションを独自ドメインで運用
- オリジナルアプリケーションを独自ドメインでサービス
 - GAEでの設定
 - Google Appsでの設定
 - AuthSubが利用できない場合
 
7.5 Secure Data Connector
第8章 追加リソースの購入
8.1 Billingの体系
- BillingとQuota
 - Budget
 - Billing Administrator
 
8.2 Billingの設定
- Billingの有効化
 - Billingの有効化に関する注意事項
 - Budgetの変更
 - Billingの無効化
 
8.3 課金量の予測
- 課金量の試算
 - リアルサーバとの比較
 
