Category Archives: GAE/J[実践]クラウドシステム構築

「Google App Engine for Java[実践]クラウドシステム構築」14回(8月24日)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)
範囲 pp. 272 – p.299

第7章 Googleが提供するサービスとの連携

  • 7.3 Google Calendarとの連携
    • GAE/Jアプリケーションの作成
      • ローカルサーバでのテスト
      • GAEにデプロイしてのテスト
  • 7.4 GAE/Jアプリケーションを独自ドメインで運用
    • オリジナルアプリケーションを独自ドメインでサービス
    • GAEでの設定
      • p.280 l.6 「図7.4.6のアプリケーションの・・・」は唐突な感じがします。
    • Google Appsでの設定
    • AuthSubが利用できない場合
  • 7.5 Secure Data Connector
    • ファイアウォール内のサーバへの暗号化通信を実現
      • p.285 l.21 誤植「経由のでの・・」→「経由での・・」または「経由の・・」

    第8章 追加リソースの購入

    • 8.1 Billingの体系
      • BillingとQuota
      • Budget
      • Billing Administrator
    • 8.2 Billingの設定
      • Billingの有効化
        • p.294 l.1 誤植「Bandwidth Intersive」→「Bandwidth Intensive」
        • Billingの有効化に関する注意事項
      • Budgetの変更
      • Billingの無効化
    • 8.3 課金量の予測
      • 課金量の試算
      • リアルサーバとの比較

「Google App Engine for Java[実践]クラウドシステム構築」は今回で終了です。お疲れ様でした。

「Google App Engine for Java[実践]クラウドシステム構築」13回(8月20日)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)
範囲 pp. 261 – p.272

第7章 Googleが提供するサービスとの連携

  • 7.3 Google Calendarとの連携
    • コマンドラインアプリケーションでの操作
      • サービスクラス
      • クエリ
      • クエリ条件
        • p.263 表7.3.1 start-max は、最も新しいイベントの終了日時 ?
          Google Calendar APIs and Tools の、Data API Reference Guideを見たがよくわからず。

          Together with start-min creates a timespan such that only events that are within the timespan are returned. If not specified, default start-max is 2031-01-01.

          普通に考えるとstart-maxだし、終了日時が指定した範囲外でも開始日時が範囲内であればそのイベントは参照したいと思うので、「最も新しいイベントの開始日時」では?。
          ちなみにstart-minの値は対象に含み、start-maxの値は含まないようです。

          The lower bound is inclusive, whereas the upper bound is exclusive.

          また、イベント開始日時がstart-min以前でも、終了日時がstart-min以降であれば、つまりイベントと指定期間が重なっていれば対象に含まれるようです。

          Events that overlap the range are included.

          というように考えると、start-min, start-maxの説明に「もっとも{新しい/古い}イベントの{開始/終了}日時」という言葉を使うことがあまり良い説明ではないのかもしれません。

      • 取得したデータの表示
      • 予定を更新
    • GAE/Jアプリケーションの作成
      • プロジェクトの作成
      • プログラム
      • コマンドアプリケーションとの違い
      • シーケンス
        • p.271 図7.3.12 アプリケーションからGoogle Accountsへの認証トークンは何をきっかけに出す?
          その後に続く本文やp.266リスト7.3.2からだと、もう一度doGet()が呼ばれたときのようなので、アクセス要求確認後のブラウザからGoogle Accountsへのリクエストのあとにブラウザにリダイレクト先が示されて、リダイレクトされてくるのではないか。
      • ログイン画面へ
        • p.270 下からl.5最後
          自分自信の → 自分自身の
      • 認証情報取得

「Google App Engine for Java[実践]クラウドシステム構築」12回(8月17日)

Posted on by 0 comment

参加者 青木(読み手)、沼田(記)
範囲 pp. 245 – 261

第7章 Googleが提供するサービスとの連携

  • 7.2 アカウント認証サービスとの連携
    • アカウント認証サービスを使ってみる
      • プロジェクトの作成
      • 認証処理のフロー
      • ローカルサーバでのテスト
      • GAEでのテスト(Google Accountsを利用)
  • 7.3 Google Calendarとの連携
    • Google Data (GData) API
    • GData APIクライアントライブラリ
    • デモアプリケーションの実行
      • デモアプリケーションのダウンロード
      • サンプルアプリケーションの実行
    • コマンドラインアプリケーションでの操作
      • クライアントライブラリのダウンロード
      • Eclipseによるアプリケーション作成
      • 予定を取得するアプリケーション
      • シーケンス

「Google App Engine for Java[実践]クラウドシステム構築」11回(8月13日)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)
範囲 pp. 227 – p.244

第6章 テスト

  • 6.3 実環境でのテスト
    • データストア
    • テストデータのインポート,エクスポート
      • bulkloaderについて
      • ローダ/エクスポータクラス
      • Remote API
    • 実環境でのロギング
      • 管理コンソールの時間表記について
    • システムステージングの手法
      • 別アプリケーションとしてデプロイ
      • 同一アプリケーションの別バージョンとしてデプロイ
  • 6.4 パフォーマンスの確認
    • アプリケーションのパフォーマンス評価
      • p.232 l.6 中ほど 脱字
        重要なります。→ 重要なります。
    • ツール
      • レスポンスタイム
      • CPU負荷
      • [Tip] 負荷増大に応じたスケール変化のタイミング
      • ネットワークトラフィック
      • データストアのパフォーマンス
      • メール送信
      • [Column] やってはいけないこと
      • [Column] アプリケーション設計時の注意点
        • p.237 「非正規化を考慮する」 l.3
          「データストアの使用領域を大きくするよりも、…」は、「小さくするよりも、」ではないか。

第7章 Googleが提供するサービスとの連携

  • 7.1 GAEが連携可能なGoogleアプリケーション
    • アプリケーション
    • GAEからアプリケーションを利用するためのサービス
    • Google Apps
    • GAEから見たGoogle Appsとアプリケーション利用の違い
      • p.243 図7.1.1 各APIがどこを向いているのかがわかりにくい。この先読み進めていけばわかるだろうか。
        • GData APIは、Google App EngineがGoogle Appsを使うためのAPIだと思うが、この図の線のつながりではそのように理解しにくい。
        • Gagets APIや管理者向けAPIはGoogle App Engineとは関係ない?
        • Secure Data Connectorは、Google AppsやGoogle App Engineが外部と通信を行うときに用いるものだろう。
        • Google Visualization APIは、?
        • Google Web Toolkitは、GWTで作成したJavaScriptクライアントアプリのこと?
      • Editionによる違い
  • 7.2 アカウント認証サービスとの連携
    • アカウント認証サービスとは

「Google App Engine for Java[実践]クラウドシステム構築」第10回(8月10日)

Posted on by 1 comment

参加者 今井(読み手)、沼田(記)
範囲 pp. 208 – 226

第5章 サービスAPI

  • 5.4 Mail API
    • Mail APIを使用する
      • Low Level API
      • 管理者宛メール送信
      • ユーザアカウントAPIとの組み合わせ
        • 1行目「…利用者を差出人として誰か別の人に…」→「が」が不要。
      • [Column] 今後追加される可能性のあるAPI

第6章 テスト

  • 6.1 ユニットテスト
    • テスト環境
      • テストコンテナ
      • SDKで提供されているライブラリ
    • API Proxy
      • API Proxyの環境設定
    • ローカルサービスの実装
    • テストクラスの作成
      • 基底テストクラス
      • データストアのテスト
      • テストの実施
  • 6.2 ローカル環境でのテスト
    • ローカル環境下でのテストのポイント
    • Eclipse上でのアプリケーションデバッグ
    • データストア
      • ローカル環境のデータストアの操作
    • 各種サービスAPIの挙動
      • Images API
      • URLフェッチAPI
      • Mail API
    • ロギングの方法
      • ログフォーマットのカスタマイズ

「Google App Engine for Java[実践]クラウドシステム構築」第9回(8月6日)

Posted on by 0 comment

参加者 沼田、今井、青木(記)
範囲 pp. 195 – 208

第5章 サービスAPI

  • 5.3 Images API
    • Images APIを使用する
      • ①画像リソースを準備する
      • ②画像データを読み出すコードを記述する
      • ③変換処理をケース別に用意する
      • ④サーブレットに画像出力処理を実装する
      • ⑤画像の合成方法を理解する
  • 5.4 Mail API
    • Mailサービス
    • Mail APIの概要
      • メール送信サービスを支える環境
      • [Column]GoogleのSMTPサーバはいかに分散されているか
    • メール送信APIの制限
      • 送信者メールアドレスの制限
      • SMTPサーバの制限
      • QuotaとLimit
      • ローカル開発環境における制限
    • Mail APIを使用する
      • [Column]見えない送信制限
        • p.206 誤植 Columnの本文1行目
          誤「大量のメールを裁く」→正「大量のメールを捌く」
      • Java Mail API

「Google App Engine for Java[実践]クラウドシステム構築」第8回(8月3日)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)
範囲 pp. 182 – 195

第5章 サービスAPI

  • 5.2 URLフェッチAPI
    • URLフェッチの概要
      • レスポンスの扱い
      • ローカル開発サーバでの挙動
      • URLフェッチリクエストのタイムアウト
      • QuotaとLimit
    • URLフェッチを使用する
      • java.net API
      • Low Level API
        • p.186 下から3行目
          「文字エンコーディングの問題を見ていないので…文字化けします。」とは何をいっているのだろうか? その上では「自動的にデコードしてくれるのでほとんどのケースで文字化けせずに読み取れます。」とあるが。
          → p.185の下から6行目にある、レスポンスヘッダに文字エンコーディングが付いていない場合をいっているのではないか。
  • 5.3 Images API
    • Images API~画像データの加工
    • Images APIの概要
      • p.189 JSRって何の略?
        → Java Specification Request
      • Javaでの画像変換
      • 利用可能な画像加工
        • p.190 makeResize()はどんなアルゴリズムを使っているんだろう。
      • 画像の形式
      • 画像とローカル開発サーバ
      • QuotaとLimit

「Google App Engine for Java[実践]クラウドシステム構築」第10回(7月30日)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp. 165 – 182

第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リクエスト
      • リクエストヘッダの扱い

「Google App Engine for Java[実践]クラウドシステム構築」第9回(7月27日)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)
範囲 pp. 152 – 164

第4章 データストア

  • 4.5 JDO以外のデータストアAPI
    • Low Level APIによるデータストアの操作
      • Keyの取得と変換
  • 4.6 データストア設計上の注意点
    • データストアのパフォーマンス対策
    • 書き込みと読みこみのコスト
    • 分散カウンター
      • p.157 「リスト4.6.1・・」 クラス名CounterShardConfigについて、Shardは、「破片」とか「かけら」という意味でした。
      • p.158 「リスト4.6.3 カウンターの使用例」で並列に処理が実行された場合、commitしてからcountを取得するまでに、他の処理がcountをインクリメントすることはないのだろか?
    • Listプロパティを使った高速検索

「Google App Engine for Java[実践]クラウドシステム構築」第8回(7月20日)

Posted on by 0 comment

参加者 青木(読み手)、今井(記)
範囲 pp. 139 – 152

第4章 データストア

  • 4.4 トランザクション
    • 複数のデータを扱うトランザクション処理
    • キーの階層を利用したエンティティグループ
    • トランザクションとエンティティグループ
  • 4.5 JDO以外のデータストアAPI
    • JPA,Low Level APIによるデータストアの利用
    • JPAによるデータストアの操作
      • p.145 DataNucleusの読み方は?
        データニュークリアス、旧Java Persistent Objects JPOX (ウィキペディアより)
    • GAEでサポートされていないJPAの機能
    • JPAを使用するためのセットアップ
      • p.147 図4.5.1 l.5 <persistense>要素の最後の属性名
        v ersion="1.0"version="1.0"
    • EntityManagerインスタンス
    • JPAにおけるデータ構造の定義
      • エンティティの追加
      • エンティティの取得
      • エンティティの更新
      • エンティティの削除
    • Low Level APIによるデータストアの操作
      • エンティティの操作
        • p.152 「エンティティの操作」のl.1~
          「getProperty()メソッド、setProperty()メソッド … 値をセット/取得できます。」は、「… 値を取得/セットできます。」 の方が、メソッドと対応がとれてわかりやすい。