ゆきのぶ日記
2008/06/10(Tue) [長年日記]
■ Google Deevlopers Day 2008 メモ
http://code.google.com/intl/ja/events/developerday/2008/home.html
聴いてきたメモ。例によって特に整理してないのだけど。
基調講演
- 課題を共有したい
- 昔 - メインフレーム
- パワー十分、アクセシビリティ不十分、デプロイ容易
- 次 - パソコン
- パワー十分、アクセシビリティ十分、デプロイ困難(ex. DLL HELL)
- 今 - インターネット
- same as メインフレーム、全世界にアプリ提供するのは難しい、ユーザインターフェースが微妙である
- 解決したい課題は - 3C
- クラウドをアクセスしやすく
- コネクティビティをユビキタスに - 日本は先進的である
- クライアントをパワフル
- オープンなウェブによるエコシステム
- 開発者とユーザがコンセンサスをとりながら進んでいる
- ユーザのためになることをすれば利益な繋がる
- Client
- Gears - Local DB, Server, Workerpool (Async)
- Google Gears → Gears 名称変更
- HTML5 の中に取り込まれることが決まっている
- 最近 Windows Mobile や Safari に対応
- MySpace, Wordpress,
- オフライン的な使い方をされることが多いが、
- ブラウザをよりリッチにする事ができる
- Connectivity
- Android
- 12億のPC, 31億の携帯
- 携帯の世界にはまだ、ウェブの革命が起きていない
- 元々がパートナーシップの元に、オープンソースとして開始された
- DEMO - PINの簡素化, デスクトップ的なUI, Workspace, Widget, 背景も動く (今何をしているかが判る), 完全なマルチタスク, ドラッグダウンによるイベント通知, COOOOOOOL, NY Times, Browser, スライダー, Mobile Mashup, 他のアプリの作業内容を活用できる, 自動化された顔認識, 関連づけのような機能が Mashup?, Street View!,
- Cloud
- リソースをインターネット側に置く, どこからでもアクセスできるように
- Google App Engine - 同じクラウドの環境で開発できるようになる
- 開発した Web アプリを - Google の Could Platform の中で動かせる
- Why? - Web アプリのコーディングだけでは済まない, 鯖設定, 場所
- 継続 - 最も困難な課題, 複雑化するともう大変
- Google App Engine では、このような課題を解決したい
- How? - Develop Locally → Deploy to Google (1Click!) → Launch
- 管理コンソールもある
- Example - TweetWheel, laterloop, 地震安否情報
- OpenSocial アプリケーション と呼ぶのか
- 将来展開 - Offline Processing (Batch), More Languages, Rich Media Support, Additional Infrastructure
- API - Memcache, Image Manipulation, Price, Free on Startup
- 15 万人の Waiting List - 日本の開発者も来週には試せるようになる
- GData / AJAX APIs/Controls
- GData API - atom publishing を使ったデータのやりとりができる
- Storage として Google を使うことができる
- AJAX APIs/Controls - Search, Translate, GUI Controls,
- GData API - atom publishing を使ったデータのやりとりができる
- Social Web
- 人は繋がっていたいという自然な欲求
- Web そのものが、元々繋がるために存在するもの
- APPs: iGoogle, Maps, YouTube
- APIs: OpenSocial, Socila Graph, Friend Connect
- OpenSocial - SNSの縦割りと言う問題, 開発時に汎用性が出ない
- 開発用のAPIを業界全体で標準化する取り組み
- Container: 具体的なSNSサービス
- リクルート メディアテクノロジーラボ
- コマーシャライザー, 演劇ライフ, スゴイ地図, booot.tv
- Mashup Award 4th - 賞金100万円ですよ
- ドコイク - OpenSocial の活用事例, Local Search に分類されるメディア
- まずは Container を実装して公開している, 確認用 Gadget も用意
- Why OpenSocial? - ADDONを考えていたで親和性高い, コスト面
- メディア間の Gadget 互換性による広がり
- リクルートメディアに対する Gadget 拡大による認知拡大
- [要望] Containerの実装で、日本語やセキュリティが難しかった、仕様全体の明確化が進んで欲しい, 日本の企業としては
- さらに OpenSocial
- Friend Connect - コピペ程度でアプリ作成できる, 質問に答える程度でOK
- 開発をより容易に
- Web Developer には色々な人がいる
- Designer みたいな人も, Owner みたいな人も, User みたいな人も (ex. Blog Widget)
- RESTful対応 - Chart API, et al.
- Google Web Toolkit
- Web Developer には色々な人がいる
- Google Maps API for Flash, Google 加藤さんの DEMO
- 加速度センサーと USB を使ったデバイス
- Flight Simulator のような DEMO ができるはずだった...
- [New!] Local Device を Flash を使って取り込むことができる
- Google Earth API - Google Earth on your Website!
- Browser Plugin としての実装
- DEMO - 初めての来日, Geographic Application, KML
- ZOOMIN, KMJ のファイルをロードしている, 数行のロード
- MONSTER MILKTRUCK
- RESTful対応
- 今までは JavaScript のライブラリとして提供してきた
- しかし、もっとシンプルな携帯の需要がある
- URLの中のパラメータによりレスポンスを得る方式
- Google Chart API (png)
- Google Static Maps API (gif), path による経路指定
- Language, Search, Feed (JSON)
- One More Thing [4つめのC]
- Google 辻野さん - Community, サポートについて
- 日本語コードサイト - 日本語ドキュメントの整備, 本日倍増!!!!
- デベロッパー交流会の紹介
- Google API experts program - MS の MVP みたいなものか?
Google Data APIs
- Mountain View にて Web Application の開発に従事
- Google Data APIs を使っている人は少ない - そんな人が今日のターゲット
- Web を使って XML をやりとりする API である
- クライアントライブラリ整備済 - XML Parse など代行してくれる
- Ovewview
- Apps - Hosted Domain Management, メールの委託などの状況にて
- Calender - Calender content
- Spreadsheets - Spreadsheets content
- YouTube - YouTube videos
- Atom/APP (Atom Publish Protocol), CRUD operation
- Authentication - makes Wtire operation available
- Queries - by free text
- Optimistic Concurrency - versioning?
- Atom vs RSS
- Kind の概念
- Example: Event, Comment, Playlist, Video
Android
- stackのlayer構造, phoneはapplication
- Building Blocks: Activity, IntentReceiverm Service, ConetntProvider
- 用語定義
- Activity: molecule, ある一連の機能, メールとか
- Task: Activity のグループ
- Process: standard Linux process
- APK: a application package, like jar
- Activity: API class を継承するもの, ユーザができることを規定するもの
- photo editor, photo picker, startはuserがapplicationをstartしたとき
- Activity には context がある
- Task は具体的なクラスではなく概念的なもの, 実装するのは常にクラスではない
- Process は Linux process と 1:1 mapping される
- デフォルトでは APK あたり一つの Process, 拡張可能
- デフォルトでは Process 一つの Thread, マルチスレッド可能
- Developer Toolchain
- Emulator, QEMU based ARM emulator, same system as device
- Eclipse Plugin, みんな慣れてるし, Debugging Supported
- Open
- [Industry]
- Apache 2.0 License, source available after first handsets ship
- [Users]
- control experience, what gets installed, choose defaults
- [Developers]
- free to ship application, no hidden APIs, integrate, extend, and replace existing applications
- [Industry]
- Integrate
- seemless: browser -> map application
- Extend
- map appplication -> 配車ソフトウェア
- Replace
- どのコンポーネントも置き換えることができる
- Contacts -> Phonebook 2.0
- Security
- application には unique user id が付与される, root の 3 つだけが例外
- 他の application からのアクセスを受けたくない場合は private を守れる
- 他の application と連携したい場合には開発者が明示的に組み込む
- 何にアクセスするかは application は user に提示して判断を仰ぐ
- as a Developer
- Java, rich API, service set, open platform
- Q&A
- hardware を変えずに update できる範囲は layer のどこまでか。platform, scalability, alliance の連携はあるので完成系となるが、open source なので compatible ではないかも知れないそこで device profie を策定している, 世代の心配を軽くできる。
Gears - 河内さん, 市川さん
- 3C のうち Client の強化
- 2007 に初 DEMO をして 1 年が経過 - ブラウザにオフライン機能, という紹介
- コンセプト
- マシンの能力を最大限に引出し、デスクトップ並みのウェブアプリを!!
- オフライン機能はその機能の 1 つにすぎない
- 名前を Gears にして、開発プロセスもオープンにしている
- Google に限らず、オープンな拡張機能をブラウザに先取りする
- マシンの能力を最大限に引出し、デスクトップ並みのウェブアプリを!!
- これまでのブラウザ
- Web 標準はほぼ達成
- 強力で拡張可能な Platform
- XHR と AJAX
- Service/Platform としての Web の可能性が広まってきた
- ブラウザの問題点
- ローカルデータにアクセスできない
- 信頼性 - 肝心なときにオフライン
- レスポンス - ローカルアクセスよりずっと遅い
- パワー - HTML レンダリングのみに 4core CPU は不要
- 理想的には
- 1 app 1 URL.
- seemless switching between offline and online.
- local data available.
- all platform, all user available.
- Gears: インクリメンタルなアプローチ
- HTML Form → AJAX → Gears → ... →
- ブラウザのプラグインとして利用者に提供
- プログラマから見ると JavaScript API として見える
- アーキテクチャ
- Local Storage
- 変更内容をネットワークと同期する
- 通信と UI は完全に独立
- 例
- Google Reader (英語)
- Google Docs (英語)
- Remember the Milk
- このプレゼンテーション
- Gears の構成要素
- LocalServer - HTML などをローカルに保存
- Database - SQL も使える
- WorkerPool - JavaScript のスレッドみたいな
- LocalServer: アプリケーションをオフラインで
- JavaScript からキャッシュ対象を制御できる
- ManagedResourceStore
- Database: SQLite3
- 厳格な same-origin セキュリティモデル
- prepared statement 対応, prevents SQL injection attacks.
- Local な SQL injection あり得る?
- WorkerPool: JavaScript をバックグラウンドで]
- UI の JavaScript を邪魔せずに通信などできる
- Timer, HTTP Request のサポート
- GearsMonkey
- Gears 非対応サイトを Gears で拡張するシステム
- 例: はてなブックマークをインクリメンタル検索
- 今後のGears
- Desktop API - ショートカットを作成
- Desktop Notification API - IM 風 POPUP
- File System Access API - 複数ファイル選択で Upload
- Resumable Upload - Large Uploads with Progress, POST に Range を付与
- Geolocation - お店検索
Gadget
- iGoogle - Home としての役割
- Running Platform
- iGoogle 以外の Web サイト
- Why Gadget?
- fun! & easy! - 標準的な Web の知識のみで OK
- too many users and not enough gadgets - Developer からするとチャンス
- Myspace や mixi(交渉中) でも使えるようになる
- Who Develops?
- 個人が趣味で作るのが主流
- teenager が趣味のために作る
- 個人が生計のために作る
- 会社がビジネスのための作る
- How Develop?
- Gadget is a Simple HTML/JavaScript in an XML wrapper.
- 作成した XML を HTTP Accessible な所に置く
- 例: Google Code / Google Page Creator
- content type="url" → iframe にてそのまま gadget になる、クロスドメインの制限についても避けることができる
- Embedding Flash inside a Gadget
- User Preferences
- User can configure a gadget with user preferences.
- API allows you to get and save user preferences, google のサーバに保存される
- Fetching Content inside a Gadget
- XML, RSS, TEXT などなど取得できる
- iGoogle が Proxy/Cache になるイメージ
- Translation
- Next
- Maximized Mode
- Social APIs / OpenSocial対応
- Updates Stream / 友達の活動を知ることができる
- sandbox にて利用可能
Google Web Toolkit の AJAX について
- 現在の Web - HTML のあまりインテリジェントでない世界
- 全てレンダリングをやり直す必要があり、遅くて使いづらい
- AJAX - アーキテクチャの大きな変革, ブラウザが仕事をする
- 複数のブラウザへの対応が大変, 仕事をやめてしまうw
- JavaScript は大きなコードに適合するようにはできていない
- GWT
- Java のツールを使ってデバッグ、
- Java 2 JavaScript のコンパイラでもある
- Hosted Mode
- Eclipse での開発が可能,
- ブレークポイントでの stack trace, sender html
- Hosted Mode - Reflesh ボタンですぐに変更できる
- Iteration のサイクルを短縮化できる
- Any Java IDe, Rapid edit/test/debug/refactor cycle
- Unit testing
- Reuse through jars
- OO Design pattterns.
- Compile time errors.
- GWT Mission
- improve web experiments "for users"
- Uesrs first, Developers second
- Gee whiz technology is a distant third.
- Userbility Fundermentals
- Speed is vital
- History
- "Do not click reload!", "Do not click back!"
- History APIs available.
- linkable URLs such as #setting
- Localize
- type-safe template methods.
- Styling with CSS
- Separation code and presentation
- ex. setStyleName method
- DEMO:
- Kitchen Sink
- MVC and on the fly UI creation
- GUI パーツの動的ギャラリー的なもの
- 履歴管理も OK
- Lombardi BluePrint
- Collaborative Management?
- Kitchen Sink
- Lots of Stuff Here
- UI, Data, Quality, JRE Emulation
- Speed
- 使いやすさの中核になる
- GWT 1.4 incl benckmarking subsystem
- Optimize
- Single Java Code Base → each platform, language
- xxx.cache.html
- JSNI - JS Native Interface
- Great interop
- Branching Reality
- DOMImpl class, setInnerText の例
- Less Bandwidth
- GWTのバージョンが上がるとパフォーマンスか上がる
- Next 1.5 RC1
- Java 1.5 Support (generics, enums, foreach)
- Future
- Out-of-process hosted mode (other machines)
- Eclipse plugin
- Q&A
- Threads on GWT?
- 必要ないんじゃないすか。GWT is client.
- GWT on Google App Engine!
- GWT is not client (RPC), Google "GWT App Engine"!
- Deploy improvements (eclipse war)?
- later.
■ Google Deevlopers Day 2008 感想
続き。今度は感想。
基調講演
- 課題を外部の開発者と一緒に考えていきたいと点。素直にそうしたいと思った。まずはアンケートに回答することから始めていきたい。
- 解決したい課題は3C。問題の捉え方が素敵だと思った。
- Clientは確かに今貧弱だと思う。Gearsが本命になるかとうかは判らないけど、HTML5に組み込まれることが決まっているという話はとても興味深い。あとWindows Mobileにも対応というのは素晴らしい。
- Connectivityは、確かに日本は恵まれている。そしてAndroidのデモは凄くかっこよい。こんなスマートフォンは是非とも使ってみたいし、アプリケーションを開発してみたい。
- 検索や翻訳のAPIがあるという話。この前のYAPCでは、翻訳機能付きのプレゼンがいくつかあったけど、この辺の機能を使っているんだろうな。便利になったもんだ。
- 人は繋がっていたいという自然な欲求があるらしい。Twitterをやってるような自分としては反論の余地がない。そしてWebとは確かに相性が良いお話。
- OpenSocialは、SNSのAPIを標準化する取り組みと理解。このtDiaryをOpenSocial対応にするとすれば、やはりContainerとしての実装になるんだろうか。
- コマーシャライザーはそういえば見たことがなかった。
- Friend Connectは、質問に答えてコピペする程度でアプリの作成ができるらしい。後で試す。
- RESTfulという概念はあまりよく知らなかった。今も十分理解できてないかも知れない。
- Flight SimulatorのようなDEMOは動かず残念だった。また機会があれば見てみたい。
Google Data APIs
- Googleの中に好きなデータを格納できると言うものかと思っていたけど、そういうものではなかった。
- SpreadsheetsをSQL的に使うアプローチは面白そうだ。
Android
- Intentの概念は興味深いと思う。Intentはどういうデータ構造として実装されているのかが気になる。
- Securityは、利用者が判断する範囲が多くなっているモデルに思えた。将来、よくわからないものをインストールしてひどいことになる人が出てくるかも知れない。電話帳などの非密度が高い情報については、確認の回数を増やすなどしても良いかも。
- QEMUベースのエミュレーターは重いかも知れない。使ったことないけど。
- Phonebook 2.0は素晴らしそうな出来。こういうのは是非使ってみたい。
- 携帯もこういう世界になるんなら、どんどん使っていきたいな。
- そもそも日本ではいつ出るんだろう。
Gears - 河内さん, 市川さん
- Gearsはよく知らなかった。
- マシンの能力を引き出すというコンセプトは素晴らしい。
- オフライン機能だけではないというけど、最初に思いつく応用はオフライン対応になってしまうな。
- Local DBがあると言うことは、将来はブラウザのSQLインジェクションも起きるんだろうか。でもGearsならGQLか?。same-originセキュリティモデルは安心できる。
- 痒いところに手が届く機能が充実している印象。
Gadget
- iGoogleは今度から使ってみようかな。
- Gadgetの動作範囲がよくわからない。デスクトップ上とかでも動くんだろうか。正直iGoogleをホームページにしたいかというと、そうでもない。
- しかしGadgetの作成は想像以上に簡単そうだ。Win32APIでリージョンを気にしていた頃を思うと隔世の感が。
Google Web Toolkit の AJAX について
- 総じて、今までの私の GWT の使い方には間違いが多かったと言うことが判明。私が思っているよりも、ずっと生産性の高いツールだったようだ orz
- あまり凄いことをしようとせず、地道にいこうとしている姿勢は良いな。
- GWTをバージョンアップするだけで最適化が進むというのは素晴らしい。こんなにラクで良いのだろうか。
- 今度のGWTではJava5のGenericsに対応するらしい。以前に挫折した原因の一つはGenericsが使えない点だったけど、今後はもっと楽しく開発できるかも。
- Q&AではGoogle App Engine上で使いたいという話があったけど、これは是非とも。
2008/06/14(Sat) [長年日記]
■ 高専カンファレンス2008
高専カンファレンス 2008 に行ってきた。
複数の高専をまたぐようなイベントに参加するのは初めてだったけど、こんなにも楽しいものだとは思わなかった。企画してくれたおびなたさん++。長野にいるのに東京のカンファレンスを主催くださり、本当におつかれさまでした。
開催場所は、前にサタデー・コード・フィーバーでいったことのあるウノウさん。最近はサノウも出来たみたいで、どうも気になる会社だ。会場を提供してくれた高専卒のbtoさん、ありがとうございました。
会場には ITmedia の記者さん(もちろん高専卒)も来ていて、今回の催しは @IT に載るらしい。どんな感じに載るのか、興味津々。
出身高専の分布
出身高専の分布は、九州から北海道までバランス良くばらけていた気がする。その中でも関東の高専の人が多かったけど、これは開催場所が東京である以上必然かも。私と同じ茨城高専の学生さんが 2 人も駆けつけてくれて、なんか嬉しかった(しかも同じ学科)。今度は京都でやるとか、北海道でやるとか、そんな話が出ていたので次回は駆けつける側になりたいものだ。
経営系に興味がある人の多さ
経営であったり人脈形成であったり起業であったり、私が高専生だった頃には全然考えなかった方面を実践している人が何人もいた。すげー楽しそう。正直、同じ高専生とは信じられなかった。
そして人材募集をしている人もちらほら。高専生は引く手あまただ。
喋ってくれた人たち(Wiki よりコピペ、敬称略)
むらやま(鳥羽商船高専):できる新卒ITエンジニアになる10の方法
新卒的な話。同時に、某社内ではどんな人が有り難がれるのかという話でもあると思った。素敵な社風ウラヤマシス。
bto (新居浜高専) : 俺と高専
高専病++。闇風呂の中でのダンスパーティーには混ざりたくないけど、赤外線カメラ経由で見てみたい。
Tnzk(鳥羽商船高専,学生): 中学生のみんなは高専へおいでよ!
フィクションに高専が出てくるのは必要。商船高専は必ず航海するってものでもないらしい。
bxchaki(北九州高専,学生):高専 meets はてな
アルミ板金ではてなサーバをつくる話。そして私と同じ大学で今やっているようで、すげー親近感。
いがいが(群馬高専):高専流英語攻略法(仮)
英語はやっぱり自動化で。
おびなた(長野高専):高専カンファレンス宣言
こういう交流の場って素晴らしい。
sohei(苫小牧高専):高専卒のキャリアを考える
紹介してくれた勉強会は要チェック。今度行ってみよう。ちょうど IT 系だけでは、分野が偏ってるかなと思っていたところだし。
ゆきのぶ(茨城高専):コンピュータを一から作る
自分の発表。これを気に高専の授業を思い出して、今度は電気回路勉強会とかやりませんか?
kawataso(長野高専) :P2Pな何かの開発とか運用とか
机の上が凄いことになっていた。P2P という分野を開発するのは大変なことだ。
喋ることについて
やっぱりこういう場では、喋る方が得だと思うんだ。内容は真面目に考えた訳じゃないけど、ちゃんとした内容にする必要はそもそも無いし、その後の話題のとっかかりになる点がやっぱり大きい。
結局
13:30 に会場に着き、二次会を後にしたのは 23:30 過ぎ。10 時間以上も高専生たちとしゃべり続けてきたことになる。振り返ってみても凄い一日だった。そして名刺は完全に切れてしまった。
それにしても、参加している人ほぼ全員と、一瞬にしてうち解けることが出来てしまったのは、高専カンファレンスならではの事。またやりたい。
次回
東京での次回開催については、自分で軽く手を挙げてしまったので、もしかしたら主催するかも。その際はは、皆さまよろしくお願いします。
2008/06/16(Mon) [長年日記]
■ 若手IT勉強会
若手IT勉強会に行ってきた。
なんとも抽象的な名前なのだけど、リンク先にあるようにサイ本の読書会という位置づけ。参加者全員が分厚い JavaScript の本を抱えて集うという光景は、なかなか迫力のあるものだった。
4873113296
会場は市ヶ谷にある健保会館の会議室。これがまた立派な会議室なのに、一人頭 350 円程度の予算で済んでしまった。こんなに良い場所なのだから混雑しているかと思いきや、空いている会議室も多かった。健保というと、宿はすぐに埋まってしまうイメージがあったので会議室もそうかと思っていたが、違うようだ。実は穴場なのかも知れない。
勉強会の方向性を定めようとする努力も行われる中、とりあえず読書は黙々と進めていき、3 章を半分くらいまで終えることができた。JavaScript は構文的には C/C++ や Java に似ていて、一見すると堅い言語に見えるのだが、実は型がなかったり関数もデータであったりと、スクリプト言語のような柔らかさを持っている変態的な言語だった。他の参加者は、既に他のプログラミング言語に手を出したことがある人ばかりで、言語同士を比較する話に花が咲いた。
2008/06/18(Wed) [長年日記]
■ 高専カンファレンス2008 記事化
おおっ。記事になっている。すげー。そして後ろ姿を撮られているw
取材してくれた千葉さん++
そして第2回の開催について、勢いで立候補してしまったものの、大丈夫かなぁ。
まぁそこは、高専生たちの自主性に期待しよう。うん。
■ [rubykaigi2008] 週末は Ruby 会議 2008
週末は Ruby 会議 2008 に行ってきます。
Ruby は全くの素人なので、楽しめるかどうか不安だけど、何とかなるだろうということで。
● kasei_san [先日は発表お疲れ様でした! 授業中に聞いたなぁ…という用語が色々出てきて、記憶テストをさせられているようで、大変楽し..]
● ゆきのぶ [少しはお楽しみ頂けたようで、何よりです。 東京ではまた開催すると思いますので、その時はまたよろしくお願いします! ..]