2014年6月29日日曜日

[Google I/O 2014] I/O 2014 2日目レポート

Google I/O、今年の開催は2日間のみ。すぐに最終日になってしまいました。

並びに並ぶ

今日も朝一番。午前7時の開場に向けて、おみやげをゲットしに会場に向かいます。
LGかSamsungかを選べたので、自分の欲しいほうが品切れにならないようにみんな急ぐかなーと思って早めに行ってみました。

行ってみるとちょっとは並んでいたんですが、
おみやげの配布はRegistrationの時に使った1階のカウンターで行っていて、一度に10人ぐらい処理できる状態だったので回転が早くて、すぐに希望のものをゲットできました。

私が選んだのはSamsungです。理由は、LGにはない心拍計があるから。まー別に使うわけじゃないですが、研究の幅が広がるかなと思いまして。
Samsungは高解像度+心拍計、LGはスリムな本体+バッテリーが36時間持つ、という感じでいい感じに特徴が分かれていて、周りを見ると人気はどっちも同じようにばらけている感じ。
Samsung Gear Live
 Gear Liveの実物を手にしてみると、スマートウォッチにしては垢抜けた印象でこれならまぁつけたってもええかなという感じでした。でも四角くてデカイのでガジェット感はありmoto360欲しいな〜と思いました。

朝ごはん会場でドーナツを食べたりGear Liveを開封の儀してみたりしていたんですが、間が持たなくなってきたのでセッション会場に向かおうとしました。
ところが2階以上に上がるエスカレータが封鎖されていて「9時にOpenするから並んで」と。
もしかしてまた行列ですかァ〜〜ッ!? YES!YES!YES!
2階へのエスカレータ待ちの行列
並べというなら仕方ありません。洲崎西を聞きながら並びます。
「この列はおみやげの列?」「違うよ。おみやげは中ですぐゲットできるよ。」という会話を何度も聞きました。

Session: A 3D tablet, an OSCAR, and a little cash. Tango, Spotlight, Ara. ATAP.

ATAPというのは旧Motororaの技術開発部門で、Googleによる買収と売却の後にGoogleに残った組織です。
そこがいろんなProjectをやってるんですが最近特にアツいプロジェクトの紹介です。

Project Tango

Project Tangoは、ロボティクス分野の技術を現在のスマート端末のハードウェアに統合するというテーマのもと、深度カメラなどのハードウェアを組み込んだスマート端末で空間の状況を正確かつリアルタイムに把握するというもの。
深度カメラを含む3つのカメラを使って演算は本体の中だけで完結し、わざとゆっくりスキャンする必要もなく周囲の空間の状況を把握できるというもの。
下の動画は会場で実施されたデモの様子。演壇の周りをTangoタブレットを使って読み込んでいく。

Project Ara

Project Araはスマートフォンのいろんなハードウェアをモジュール化して交換できるようにするというもの。
実現の暁には、スマートフォンにいっぱいスロットがついていて、全部電池にして究極の長寿命端末にしたり、カメラ・加速度センサー・気圧計などのいろんなセンサーを思うがままにつけて行ったり、ハードウェアの技術はどんどん進化するので新世代のカメラが出たらモジュールだけ取り替えるたり、というふうに柔軟に使っていくことができます。

モジュールの仕様はオープンにしていろんなメーカーが参入できるようにする、とか、すべてのスロットが電気の供給も消費もできる、とか、いろいろと夢のある話です。
ただしモジュール化によるオーバヘッドはかなり大きく、FPGAによる試作品の段階では性能の65%ほどがオーバヘッドであると言っていました。
また、実際にAraのテスト機を起動してみるというデモが実施されたのですが、うまく起動しませんでした。Araが市場に出てくるまではもう少しかかりそうです。

Spotlight Stories

また、最近はリアルタイムレンダリングアニメーションにも取り組んでいるとのこと。
スマートフォンから覗くようにして見れるアニメーションを作ってるらしいです。
このへんは言葉じゃなかなか説明できないのでプロモーション動画をどうぞ。

Session: Material science: Developing Android applications with material design

Android Lで導入されるMaterialデザインをどう実装するかという話。
これを使うにはこのクラスを継承して、ということの紹介でした。このへんの情報は、ドキュメントをご参照ください。
Materialデザインは全体的に「動き」がUI部品に加わったんですが、意図としては動きによって意図をつたえるということのようです。

Session: The Dawn of Fast Data

Googleの社内では、すでにMapReduceを駆逐しているというCloud DataFlowの詳細についての説明でした。
いまデータ処理を行おうとすると、分散はどういうふうにさせるのか、サーバのプロビジョニングはどうするのか、処理の順番はどうするのか、などなど、処理の本質とは違うところも考えないといけない。Cloud DataFlowはそのへんをぜんぶお守りしてくれますよということでした。

セッションでは、ツイートを分析してハッシュタグ情報をあつめておきハッシュタグの自動補完を行うという処理を題材に説明を行っていました。
Google Cloud DataFlowへのジョブの送信は、たとえば以下の様なコードを実行すればよい。
Pipeline p = Pipeline.create();
p.begin()
.apply(PubSubIO.Read.from("input_topic"))
.apply(Bucket.by(SlidingWindows.of(60, MINUTES)))
.apply(ParDo.of(new ExtractTags()))
.apply(Count.create())
.apply(ParDo.of(new ExpandPrefixes()))
.apply(Top.largestParKey(3)))
.apply(PubSubIO.Write.to("output_topic"));
p.run();
このコードは、これまた新しくリリース予定のサービスであるCloud Pub/Subを入出力にして、60分のタイムウインドウを設定して、ハッシュタグを抽出してリストを作り、再頻出の3候補を取り出すというものです。

ワークフローを投入した後はWeb GUIから現在の状況を確認可能とのこと。

これはかなりヤバいサービスだと思います。

Session: Nest for Developers

Nestはスマートサーモスタットなどを開発する企業。現在のところ、製品はスマートサーモスタットとスマート煙探知機があるんですが、そいつらをREST APIで統合的に扱えるよ、という話。
また、Nest製品だけでなく他者のスマート電球や車、スマート洗濯機などもNestのAPIに参加できるとのこと。
これを使えば、煙を探知したら電球を赤く点滅させる、車が家に向かっているとき、到着時間から推定して家の空調を入れてくれる、などとどんどん家電がつながっていくということです。

Innovate with the Glass Platform

Glassをroot化して(当然保証はなくなる)Glassを限界までハックしようというセッション。
去年に続きGlass Development Kitの開発者であるHYとPY(※どちらも人名)のコンビがお送りします。
今回紹介されていたのは、
Glassのタッチパッドからイベントを直接とれる、しかもマルチタッチもOK
スマートサッカーボールの状況をGlassから見る
GlassのUSBポートにWebcamを接続して、バックミラー代わりにする
というものでした。

Glassとはいえroot化して一皮むけばAndroidデバイスなので、けっこう好き放題なことができてしまうんですね。

Session: Robotics in a new world - Presented by Women Techmakers

最後のセッション。これを見てる途中に気づいたんですが、最後のコマはどこも技術的な内容というよりはお楽しみ枠という感じで、肩の力を抜いて楽しめるものになっていたようです。
というわけで、Googleのロボティクスに関して話が聞けると思って来てしまった身としてはけっこう物足りない感じ。
パントマイム的なことをやっていたセッションや時間で自動送りになるスライドを使ってLTするIgniteのセッションを見に行けばよかったかな。。。

---終了---

ということで、今年のGoogle I/Oは閉幕です。
おもにインテルのタブレットを逃したことなど思い残したこともありつつ、いろんな情報が流れこんできた目の回るような時間でした。
あとは日本人参加者の方ともすこし交流ができました。お世話になったみなさん、ありがとうございました。

最後の朝は、自分へのごほうびってわけじゃないですが、ジモティーに人気らしいLa Boulangeでフレンチトーストとオープンサンドイッチを買って食べました。
どちらも絶品でとくにフレンチトーストはプリンみたいに濃厚。

サンフランシスコもGoogle I/Oも、また、来たいなあ。

[Goolge I/O 2014] I/O 2014 1日目レポート

朝6時に起きて水圧のクッソ弱いシャワーを浴び、Moscone Westに向かいます。
朝食会場が7時からということなので、まああさめしでも食ってからKeynoteの列に並べばいいや、と。
ところが現地に着くとすでに長蛇の列。7時ですよ。えー。。。

しょうがないから何も食べずに並びます。
天候はくもり、高緯度地域の冷たい風が吹き抜けます。しかも並んだ位置が、運悪くビルとビルの谷間でビル風がすごい。
飢えと寒さで死にそうになりながら、洲崎西を聞きながら、ひたすら待ちます。
唯一の救いは、おねーさんがワゴンで引いてくるドーナツの配給。もちもちのシナモンシュガーミニドーナツがおいしかったですね。
そうしているうち、いま並んでいる列の隣に列ができてきました。何ぞ?と思っていると、どうやら列が長すぎて周回遅れになっているらしいということでした。恐るべしですね。
左側に列の2周目が伸びて来ている!

Keynote

死にそうな思いをして会場に入ると、機械式のカウントダウンタイマーみたいなものが端っこに表示されていて、ときどき車のクラクションのような音がしてました。
これ、CarPlayのAndroid版くるんじゃね・・・と思いながら待ち。

話された内容としては、

Android One

インドなどスマホの普及が進んでいない地域で、Google監修のOEMスマートフォンを安価で提供

Android L: Androidの次期バージョンについて

Material Design
通知とロック画面の改善
マルチタスキングの改善、AppIndexingの一般開放
1台のAndroidでプライベート用、仕事用の独立したコンテキストを切り替えながら使える

Google Play Services

Android Wear

LGのデバイスは即日Playストアから購入可能(会場:オオー!)
Samsungも参入、こちらも即日Playストアから購入可能!(会場:ウオオオオオオーーー!!!!)
moto 360は・・・この夏リリース!(会場:Oh....(落胆))
という三段落ち。

Android Autoの発表

Android版CarPlay, パートナーもたくさん!三菱、ホンダ、スズキ、スバルなどの日本企業も名を連ねる。

Android TVの発表

SONYの4Kテレビとして発売

Google AppsでOfficeファイルを直接編集可能

Google Cloud Platform

Google Cloud DataFlowを追加。「MapReduce?Googleはもうそんなの使ってないよ(笑)」という感じらしい。
GCP上にデプロイしたアプリを、クラウドで動かしたままブレークポイントを打ち込んだり、オンラインでコードを直したりできる


・・・といった感じ。

Session: What's New in Android

やっぱ新しい機能はチェックしないとね♪と思ってこのセッションに来たんですが、失敗でした。山ほどの機能を書いた山ほどのスライドをもりもりめくっていくスタイル。Android 4.4に精通してる人なら「ほーここが変わったのね」というのをひと通り確認できて便利だったのかもしれません。
が、そうではないので早々に離脱。。。ブースをまわることにしました。

Sandboxes

厳密にはSandboxと呼ぶブースとそうでないブースがあるのかもしれませんが、とにかくブース展示です。いろんな企業のブースもあれば、Googleがやってる「Go」「YouTube」みたいなブースもありました。
ノベルティを配ってるとこもあり、缶バッヂとかTシャツが定番ななか、ドロイド君人形をくれるというブースがあったので、対価としてGooglePlay For Educationのニュースを受け取るフォームに登録してゲットしてきました。
企業ブースはNest以外あまり興味なくて、Googleのブースでいくつか質問したりしました。

Session: Polymer & Web Components

PolymerのWebComponents関連機能について解説した入門者向けのセッションでした。
Polymerについてはけっこう予習をしていったので「あー知ってる知ってる」という感じ。1コマ前の「Polymer and the Web Components revolution」のほうがアツい話を聞けたかもしれないっすね。

Session: Wearable Computing with Google

GlassやAndroid Wear端末を対象にアプリやサービスを実装するとしたら・・・という話。
Android WearアプリがGlassでも動くことがこのセッションで発表され(2014/7/19追記:聞き直してみたら、Glassで動くのはAndroid Wearの通知だけでした。Glassのアプリは現状のままGDKで作る必要があります)、以降GlassとAndroid Wearをほぼ同じものとして扱っていました。
実装上の大原則としては、さまざまなデバイス間で、統一感のあるUXを提供すること。
統一感のあるUXとは言ったけど、同じUIってだけじゃダメよ?
で、従来のソフトウェアに必要な作業は設計、実装、デバグ、って感じだったのが、ウェアラブル用に開発する場合は、実機でUXを確認して改善するというフェーズも必要になるという。
左が理想、右が現実(デバグが多い)、真ん中がウェアラブル

Session: Designing for Wearable

こちらもウェアラブル系のセッション。
「The world is experience」という標語が出てきて、ウェアラブルの登場によってみんながヴァーチャルの世界に行ってしまうんじゃないかという人がいるんだけど、ウェアラブルは現実の体験をさらにすばらしいものにするべきなんだろ、というふうに言ってました。

あとは、ウェアラブルのポイントは「コンテキストの把握」と「インタラクションの簡単さ」だと言っていて、コンテキストの把握は各種センサーなどからの情報を通じて、インタラクションの簡単さは音声入力によって担保するというのがGoogleのやりかただと。
なので、ウェアラブル用に開発する場合は「ユーザがどんなコンテキストにいるのか」「ゆーざになにをしゃべってもらうと、どう反応するのか」ということからいろいろと考えてみるのだ、と言っていました。


・・・セッションはそんな感じ。


After Hours

1日が終わったあとのおたのしみ。
会場の近くの野外パーティー会場みたいなとこで野外パーティーがありました。
飲んで、食って、踊って、帰ってきました。
無線ヘッドフォンで流れるDJプレイに合わせて踊る人々


だいぶ掲載がおくれましたが、1日目はこんな感じ。。。


2014年6月25日水曜日

[Google I/O 2014] I/O 2014 0日目レポート

こんにちは。

いよいよやってきましたGoogle I/O 2014。
本番は明日からなので、今日はその0日目です。

成田空港ではしれっと出発ゲートが変わっていたりしながらも大して遅れることなく無事離陸。
この飛行機に乗ってる若い男子って全員Google I/Oに行くんじゃないの?とか思ってたら、隣の席になった日本人男性に話しかけられて、「Google I/Oですか?」「そうです」「わたしもです」みたいな会話をして確信を深めました。
お話を聞くと現地でアメリカ支社からの参加者さんと合流されるそうで、やっぱ一人じゃ限界があるよなあ・・・としみじみ思いました。

そしてサンフランシスコ国際空港に到着。
ホントはBARTに乗ってみようかと思ったんですが、ものすごく疲れていたので大人しくタクシーに乗ります。
ホテルには公称のチェックイン時刻よりだいぶ早く着いたのですが、ダメ元でフロントに話してみるとあっさりOK。これで身軽な状態でRegistrationに向かえます。

ただ今回は、ひょっとしたらRegistrationより重要かもしれないことがあります。現在のところUS在住者のみ注文することができるGoogle Glass Exproler Editionですが、会場で、US在住でなくても、手渡しで購入することができるんです。
会場のスタッフさんに買えるのか聞いてみると、「買えるけど、だれが担当かわからない。。。詳しい人に聞いてみるね。」といってつかまえた詳しいとされる人が、「購入手続きやってる人知らない?知らない?」とまわりのスタッフに聞いてくれ、やっと購入を司るスタッフの方とお話しすることができました。


購入が済んだら、暴漢に襲われないようにしっかり抱えてホテルまで戻り、開封の儀を執行(サンフランシスコは近年シリコンバレーのIT企業のベッドタウンと化したことにより家賃が高騰。そういう企業は昔からの住民に良く思われていない)。
ただ、気付かなかったわけじゃないんですか、普通のメガネをかけてるとGlassを使うのはかなり無理矢理感がありますね。

それから、ケーブルカーに乗ってフィッシャーマンズワーフまで行き、クラムチャウダーを食べ、水族館を見、ケーブルカーで帰ってき、ホテルで一休みしていました。


この時点で、実は今回の旅が今後順調に推移すれば最悪となるであろう失敗を犯してしまっていたのです。。。

その後、Twitterで知り合った日本人参加者の方と酒でも飲もうという話に。
イベントについていろいろ語っていたところ、IntelがDJパーティーを開いていて、そこでハイスペックタブレットを配布していたということが判明。
わたしはタブレットが配られていたことを知らず、会った方は誰でも入れたことを知らないというまさかのすれちがい。
これは痛いなー。。。


という苦い思いを抱えて、明日からの本番にのぞみます!
余裕があれば、このブログとツイッターアカウント@neko_machiでどんどん状況をお伝えしたいと思います!

2014年6月8日日曜日

[jQuery] 車輪の再発明(GETパラメータをJavaScriptで取得)

ふとGETパラメータをJavaScriptで取得したくなって、
jQueryを使ってるので$.getParameters()とかやれば一瞬でしょ!とか思ったら
あの偉大なるjQueryさんにもそんな機能はないんだとか。

ぐぐってみると出るわ出るわ、世界各地、各時代において腕利きのジャバスクリプターがぼくのかんがえたさいきょうのgetParameters()を披露しまくってました。
StackOverflowではトップの回答に対して「こんな回答に+1すなボケが!スクロールして下まで読むこともできんのか!」みたいなコメントがあったりしてすげーことになってます。
jQueryが公式で実装してくれりゃ苦労はないのに。

でもまー他人の書いたコードなんて信用できないぜってことで自分で車輪の再発明をしてみたので自分用にメモしておきます。
jQuery必須です。MITライセンスとしますので使いたいという奇特な方は自由に使ってください。
function getUrlParamters() {
 var parameters = window.location.search.substring(1).split('&');
 var result = {};
 $.each(parameters, function(i, parameter) {
  var keyValue = parameter.split('=');
  var key = keyValue[0];
  var value = keyValue[1] || "";
  if (!key) {
   return true;
  }
  if (result[key]) {
   result[key].push(value)
  } else {
   result[key] = [value]
  }
 });
 return result;
}
GETパラメータをオブジェクトに格納して返します。
同じキーに複数の値があることを想定して、値は配列で入れてあります。のでそう思って取り出してください。
キーだけのパラメータ(?a&b&cみたいな)の場合、値として空文字列が入ります。

以上!