2009-06-09

Google Developer Day 2009



今日は横浜まで行ってきて, Google Developer Day 2009に参加してきました。サプライズとしてAndroidが搭載されている携帯を無料で貰えました。開発用なので勿論サポートは無いし, SIM差すと請求額がとんでもなくなるらしいから, 実質Wi-Fi環境でしか動かせませんが, それを考慮してもメチャクチャ使い勝手が良いです(文字入力を除いて). 例えば, カメラで取った画像は2タッチでgmailおよびpicasaに送れます. また, 動画ならば2タッチでgmailおよびyoutubeにアップロードできます.

当日, 横浜で何があったかは, ネットで検索すれば色々と分かると思うのでここでは割愛します. とりあえず, Google Web Toolkitのベストプラクティスや, Google App Engineでjavaを動かす時の仕様および注意点などを聞けただけでも個人的には大満足です. あそこまで至れる尽くせりだと, なんか少しはオープンソースに貢献しないとバチがあたりそうな気がします. 時間が空いたらちょっとやってみたい気にさせられました.

Google Web ToolkitとGoogle App Engineには御世話になるつもりでいるので, またこのような機会があったら是非また参加したいと思います.

以上, 近況報告レポートでした.


#以下、メモ
※注意: 誤字脱字・誤解誤認の可能性あり

Google Developer Day 2009 memo

[基礎講演]
Google Chromeによる利点
-Speed up
--高精度化
--HTML5: canvas, vide, geolocation, app cache/DB, web workers(マルチタスク化)

1. canvas
-javascriptはスケールでない.
-canvasは宣言するだけ(?)
-O3D
--web app(NOT flash)で高解像度の3Dが描画可能

2. video
video tag
-Ex. 動画そのものをjavascriptで回転
-HTMLだけで動く, not flash

3. geolocation
???

4. app cache/DB
connectionに不具合がえってもcache/DBで補完

5. web workers
canvasで動かすタスクをマルチスレッド化

「これら全てをweb標準にする」
-そのためのGoogle Chrome
--IE以外(firefox, safari, opera)は賛同
--IE8でどうなるかは分からない

web socket -> Unixのsocketライク(パンフレット参照)
notice -> ポップアップは別の形で(パンフレット参照)

Google Chromeプロジェクトは"chromium"で今も動いてる。
-いつでも参加可能。
HTML5を実装し, マルチplatform化した(パンフレット参照)

次は, Mobileと統合したnew techを!

[Tom moss]
androidは活発で, USAでは既にNo.2に.
-次はJapanへ進出

[NTT docomo Mr. nagata]
Androidへの期待
-今までのdocomoのサービスを反省し, Smart phoneへ

keyはdeviceとapplication.
-deviceは良い
--あとはアプリ開発
---アプリ開発が売り上げ曲線の傾きに影響すると考えている.
----「ケータイするGoogle」
----Docomo Pro series HT-03A

app, dev, costの正の循環に期待
6月末〜7月上旬に環境を提供

[Chris Pruett]
Android storyの話

download app
-directly download
--easy to get
-develop business

サプライズ企画:Android Phoneの無料配布
-androidを広げたい
-androidのキラーアプリはGoogle以外の開発者が作ると期待


[Daud Glazer]
social webの話
-open social

webの特長
-web connect
--web <---> doc
--web <---> open

Problem
-app ---> user
--app <---> user

Social Web motivates innovations.

[Mr. kasahara]
mixiの次のステップ
-communication service

Mixi platform
1. application
-inside mixi
--social application
--PCとMobileの整合

2. connect
-outside mixi

3. ビジネス支援
-広告: 1page = 0.01 yen
-課金: 手取り8割
-資金: 出資or融資

利点: marketing costが低い
-マイミクによる伝播を利用
--social networkの一つの魅力
---アイデア勝負の環境を提供

Ex. ハグ☆ミー
-ハグ友達を選択
--相手に通知(それだけ?)

OSDE with Eclipse plug-in
-OpenSocial hackathonで使われている

[Ex. Goo home]
2 or 3以上のappを統合
-Goo homeのあるgadgetのアクションが他のgadgetに伝播

[Google Wave]
Google Waveの話
product, platform: API, protocol:open source
-serverにユーザがアクセス

Google Wave Demo
1. insert sentnce
2. real-time chat
3. 3人目以降は時系列を参照可能
4. localfileからD&Dでアップロード
5. uploadしたものはスライドショー可能
6. Blogからもアクセス可能
7. twitter + wave
8. Gameもシームレスにプレイ可能
9. Gameの時系列(Ex. チェスの手順)も参照可能

Ex. API
-loggy
--real-time translation

まとめ
-wave.google.com
-code.google.com/apis/wave
-222.waveprotocol.org
-devアカウントを後日配布

[Mr. Ishihara]
他productの紹介
-Google Web Elements
--make blog pwerful
-MapsAPI ver.3
--3年ぶりのバージョンアップ
--Key less
-ルート検索
--近いうちに公開予定
-GTUG(Google Technology User Group)発足
--1,2 monthlyで活動
---詳細はGOogle Lightening Talk

Android phoneについて
-Wi-Fi環境を強く推奨(通信費用の関係上)

Key: Make Powerful Web By Yourself


----------------------
[Google App Enging]
GAE-request処理について
-分散システムに類似してる?
-Ex. 分散システムのスケーラビリティ
--Ex. データでは無く参照ポインタを伝播

まとめ
-Fan-out
-Geolocation Info
-Relationship Glaph
-membership question
-write時間を考慮する


-----------------------
[Java on GAE]
outline
-GAEとは
-On Java Support
-App Enging Datastore

使えるもの
-Java 6が動く
-servelet/lib
-Google interface

特長
-install / maintainance不要
-負荷に応じてリソースの動的割り当て
--自動scaling
-CPUやband widthに応じて課金
--入っていの規模まではFree

App Engineについて
-Load Balancingベース
-開発者はアプリにfocusして欲しい
-最低でも3つのサーバ
--高信頼性

注意点
-HTTPリクエストが30秒をこえるとExeptionを投げる
--長いbackground processの禁止
-sand-box内でのみ動作
--ユーザによるスレッド操作はダメ
---serverはok(?)
--File Systemのread禁止
---FS readは必要ないはず

servelet API 2.5
Jettyを使用
-しかしjettyの特長は使えない
--jetty-web.xml
--continuations(継続) ← tango!は動かない可能性高いorz

Software Service
-JBBCはダメ
--Relational Databaseはコンセプトと合致しない
---正規化は必ずしも必要ではない
-APIはAPIProxyを通してつかう
--AOPができる
---サービス前後のprofilingが取得できる
----debugが簡単に!

sand-boxについて
-制限
--JVM permission
---local file / socketの禁止
----互いに参照させないため
--ただし, JVM上で動くものなら全てok
---JRuby, Jython, Rhino, etc.

under constructing...
-tech theme -> async
-full text search
-mail receive
-Datastore import/export tool
-etc.

Data Storeについて
-dataの格納の仕方が違う
--big tableは動的に分割される
---一見、制限は無いように見える
--schemaが無い
---not strict
--NOT RDBMS
---RDBMSはpowerful過ぎる
----ターゲットと合致しない

storeはsimpleに
-App dev
-App message
-App environment service on GAE
-APP scaleするインフラ
--リクエスト量, データ量を重要と考えているため

Data storeの特長
-Entity
--object in Java
-Kind
--Class in Java, table in DB
---person
-key
--primary-key in DB
---person/person:44, /pet:8
-e-group
--Transaction in DB
-property
-- Column in DB
-friends
--1対多
---/person:32, /person:34

functions
-get()
-put()

soft schema
-App layerによって決定
--devが楽 based on 経験
-JDO/JPAのmete-def

移行のヒント
-databaseはRDBMSは置換できない
--designし直す
---Primary key
---transactionが必要かどうか
----結構大変かも
----何がrootか考える
-----userがrootになりやすい
------複数かどうか考える
---array, view, trigger, data移動

Ex. joinが使えない
-非正規化

まとめ
-AFDを永続化
-soft schema
-非正規化を恐れずに行う
--高速化と堅牢性のトレードオフ

参考資料
-Google developer relations japan
-google code


※次はGoogle Web Toolkit: ベストプラクティスから

追記:
----------------------------
[Google Web TOolkit: ベストプラクティス]
Introduction
-nontrival cache
-client side
-AdWardsUI

History
-Event Bus
-DI + MVC(Model, View, Controller)

3 themes
1. async
-AJAX, ID array for scaling
--Sync/Asyncを2つとも用意
-make arm torelable
-failureを1つの場所に!
--GWT.ranAsyncUI to split
-Abstract Got
-通信したらレンダリング

2. decouple
2.1 DI
easy test, wit, debug
-Connection's'
-Geust's'
--remove over connections
-Instant
--if(コンタクトIDs!=???)
-EventBus for tossing

Ex. Private onSuccess{
cb.onSuccess{
... // then, create a new contact
}
}

2.2 MVC(Model, View, Controller)
ブラウザ遅い
-model<----prefetch<--->View
--Model: Keep Simple!
--prefetch:
---class PhoneEditor
inteface G_Display{
// ハンドラを増やす(?)
}
--View
---Keep Simple, but still slow
---MochView

3. stateless
duplicate functions
-Phone.front() // safer
-Save
-Cancel

Dependency Interaction(?)
-No Global, No Service
-GIN - client
-GUice - service

Decoupling Advantages
LayOff
-tests run fast
--Store Action in Local
--After cancelling, We can test

Ex. FireEvent(GwtEvent(?))...
// 色々用意して
-editor.editPhone
-display ...
//verify
-vndate...
-assert...
-phone...
-assert...

User Should NOT notice Server restart
-Expect multiple Instances

Recap
-Get b-history
-Use EventBus
-DI + MVP FTW
-3 themes
--1. 同期/非同期を含める
---常に使う必要は無い. scaleするため.
--2. 常にdecouplingする using EventBus
--3. strive to archive statelessness

参考資料
code.google.com/webtoolkit/
-スライドあり?

----------------------
[Google & OpenSource]
Googleとopensourceの関係の話
-結構面白かったからyoutubeであとでみるのも良いかも!

Google Code
-CSの学生は理論が強い
--しかし, 実践に弱い傾向がある
---Google Summer of Code

ライセンスの話
-GoogleのライセンスはBSDが多い
-Google Chromeは最もexposureなproject
--processやgoogleのstrategyもオープンにしている

プロジェクトによってopenの度合が違う
-Ex. 広 GoogleChrome, Android 狭

----------------------
[Google Lightening Talk]
Google Technology User Groupが各5分で自分のプロジェクトを発表
-Key by matsuo-san
-JRuby on GAE
--800 files to 100 files
-OpenSocial
--hackathon is opened for even begginers
-???VM

GTUGの発足
-メンバー募集
-活動は1,2ヵ月に一回

----------------------
[Google Wave API]
Google WAVE APIの仕様の話?
-途中から興味が無くなり, 寝惚け眼で聞いてた

3 waves type
-1. oneself
-2. 2 participants
-3. more than or equal to 3
※詳細は基礎講演のメモ参照

2 part
-1. embedding
--archtecture
---include javascript

method
-LoadWave
--ID
-SetUIConfig
--style???
-AddReply
--Visit -> reply
-Follow???

-2. Robot
???
※理解できなかった

3 件のコメント:

den さんのコメント...

ちょwwwマジかwwww行けばよかったwwwちなみにその携帯でスカイプは使えるの?

yasulab さんのコメント...

skypeは使えたけど, 流石に通話機能は使えなくなってたわ. 使えるのはchat機能だけ.

yasulab さんのコメント...

追記:
日本じゃできなかっただけかもしれない.

以下, descriptionの引用.
Put Skype Lite Beta on your Android phone

Local rate Skype-to-Skype calss Call from anywhere* WiFi or 4G not required Send and receive instant messages from your mobile Save mony calling landlines and mobiles abroad.

*Calling unavailable in some countries. please visit www.skype.com/go/mobiledownload for more info