WEB+DB PRESS plusシリーズGoogle App Engine for Java[実践]クラウドシステム構築

[表紙]Google App Engine for Java[実践]クラウドシステム構築

A5判/312ページ

定価(本体2,480円+税)

ISBN 978-4-7741-3985-2

ただいま弊社在庫はございません。

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

Google App EngineはGoogleの提供するクラウド環境です。Python版に続いてこの春,Java版が発表されたことで,クラウドベースのシステム構築が,いよいよ業務レベルで現実のものになりました。本書は,Google App Engine for Java(GAE/J)による開発手法,従来型のシステム構築との考え方の違い,GAE/Jのデータベース環境BigTableの活用ノウハウ,Google Appsとの連携,テストのしかた,課金システム解説など,すでにGAE/Jによるシステム事例を持つ筆者が,現時点で持ちうるノウハウを詰め込んで解説した書籍です。

こんな方におすすめ

  • クラウドによるシステム開発に興味のある方
  • 受託開発に携わる方
  • Google App Engineの利用を考えている方
  • お金をかけずにクラウドを試したい方

本書籍に関するお知らせ

著者プロフィール

武田和広(たけだかずひろ)

1966年生まれ。大学時代にプログラムの仕事を始めて以来25年,携帯,GPS,電話交換機といった組込み系からJavaのWebアプリ,ゲームやWindows CE,iPhoneなどまで,何でも作るプログラマ。

第7章担当。


藤田剛(ふじたごう)

1974年生まれ。中学時代よりコンピュータとの関わりを持ち始め,高校時代にC言語を修得。何度か転職しつつ,Webアプリを中心に,特定の言語や技術にとらわれずに業務を遂行してきた。

第1章,6章担当。


岡本聰(おかもとさとる)

1981 年生まれ。音楽家の道を目指してBerklee 音楽院へ留学したが,中退。帰国後,Java,Oracle,オブジェクト指向設計などを学んだ後,現職に。現在はGAE/Jを中心に技術調査を行う。

第2,4章担当。


杉義宏(すぎよしひろ)

1982年生まれ。地元の大学院を卒業後,上京し外資系SIerに就職するが,もっとプログラムが書きたい! と1 年半で退職,プログラマとして現職に。iPhone アプリの開発ののち,GAEの世界へ。

第3章担当。


加藤太朗(かとうたろう)

1972 年生まれ。高校時代にN88-Basic,マシン語プログラムに出会ったことがきっかけで,Turbo C/C++を独学で身に付け,その後,グルージェントにてWeb/モバイル開発。

第5章担当。


松本明丈(まつもとあきひろ)

1974年生まれ。大学水産学部在籍時は,太平洋でサケを獲るなどしたが,なぜかシステム開発会社に就職。転職後のグルージェントでは,プロジェクトが失敗しないように気を配る。

第8章担当。

この書籍に関連する記事があります!

Googleのクラウド開発・運用環境でシステム開発を試してみよう
ITの世界で最近,もっともよく聞かれるキーワードと言えば,「クラウドコンピューティング」です。
[祝]12冊記念! WEB+DB PRESS plusシリーズ大集合
刻々と移り変わる情報技術,インターネットの業界。次々と登場する新技術を,日々キャッチアップするのは大変です。技術の進化を追うためは,知識の積み重ねが必要な場面が多々あります。

目次

第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 課金量の予測

    • 課金量の試算
    • リアルサーバとの比較