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 検索
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 つのプロパティーでは < <= => > のいずれかのみ
使用する事が可能(複数使用すると、処理が極端に遅い
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 、共通ファイル編集、インポート後の差異等
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 のクリア