Google 内のプロダクトの
   利用方法について




         Daisuke Sugai
はじめに

• 本プレゼンテーションでは、私が Google 内の様々なプロダ
  クトを利用し、作成したプログラム等について、解説しま
  す。

• 各プロダクトについて、期間が長いプロダクトにおいても
  、約 10 日間であり、非常に短期間にて対応する事が可能で
  す。

• 開発者向けの内容、デザイナー向けの内容、両方の内容が
  含まれておりますが、まずは皆さんが対応が可能な内容を
  最初に触って頂く事を推奨します。

• 途中、不明な点などがありましたら、遠慮なく質問して下
  さい。
Agenda

 • Android 
    ( デモプログラム + ソースコード含む )

 • Google App Engine 
    ( デモプログラム + ソースコード含む )

 • Google Apps 
    (Google Doc + Calendar + Sites +   Zoho)

• 今後対応したい事
Android

• Android
   o Google が開発した携帯電話用の開発プラットフォーム
   o 対抗馬  Apple の iPhone 、 Microsoft の
     Windows Mobile 、 PSION の Symbian( シンビアン )
   o 今月より NTT ドコモさんより発売中 (HT-03A)
   o OSS として、 Google Code にて、 Android のソースコー
     ドは公開済
   o Android 上で稼動したアプリケーションは Java で構築
   o Android を構築する時、専用のプラグイン・エミュレー
     ターが既に用意済 ( 携帯開発の現場では、画期的な事 )

• 早速、デモプログラムを動かします
  o   Language API との連携、音楽再生、動画再生、カメラ、
      バーコードからの Amazon 検索
Android

• プログラムを作成するまでの流れ
  • Eclipse 、 Android 用プラグインのインストール
  • Android 用 SDK のダウンロード・インストール
  • プロジェクト作成
  • 画面レイアウト作成
     – xml に画面上に表示する項目を定義 (Java のソースコ
       ードにて、対応する事も可能 )   Drag&Drop が不可
     – プロジェクト全体の定義 ( アクセス権・起動するアク
       ティビティの登録等 )
  • イベント処理作成
     – Java にて画面から発生したイベントの処理内容を記述
     – 「 1 画面レイアウト→ 1 アクティビティ」がペアーに
       なり、アクティビティには、「クリック」「初期化」
       メソッドが存在
Android

 • プログラムを作成するまでの流れ
     5. イベント処理作成
      – Java にて画面から発生したイベントの処理内容を記述
      – 「 1 画面レイアウト→ 1 アクティビティ」がペアーに
        なり、アクティビティには、「クリック」「初期化」
        メソッドが存在
     6. エミュレーター・実機で確認
      – USB の場合、実機を USB にて接続
      – 実行時、エミュレーター・実機の選択が可能
      – デプロイし、プログラム確認
Android

• 携帯の開発ではエミュレーターは自作が多く、バージョン
  管理が難しい為、エミュレーターが用意されている事が画
  期的

• 最近、 Android 関連の書籍が出版されており、 iPhone と比
  較すると、流行になると思われる ( ネットブック向けの OS
  開発発表)

• iPhone の場合、 OS が Mac の PC が必要だが、 Android は
  Windows ・ Mac 、どちらでも開発を行う事が可能

• 今回のサンプルにはないですが、 Android の端末のファイ
  ルの読み書き、 SQLite への CRUD が可能

• Android についての質問は ?
Google App Engine 

• Google App Engine
   o Google のインフラを無料で直接利用する事が可能
   o サーバー構築不要 デプロイが簡単
   o ログ管理 管理コンソールを提供
   o 専用の SDK をインストール
   o Python 、 JVM がサポート
   o JVM がサポートされている
     為、 JRuby 、 JPython 、 Groovy 、 Flex 等も稼動が可能
   o バックエンドでは負荷分散・クラスタ化に対応した構成
   o アプリケーションの負荷に応じて、アプリケーションサ
     ーバーを動的に増減 (50 分間負荷が高い場合、自動的に
     実行 )
   o RDB ではなく、 BigTable(Entity ベース ) を利用
   o Memcache 、 Mail 、 Login 等の API を Google が用意済
Google App Engine 

• サンプルアプリケーション
  o 休暇申請 
  o Python ・ Java 、共に同一の内容を実装
  o 全体の流れ
      従業員     リーダーに休暇を申請
      リーダー    従業員の休暇申請を承認
      マネージャー リーダーの申請結果を承認
      従業員     マネージャーの申請結果を確認
  o Java 版の場合、 Slim3 というフレームワークで実装
  o Python は全てゼロから実装


• 早速、プログラムを動かします
Google App Engine 

• 実行結果の確認方法
  o Google App Engine にて、 CPU やメモリーの使用率を確
    認
  o BigTable に格納されたデータを確認
  o CPU やメモリーやメール送信には制限があり、制限を超
    えた場合、エラー発生 ( 有料を選択した場合は正常 )

• BigTable は RDB とは異なる
   o 分散化された多次元のソートマップ ( ソート済の Excel)
   o データは Key-Value で保存され、キー指定行単位での
     CRUD
   o 決定的な相違は テーブル間の Join は不可
   o エンティティーは階層構造にて保存する事が可能
   o 楽観的ロック ( タイムスタンプ ) にてデータを制御
   o 現在の RDB ベースの DB 設計を BigTable に移行する場合
Google App Engine 

• 実行環境
  o Java の JDK は 1.6 系のみ
  o Eclipse にて Google App Engine 専用のプラグインあり
  o 今回は Slim3 のプロジェクトをダウンロードし、実装
  o アプリケーションサーバーは Jetty (軽量・高速サーバー
    )
  o クライアントにて作成したアプリケーションはサーバー
    に対してはコマンドを発行し、デプロイを実行

• 有名な事例 
  o ホワイトハウスの投票サイト 
  o 10 万件の質問と 360 万件の投票を毎秒 700 件のリクエス
    トで 2 日間行う
  o Google 側は何もせずに、自動的にスケールアウト実行
  o 他のアプリケーションに影響はなし
Google App Engine 

• アプリケーションサーバーの制約
  o 30 秒以上かかるリクエスト処理は Timeout エラー発生
  o クラスローダーの使用不可
      クラスの定義からクラスのオブジェクトを生成
  o スレッドの発行不可
      負荷の制約
  o ガーベージコレクションの実行不可
      予期せぬエラーの発生
  o ファイルに対する書込不可 但し読込は可能
  o  Comet の利用不可
      サーバーで発生したイベントをクライアントからのリ
       クエストに関係なく、クライアントに送信する
      Ajax を利用してアプリケーションを構築する際に利用
Google App Engine 

• Google が用意した API の利用
   o Mail    Gmail 専用の API に値を設定するのみ
   o User  ログイン画面を自動的に表示し、認証も行う
   o Memcache  セッションに値を入れた場合、サーバー構成
     が複数である為、セッションの引継を推奨せず、キャッ
     シュに格納する事が推奨(設計上もステートレスが推奨
     )
   o DataStore   BigTable へのデータの CRUD を実行
   o URLFetch  リダイレクトが NG である為、他のサーバー
     にアクセスする場合に使用 ( デモアプリでは使用せず )
   o Images  画像ファイルの制御 ( デモアプリでは使用せず
     )
   o Task Queue  バッチ処理等にて、処理をキューに保存し
     、順々に処理を実行 ( デモアプリでは使用せず )
Google App Engine 

• DataStore API
   o JDO(Java Data Object)
       1 件ずつデータを処理する場合に使用
       オブジェクトの永続化の標準 API
       オブジェクトデータベース
   o JPA(Java Persistance API )
       O-R マッパーの標準 API
   o low Level API
       大量のデータを処理する場合に使用
   o クエリーはできる限り使用しない方がよい(制約が多い
     )
       取得結果は 1000 件まで(超えた場合、エラー)
       BigTable はクエリーはサポートしていない
       誤ったクエリー実行後、インデックスがs
Google App Engine 

• DataStore API
   o Memcache を利用し、一度キャッシュした後、 Cron にて
     データを登録するような設計が必要
   o Join は使用不可だが、 ListProperty を利用し、親
     Entity の属性に子 Entity を List 型で格納する事で対応
     が可能
   o Group by 、 SELECT Count(*) 、 Like 文、 OR 、 != は不
     可
   o max() 、 min() では正しい値が取得できない為、ソート
     した後、 1 行目を取得する事が必要 (1000 件の制約によ
     る)
   o 関数やストアドプロシージャーは使用不可である為、関
     数での変換はせず、 Java 側にて変換
   o 1 つのプロパティーでは <   <=   =>   > のいずれかのみ
     使用する事が可能(複数使用すると、処理が極端に遅い
Google App Engine 

• Java での開発経験があれば、短期間での開発が可能

• GAE 上で稼動しているアプリケーション事例はまだ少ない

• 他社に先駆けて、 GAE 上でアプリケーションを稼動させる
  事ができれば、一歩リードできる(セキュリティーに説明
  が必須)

• GAE 専用の設計等が必要

• BigTable が RDB とは異なる構想の為、 Bi g Table の構想を
  早く習得するか否かが、プロジェクトの成功のカギ

• Google App Engine についての質問は ?
Google Apps

• Google Apps
   o Gmail ・カレンダー・ドキュメント等、 Google が提供す
     るアプリケーションのパッケージ
   o パッケージ等、ライセンス販売の商品は近い将
     来、 Office2.0 の影響により、ライセンスビジネスの規
     模は小さくなり、 Web を利用した製品の利用が主流
   o Google のインフラを利用し、かつ安く Google が提供す
     るアプリケーションの利用が可能
   o GlobalSystems では昨年より Google Apps 、特にドキュ
     メントを利用し、メールの添付は全て NG
   o Google Apps ・ Zoho を用意したテスト項目を試
     し、 Google Apps の方が昨年時点では優れていると判断
       vLookup 、共通ファイル編集、インポート後の差異等 
Google Apps

• Google Apps
   o GlobalSystems にて稼動中のサイトは以下の構成
         トップページ
       スケジュールと実績 個人毎
       申請管理
       書籍管理
       共有ファイル
       ブログ一覧
       動画一覧
       取引先一覧
       Gmail
       サイトへの要望
       ニュース
       その他
Google Apps

• Google Apps
   o 申請管理
       Google SpreadSheet と Form を連携
   o 書籍管理
       Zoho Creator にて作成した Form と Google を連携
   o ガジェット管理
       Gmail
       サイトへの要望
       ニュース
       その他

• 早速、プログラムを動かします
Google Apps

•   Google Calendar
•   Google Doc
•   Google Chat
•   Google Sites
     o グループ化したユーザのみ編集可能
         ウェブページ - ドキュメント表示・コメント記述等
         ダッシュボード  - ガジェット貼付
         お知らせ  - 掲示板
         ファイル キャビネット  - ファイル一覧
         リスト  - リスト一覧にて表示

• 同一サイトを構築する場合、数人月が必要だ
  が、 Google Apps を利用する事で数日で構築可能
Google Apps

• Microsoft の Office 製品のライセンスを購入しなくとも、
  月 50 ドルにて同様の機能を実現する事が可能

• Microsoft も Google ・ Zoho の動きにより、 OfficeLive を
  立ち上げ、さらに Office 製品のライセンス料金を半額以下
  に下げる

• Microsoft と同様の機能を持つ Office 製品も登場
  し、 Microsoft の 75% 以下の値段にて購入が可能
   o Kingsoft Office


• Google の機能を多く含むサイトの構築が可能だが、 API 等
  を利用する場合、外に API を利用したサイトを作成し、連
  携
今後対応したい事

• Google
   o Android
   o SketchUp
   o Google API (Virtualization etc)
• Scala (Lift)
• Ubuntu 9.0.4
   o OS Windows → Ubuntu(Linux Desktop OS)
• Cloud 環境( SaaS 型サービス)の支援
   o Jimdo, Google Apps 等、安く・早く・上手にサイトを作
     成するツールを使い、短期間でのサイト構築支援
   o GAE 、 Stax.net 、 Amazon 等の PaaS( プラットフォーム )
     上にて稼動するアプリケーションの構築支援
• ドラゴンクエスト 9 のクリア

Google Product

  • 1.
    Google 内のプロダクトの 利用方法について Daisuke Sugai
  • 2.
    はじめに • 本プレゼンテーションでは、私が Google内の様々なプロダ クトを利用し、作成したプログラム等について、解説しま す。 • 各プロダクトについて、期間が長いプロダクトにおいても 、約 10 日間であり、非常に短期間にて対応する事が可能で す。 • 開発者向けの内容、デザイナー向けの内容、両方の内容が 含まれておりますが、まずは皆さんが対応が可能な内容を 最初に触って頂く事を推奨します。 • 途中、不明な点などがありましたら、遠慮なく質問して下 さい。
  • 3.
    Agenda • Android     ( デモプログラム + ソースコード含む ) • Google App Engine      ( デモプログラム + ソースコード含む ) • Google Apps      (Google Doc + Calendar + Sites +   Zoho) • 今後対応したい事
  • 4.
    Android • Android o Google が開発した携帯電話用の開発プラットフォーム o 対抗馬  Apple の iPhone 、 Microsoft の Windows Mobile 、 PSION の Symbian( シンビアン ) o 今月より NTT ドコモさんより発売中 (HT-03A) o OSS として、 Google Code にて、 Android のソースコー ドは公開済 o Android 上で稼動したアプリケーションは Java で構築 o Android を構築する時、専用のプラグイン・エミュレー ターが既に用意済 ( 携帯開発の現場では、画期的な事 ) • 早速、デモプログラムを動かします o Language API との連携、音楽再生、動画再生、カメラ、 バーコードからの Amazon 検索
  • 5.
    Android • プログラムを作成するまでの流れ • Eclipse 、 Android 用プラグインのインストール • Android 用 SDK のダウンロード・インストール • プロジェクト作成 • 画面レイアウト作成 – xml に画面上に表示する項目を定義 (Java のソースコ ードにて、対応する事も可能 )   Drag&Drop が不可 – プロジェクト全体の定義 ( アクセス権・起動するアク ティビティの登録等 ) • イベント処理作成 – Java にて画面から発生したイベントの処理内容を記述 – 「 1 画面レイアウト→ 1 アクティビティ」がペアーに なり、アクティビティには、「クリック」「初期化」 メソッドが存在
  • 6.
    Android • プログラムを作成するまでの流れ     5. イベント処理作成 – Java にて画面から発生したイベントの処理内容を記述 – 「 1 画面レイアウト→ 1 アクティビティ」がペアーに なり、アクティビティには、「クリック」「初期化」 メソッドが存在      6. エミュレーター・実機で確認 – USB の場合、実機を USB にて接続 – 実行時、エミュレーター・実機の選択が可能 – デプロイし、プログラム確認
  • 7.
    Android • 携帯の開発ではエミュレーターは自作が多く、バージョン 管理が難しい為、エミュレーターが用意されている事が画 期的 • 最近、 Android 関連の書籍が出版されており、 iPhone と比 較すると、流行になると思われる ( ネットブック向けの OS 開発発表) • iPhone の場合、 OS が Mac の PC が必要だが、 Android は Windows ・ Mac 、どちらでも開発を行う事が可能 • 今回のサンプルにはないですが、 Android の端末のファイ ルの読み書き、 SQLite への CRUD が可能 • Android についての質問は ?
  • 8.
    Google App Engine  • Google App Engine o Google のインフラを無料で直接利用する事が可能 o サーバー構築不要 デプロイが簡単 o ログ管理 管理コンソールを提供 o 専用の SDK をインストール o Python 、 JVM がサポート o JVM がサポートされている 為、 JRuby 、 JPython 、 Groovy 、 Flex 等も稼動が可能 o バックエンドでは負荷分散・クラスタ化に対応した構成 o アプリケーションの負荷に応じて、アプリケーションサ ーバーを動的に増減 (50 分間負荷が高い場合、自動的に 実行 ) o RDB ではなく、 BigTable(Entity ベース ) を利用 o Memcache 、 Mail 、 Login 等の API を Google が用意済
  • 9.
    Google App Engine  • サンプルアプリケーション o 休暇申請  o Python ・ Java 、共に同一の内容を実装 o 全体の流れ  従業員     リーダーに休暇を申請  リーダー    従業員の休暇申請を承認  マネージャー リーダーの申請結果を承認  従業員     マネージャーの申請結果を確認 o Java 版の場合、 Slim3 というフレームワークで実装 o Python は全てゼロから実装 • 早速、プログラムを動かします
  • 10.
    Google App Engine  • 実行結果の確認方法 o Google App Engine にて、 CPU やメモリーの使用率を確 認 o BigTable に格納されたデータを確認 o CPU やメモリーやメール送信には制限があり、制限を超 えた場合、エラー発生 ( 有料を選択した場合は正常 ) • BigTable は RDB とは異なる o 分散化された多次元のソートマップ ( ソート済の Excel) o データは Key-Value で保存され、キー指定行単位での CRUD o 決定的な相違は テーブル間の Join は不可 o エンティティーは階層構造にて保存する事が可能 o 楽観的ロック ( タイムスタンプ ) にてデータを制御 o 現在の RDB ベースの DB 設計を BigTable に移行する場合
  • 11.
    Google App Engine  • 実行環境 o Java の JDK は 1.6 系のみ o Eclipse にて Google App Engine 専用のプラグインあり o 今回は Slim3 のプロジェクトをダウンロードし、実装 o アプリケーションサーバーは Jetty (軽量・高速サーバー ) o クライアントにて作成したアプリケーションはサーバー に対してはコマンドを発行し、デプロイを実行 • 有名な事例  o ホワイトハウスの投票サイト  o 10 万件の質問と 360 万件の投票を毎秒 700 件のリクエス トで 2 日間行う o Google 側は何もせずに、自動的にスケールアウト実行 o 他のアプリケーションに影響はなし
  • 12.
    Google App Engine  • アプリケーションサーバーの制約 o 30 秒以上かかるリクエスト処理は Timeout エラー発生 o クラスローダーの使用不可  クラスの定義からクラスのオブジェクトを生成 o スレッドの発行不可  負荷の制約 o ガーベージコレクションの実行不可  予期せぬエラーの発生 o ファイルに対する書込不可 但し読込は可能 o  Comet の利用不可  サーバーで発生したイベントをクライアントからのリ クエストに関係なく、クライアントに送信する  Ajax を利用してアプリケーションを構築する際に利用
  • 13.
    Google App Engine  • Google が用意したAPI の利用 o Mail    Gmail 専用の API に値を設定するのみ o User  ログイン画面を自動的に表示し、認証も行う o Memcache  セッションに値を入れた場合、サーバー構成 が複数である為、セッションの引継を推奨せず、キャッ シュに格納する事が推奨(設計上もステートレスが推奨 ) o DataStore   BigTable へのデータの CRUD を実行 o URLFetch  リダイレクトが NG である為、他のサーバー にアクセスする場合に使用 ( デモアプリでは使用せず ) o Images  画像ファイルの制御 ( デモアプリでは使用せず ) o Task Queue  バッチ処理等にて、処理をキューに保存し 、順々に処理を実行 ( デモアプリでは使用せず )
  • 14.
    Google App Engine  • DataStore API o JDO(Java Data Object)  1 件ずつデータを処理する場合に使用  オブジェクトの永続化の標準 API  オブジェクトデータベース o JPA(Java Persistance API )  O-R マッパーの標準 API o low Level API  大量のデータを処理する場合に使用 o クエリーはできる限り使用しない方がよい(制約が多い )  取得結果は 1000 件まで(超えた場合、エラー)  BigTable はクエリーはサポートしていない  誤ったクエリー実行後、インデックスがs
  • 15.
    Google App Engine  • DataStore API o Memcache を利用し、一度キャッシュした後、 Cron にて データを登録するような設計が必要 o Join は使用不可だが、 ListProperty を利用し、親 Entity の属性に子 Entity を List 型で格納する事で対応 が可能 o Group by 、 SELECT Count(*) 、 Like 文、 OR 、 != は不 可 o max() 、 min() では正しい値が取得できない為、ソート した後、 1 行目を取得する事が必要 (1000 件の制約によ る) o 関数やストアドプロシージャーは使用不可である為、関 数での変換はせず、 Java 側にて変換 o 1 つのプロパティーでは <   <=   =>   > のいずれかのみ 使用する事が可能(複数使用すると、処理が極端に遅い
  • 16.
    Google App Engine  • Java での開発経験があれば、短期間での開発が可能 •GAE 上で稼動しているアプリケーション事例はまだ少ない • 他社に先駆けて、 GAE 上でアプリケーションを稼動させる 事ができれば、一歩リードできる(セキュリティーに説明 が必須) • GAE 専用の設計等が必要 • BigTable が RDB とは異なる構想の為、 Bi g Table の構想を 早く習得するか否かが、プロジェクトの成功のカギ • Google App Engine についての質問は ?
  • 17.
    Google Apps • Google Apps o Gmail ・カレンダー・ドキュメント等、 Google が提供す るアプリケーションのパッケージ o パッケージ等、ライセンス販売の商品は近い将 来、 Office2.0 の影響により、ライセンスビジネスの規 模は小さくなり、 Web を利用した製品の利用が主流 o Google のインフラを利用し、かつ安く Google が提供す るアプリケーションの利用が可能 o GlobalSystems では昨年より Google Apps 、特にドキュ メントを利用し、メールの添付は全て NG o Google Apps ・ Zoho を用意したテスト項目を試 し、 Google Apps の方が昨年時点では優れていると判断  vLookup 、共通ファイル編集、インポート後の差異等 
  • 18.
    Google Apps • Google Apps o GlobalSystems にて稼動中のサイトは以下の構成    トップページ  スケジュールと実績 個人毎  申請管理  書籍管理  共有ファイル  ブログ一覧  動画一覧  取引先一覧  Gmail  サイトへの要望  ニュース  その他
  • 19.
    Google Apps • Google Apps o 申請管理  Google SpreadSheet と Form を連携 o 書籍管理  Zoho Creator にて作成した Form と Google を連携 o ガジェット管理  Gmail  サイトへの要望  ニュース  その他 • 早速、プログラムを動かします
  • 20.
    Google Apps • Google Calendar • Google Doc • Google Chat • Google Sites o グループ化したユーザのみ編集可能  ウェブページ - ドキュメント表示・コメント記述等  ダッシュボード  - ガジェット貼付  お知らせ  - 掲示板  ファイル キャビネット  - ファイル一覧  リスト  - リスト一覧にて表示 • 同一サイトを構築する場合、数人月が必要だ が、 Google Apps を利用する事で数日で構築可能
  • 21.
    Google Apps • Microsoft のOffice 製品のライセンスを購入しなくとも、 月 50 ドルにて同様の機能を実現する事が可能 • Microsoft も Google ・ Zoho の動きにより、 OfficeLive を 立ち上げ、さらに Office 製品のライセンス料金を半額以下 に下げる • Microsoft と同様の機能を持つ Office 製品も登場 し、 Microsoft の 75% 以下の値段にて購入が可能 o Kingsoft Office • Google の機能を多く含むサイトの構築が可能だが、 API 等 を利用する場合、外に API を利用したサイトを作成し、連 携
  • 22.
    今後対応したい事 • Google o Android o SketchUp o Google API (Virtualization etc) • Scala (Lift) • Ubuntu 9.0.4 o OS Windows → Ubuntu(Linux Desktop OS) • Cloud 環境( SaaS 型サービス)の支援 o Jimdo, Google Apps 等、安く・早く・上手にサイトを作 成するツールを使い、短期間でのサイト構築支援 o GAE 、 Stax.net 、 Amazon 等の PaaS( プラットフォーム ) 上にて稼動するアプリケーションの構築支援 • ドラゴンクエスト 9 のクリア