目次
第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 課金量の予測
- 課金量の試算
- リアルサーバとの比較