2015年5月30日土曜日

Nexus9にAndroid M Previewを焼く

Android MのDeveloper Previewが公開され、システムイメージも公開されました。
焼く手順は Flashing Instructions に書いてありますが、実際やったら躓いたのでメモ。

環境

  • Mac OS X 10.9.5
  • Android SDKなどはセットアップ済み
  • Nexus9はまだOEMロックしたままだった

手順

  1. Nexus9の開発者オプションで「OEMロック解除」の許可にチェックを入れる。
    ※Androidのバージョンによっては表記が違うかも。
  2. 下記URLからNexus9用のシステムイメージ(volantis-MPZ44Q-preview-d15ad483.tgz)をダウンロードし、解凍する。
    http://developer.android.com/preview/download.html#images
  3. Nexus9をUSB接続する(ADB接続できるようにしておく)。
    adb devicesとか叩いてADBが繋がること。
  4. adb reboot bootloaderを実行する。
    Nexus9にHBOOT(Nexus9のブートローダー)の画面が表示される。
  5. fastboot oem unlockを実行する。
  6. Nexus9の画面が切り替わり、OEMアンロックするかどうか確認される。
    Volume UpキーでYesを選択する。
    データがクリアされた後、ブートローダーの画面が表示される。
  7. ダウンロードしたシステムイメージに同梱されてるflash-all.shを実行する。
  8. なんかエラー出た。
    target reported max download size of 518205818 bytes
    archive does not contain 'boot.sig'
    archive does not contain 'recovery.sig'
    fastboot(13207,0xa14a01a8) malloc: *** mach_vm_map(size=2132963328) failed (error code=3)
    *** error: can't allocate region
    *** set a breakpoint in malloc_error_break to debug
    failed to allocate 2130828644 bytes
    error: update package missing system.img
    image-volantis-MPZ44Q.zipの中身の焼きこみに失敗してるらしい。
  9. image-volantis-MPZ44Q.zipを解凍して、中身の各imgファイルを書き込むコマンドを実行する。
    下記をすべて実行する。
    fastboot flash boot boot.img
    fastboot flash recovery recovery.img
    fastboot flash system system.img
    fastboot flash cache cache.img
    fastboot flash vendor vendor.img
  10. 終わったらリブートする(ブートローダー画面でREBOOTを選択)。
    Android M Previewが起動する。
    ※必要ならOEMロックする。ロックするときもデータはクリアされる。

参考

2015年5月29日金曜日

Google I/O 2015 Keynote

Google I/O 2015 Extended Tokyoで観たKeynoteのメモ

  • date : 2015-05-29
  • place : 六本木TOHOシネマズ

Keynote

全周囲スクリーンでピンポンやってた

Android M Developer Preview

  • 品質改善を目指す
  • バグ修正
  • プラットフォームの抜本的な要素の見直し

カスタマイズ重点

  • App Permissions
    • AppOpsがちゃんとリリース
    • 機能の使用時にユーザーが許可/不許可を選べる
      • もちろん、本体設定で後で(または先に)変更できる
    • 8つのパーミッション?
  • Web Experience
    • Chrome Custom Tabs
    • タブをプリフェッチ?
  • App Links
    • Intent起動を賢く出来る?
    • ユーザの選択を奪うだけに見えた
  • Mobile Payment
    • Android Pay
    • 決済サービス
    • 実店舗でもアプリ内でも
  • 指紋認証(Fingerprint Support)
    • Password Credentialとして使える
    • デバイスアンロックとか
    • Play Storeで購入時の認証にも
  • Power & Charging
    • Doze というプロジェクト?
    • Nexus6にM乗せたら、2倍電池が持つようになったよ!
    • USB type-Cで高速な充電
    • Android端末自体をモバイルチャージャーにできたり
  • 細かい所の使い勝手改善
    • コピペのUIとか
    • 音量設定UI
      シークバーの所に着信音・メディア音量・アラームの3つのシークバーが並ぶ。
  • その他いろんなfeatures
    • 「最も洗練されたバージョンです」
      ↑いつも言ってない?

Android Wear

  • 機種が増えてるよ!
  • ウォッチフェイス大事!
  • always on
    常にウォッチフェイスを表示できるようになった
    白黒のLow-powerモード
  • 手首をひねる動作で操作できる
  • 手書きでEmojiを入力できる(手書きしたものを認識して対応する絵文字を探す)

Brillo

  • Internet of Thingsのためのもの
  • Androidからの派生
  • IoT的な機能を最小限のfootprintで実現できるように
  • Weaveというスキーマ?
    JSON
    クラウド,電話,Brilloデバイスを繋ぐAPI

BrilloのDeveloper Previewは第3四半期
Weaveのは第4四半期を予定

検索の改善

  • 画像認識の進化
    ニューラルネットワークによるDeepラーニング
  • コンテキストを含めた検索

Google Now

  • 3つの柱
    • Context
    • Answers
    • Actions

Now on Tap

  • Android Mの新機能
  • より深くコンテキストを理解して検索する
  • しかも音声認識で自然言語検索
  • アプリ側の変更は不要
  • デモ
    • 音楽を再生中に「彼の本名は?」と音声認識で聞くと、そのアーティストの本名が出てくる
    • 「○○という映画を見に行こう」というメールで使えば、映画の情報を出してくれる
    • レストランで読み方がわからないメニューがあった時、画像検索してみる
      適当にそれっぽく読んでも、メニューを見ているというコンテキストを理解して検索してくれる.

Google Photos

  • (アイコンは見覚えあるけど) 新しいサービス
  • 写真・ビデオをうまいこと整理・管理してくれるサービス
  • 人・モノ・場所によって自動で分類
  • 写真の内容を画像解析済みなので「トロントの大雪」で検索すれば、 ちゃんとその時の写真が出てくる。
  • 複数選択の賢いUI
    1つ長押しして選択状態に -> そのままドラッグして範囲選択!
  • 一覧で年月日の細かさをピンチイン/アウトで切り替わり
  • 相手がアカウントを持っているかとかログイン済みかとか気にしないで共有できる
  • 無制限・無償なバックアップストレージ
    どんな高解像度・巨大なファイルサイズでもよい
    今日からすぐ使える!
    (※なにそれこわい)

次の10億人へ向けて

 いろんな取り組みの紹介

  • Google Translatesのビデオ
  • 次の2年で12億のスマートフォンが増える
  • Android oneデバイスが新興国でどんどん増えてる
  • Chromebookも普及してきてる
  • しかしネットワークはまだ遅い。なので最適化をしている。
  • ChromeのOffline Support
  • Google MapのOffline Maps対応を目指している
    オフラインでも周辺の施設を検索したり
    そのまま音声案内ナビゲーションを開始したり

開発者へ

Develop

  • Android Studio 1.3
    • C/C++ サポート
    • Gradle早くなる?
  • Polymer 1.0
    • Polymer Elements
  • Cocoapods
  • Cloud Test Lab
    • apkをアップロードすると、世界のトップ20の機種でのテストをしてくれる!
  • Firebase

Engage

  • App Indexing
    • めっちゃAppLinkがある
    • iOSでも実験中
  • Cloud Messaging
    • iOSサポート
    • Android, iOS, Chrome の3つのプラットフォームで
  • Chrome
    • Push Notification
    • Add to Home screen
  • App Install Ads
    • iOSサポート
  • Google Play
    • デベコンでもっといろんな情報を見れるように
    • Analytics
    • Play Store Listing Experiments
    • Developer Pages
      • 開発者が自分の他のアプリを紹介したり出来るページをPlay上で
  • AdMob
    • Analyticsしてるよ
    • メディエーション増えてる。直近だと中国のTencent

Google Play上でのアプリの検索

  • 10億人ものユーザがいる
  • どうやってアプリにリーチさせるか
  • 検索結果のカテゴライズ
    • 例えば「ショッピング」で検索すると、 検索結果はファッションやクーポンなどといったカテゴリに分かれている
  • Family Star
    • 家族向けコンテンツ

Cardboard

  • Google Play上にいろんなアプリがすでにある
  • CardboardのSDK改善
  • 改善した新しいCardboardを配るよ!
    磁石スイッチとか

Expeditions

  • Cardboard遠足
  • 複数のCardboardに同じコンテンツを表示させる
  • 世界のいろんな場所をCardboardで観られる
    万里の長城でもベルサイユ宮殿でも

Jump

  • Cardboardコンテンツを作るためのもの?
  • 360度撮影とコンテンツ作成までのフレームワーク的な?
  • Camera Geometory, Assembler, Player
  • Camera Geometory: 360度を16台のカメラで撮影
  • Assemblerでそれをゴニョる
    • 撮影した写真から奥行きや、モノの配置などを認識する。
      元はただの写真だが、各カメラの撮影した部分の被った部分で頑張るみたい
  • Player: YouTubeっていうのがあってね

最後

自動運転や、気球による通信基地局提供プロジェクトなど進めてるよ! また来年!

2015年5月27日水曜日

shibuya.apk の雑なメモ

shibya.apk 行ってきました!

※当日の内容は網羅してません。気になったトコだけメモしてたものにちょっと毛を生やした記事です。

日付: 2015-05-22
場所: DeNA

発表1. それwebでよくない?

Webアプリを普通のアプリと同じように動かす仕組みが出来てきている。
なので、Webでよくない?という話。APKじゃねぇ

  • Web App Manifest
    • locationバー非表示にする設定とかできる
    • Chromeで「ホーム画面に追加」したアイコンから起動すると、Overview screen(Recent Apps)でアプリかのように表示される
      ※ Chromeの「タブとアプリの統合」をOFFにしていても、別のアプリのように振る舞う
  • Service Worker
    • WebアプリとNativeアプリとの差を埋めるためのもの
    • オフラインでもキャッシュを返したりとか
    • サービスワーカーでfrontに返すデータをinteruptしたり、キャッシュしたり
  • WebPush
    • Chrome 42からWebでも通知出したりできる
  • Web App Install Banner
    • Web標準仕様ではない
    • Web App Manifestが条件に合致すると、Chromeがホームへの追加をサジェストする

発表2. Meets Jack and Jill

「全部qiitaに書いておいたからメモ取らなくていいよ!」

Android - Meets Jack and Jill - Qiita
http://qiita.com/calciolife/items/faf6affc0f8cf70c4af9

  • 最適化しつつコンパイルするよ!
  • ARTにとって良くなるようにバイトコードを最適化とか

発表3. fabricの話

wasabeefさんに代わり、Flockで来日していた@romainhuetさんが発表することに。

https://get.fabric.io/

  • FlockでiOS向けに話した内容をAndroidに向けに変えて話してくれた
  • fabricは、Twitter社が提供するアプリを作るための色々なサービスを含むブランド?みたいなものらしい
  • ClashlyticsとかMoPubとか
  • Digitsがちょっと気になった
    • SMSによるユーザ認証の仕組みを提供するものっぽい
    • SMSの送信数に制限無く、現状無料で使えるらしい。まじで!?

懇親会

LTしたらTwitterのTシャツ貰えました!(ジャンケン大会で配られたものと同じ)
でも、飯食いそこねました!

アプリの通知をLollipop対応しよう / shibuya.apk 2015-05-22 LT // Speaker Deck
https://speakerdeck.com/mstssk/shibuya-dot-apk-2015-05-22-lt

LTの内容は、C87で甘味アンドロイドパークに書いたのをまとめたもの。
テクブ本のお求めはBOOTHCOMIC ZINで。
関係者を倒してもドロップはしません。

2015年5月11日月曜日

DroidKaigi私書録

去る2015年4月25日、DroidKaigiを開催しました。ご来場頂いた方々ありがとうございました。

私は運営メンバーとして参加し、主にWebサイトの管理・構築をしていました。
勿論、当日はスタッフも!

色々思い出しつつつらつら振り返ってみます。

DroidKaigiのWebサイト

りんご、Webサイトつくってよ ──── mhidaka

そんな感じでカジュアルに誘われ、ほいほい付いて行ったのが第2回のDroidKaigi事前ミーティングでした。
そのMTGが1月27日。
そこから1週間後の2月3日には、CFPのためWebサイト公開までこじつける事になろうとは、思いもよりませんでした*1

WebサイトはGitHub Pagesを使ってます。 独自ドメインの取得も考えましたが、今回は手弁当でやる方針が決まっていた事もあり droidkaigi.github.io で公開しました。

CFP開始予定まで時間がなかったので、最初はBootstrapでえいやと一人で手っ取り早く作成。 公開前にデザイナーさんにアドバイスを頂いて細かい部分を手直ししたりしました。 公開後も、ところどころの修正を他メンバーからガシガシPR貰って直したり。 なかなかGoogleで検索結果上位に来ず、sitemap.xmlを導入しようとしたら、間違ってサイトが30分ほどすっとんでたのはいい思い出です。

CFPは別にGitHubのissue上で揉まれて作成された文面を載せてます。 CFP担当のメンバーもギリギリなスケジュールの中頑張ってました。

採択したセッションの公開のタイミングで、@yulily100さんにデザインして頂き、 Jekyllを弄ったりなどの技術面を私がやる体制に。 ゆりりーさんは「デザイナーがXMLを書くことでできる改善しやすいアプリ開発」というセッションで登壇もされています。

実は、DroidKaigiアプリ のためにセッション情報を取得するAPIなんてのも作っていました。 Jekyllでjsonを書き出してるだけですけどね。アプリ開発のスケジュール都合上使いませんでしたけど。

Webサイトを作った際の知見については、 「DroidKaigiのWebサイトの作り方」 という記事でまとめています。内容被ってますが、こちらもどうぞ。

アイロンプリントしてました

背中からアイロン台がはえるよ ──── mhidaka

DroidKaigi当日、早朝の渋谷マークシティにアイロン台を背負い現れる、我らがDroidKaigi実行委員会代表の言葉です。

ご来場頂いた皆さんは、運営メンバーが公式Tシャツに「圧倒的当事者意識」とか、何やら色々と貼り付けていたのをご存知だと思います。 私はアレを前日に都内某所で印刷してました。
そしてあの当日、サイバーエージェント社セミナールームの衝立に遮られた向こう側、スタッフの控えブースにはアイロン台が鎮座していたのです。

ちなみに、私は自分のアイコンを背中に貼り付けてました。
個人的には「アンドロイドチョットデキル」を貼り忘れたのが心残りです。

圧倒的当事者意識

上でも触れましたが、DroidKaigiの運営メンバーの中で、何故か圧倒的当事者意識という言葉が流行っていました。 コミュニケーションで主に使っていたSlackでは絵文字にする始末*2

Slackの絵文字を追加するのは簡単です。 設定ページにアクセスして、 絵文字名を ati と入力して、 画像を選択し、 「Save New Emoji」をクリックするだけ。

この言葉は某社の標語から来ていますが、DroidKaigi運営内の使い方はどうやら本家とは違ってたらしいです。
本家某社内では「ATIを見せてくれ」って感じで何かをお願いする際に使うのが主だそうですが*3、 DroidKaigiの運営内では「すごいATIだ」という具合にthumb up的に使われる場合のほうが多かったです。

当日

当日の朝、集合時間が迫る渋谷駅を見事に乗り過ごした所から一日がスタートしました。
当日の担当は基本的に受付係。あとは雑用があれば手伝って、という具合でした。

私は基本的に部屋Bの方にいたので、Aのセッションが聞けていません… orz
Twitterのログやらスライドやら見てたら、「デブは電車に乗るな」とか謎ワードが目に飛び込んできましたよ!?

運営に参加して

こういったイベントの運営に関わるのはかなり久々のことでした。 おそらく、大学祭の実行委員やってた以来です。

私が参加してから4月25日当日までの数ヶ月間、大変でしたが苦ではありませんでした。
きっと、あんまり仕事しなかった圧倒的当事者意識を持った優秀なメンバーと一緒に携わることが出来たからです。

DroidKaigiの運営メンバーは、呼びかけで集まった有志のエンジニアです。
所属する会社はバラバラで、ミーティングの際には各社の社内用語が飛び交って、意思疎通に軽く難が出るという一風変わった出来事もありました。
それでも、issue tracker(GitHub)とチャットツール(Slack)があれば上手く行くあたり、流石はエンジニアの集まりという感じでした。

今回の盛況ぶりで、こういったイベントがAndroidのエンジニアに需要があるということが明確になりましたが、問題点も多々ありました。 特に、ご来場いただけなかった方々には申し訳なく思います。 DroidKaigi自体は終わりましたが、まだ反省会やらなんやら内々でやることは残ってます。 羊さんがクロージングトークで何やら話してましたしね。

何はともあれ、登壇して頂いた皆さん、ご来場頂いた皆さん、運営メンバーの皆さん、ありがとうございました。


  1. でも、てくぶのC87特設サイトも1週間くらいで作ってたから、毎度のことかと考えなおしつつある。
  2. なんとかりんごって奴がやった。
  3. 又聞きなので違ってたらすみません。