WEB+DB PRESS plusシリーズGoogle App Engine for Java[実践]クラウドシステム構築
2009年9月10日紙版発売
2015年1月30日電子版発売
(株)グルージェント 著
A5判/312ページ
定価2,728円(本体2,480円+税10%)
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 課金量の予測
- 課金量の試算
- リアルサーバとの比較
この本に関連する書籍
-
Google Cloud Platform GAEソフトウェア開発入門 ―Google Cloud Authorized Trainerによる実践解説
Google Cloudは,すぐにクラウドでアプリを開発できるので,ビジネスをすばやくIT化できます。フルマネージド(サーバー管理が要らない!)なので,Googleの技術基盤に...
-
よくわかるAmazon EC2/S3入門 ―Amazon Web Servicesクラウド活用と実践
AmazonEC2/S3は,初期投資がまったく要らず,必要なときに必要なだけCPU・ハードディスクを時間単位で借りてクラウドコンピューティングのサービスを始めることができま...
-
Apache Solr入門――オープンソース全文検索エンジン
Apache Solrとは,オープンソースの検索エンジンです。Apache LuceneというJavaの全文検索システムをベースに豊富な拡張性をもたせ,多くの開発者が利用できるように作...
-
Google App Engine実践リファレンス
Google App EngineはGoogleのサーバリソースを利用できるWebアプリケーションプラットホームです。JavaもしくはPythonベースのアプリケーションサーバと,Google の分散...
-
Googleを支える技術 ……巨大システムの内側の世界
たとえば,ふだんなにげなく行っているWeb検索。背後には,想像以上に膨大な計算,多数のコンピュータの働きがあります。 本書では,論文やWebなどで公開されているパ...