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. 又聞きなので違ってたらすみません。

2015年4月30日木曜日

DroidKaigiのWebサイトの作り方

DroidKaigiに来ていただいたみなさん。ありがとうございました!

私は運営メンバーに参加して、Webサイトの構築・管理とかしてました。

CFP開始当初は時間がなかったので、私がえいやとBootstrapで作成。
ただし、公開前にデザイナーさんにアドバイスを頂いて細かい部分を手直ししたり、公開後も他のメンバーからガシガシPRを貰って手を入れていきました。
採択セッションの公開時のあたりで、デザインをゆりりーさんにお願いし、私が技術面を担当する体制に。

サイトはGitHub Pagesを使ってます。 今まではペライチのHTML置くくらいにしか使ってませんでしたが、DroidKaigiのサイトではも少しちゃんと機能を使ってます。

本記事ではその辺をまとめてみます。

※ Androidの話は全くしません。

リポジトリ

  • GitHub PagesのOrganization siteとしてリポジトリ作成
  • organizationname.github.ioという名前でリポジトリを作ると、masterブランチの内容が同名のURLで公開されます。
    • Organizationじゃなく、個人ユーザーの場合も同じ。
    • gh-pagesブランチを使うのはProject siteの場合です。
  • リポジトリはPrivateのままでもGitHub Pagesは公開できます。

CMS(Jekyll+Liquid)

  • GitHub PagesではJekyllが使えます。
    • ただし素のJekyllが使えるわけではなく、あくまでGitHub Pagesのgemを使う形になります。
  • 色々制約があるので、Using Jekyll with Pagesを要参照。
    • 例えば、_config.ymlsource:〜設定は無視されるので、常にリポジトリのトップレベルにソースを置く必要があります。
      これに気付かずpushしたら、30分ほどサイトがすっとんだ事がありました。
  • Jekyllのプラグインも決まったものしか使えません。
  • テンプレートエンジンはLiquid
  • アクセス時にページを書き出すのではなく、Jekyllの起動時(GitHub Pagesではpush時)に書き出しキャッシュするだけ。
    • なので、インタラクティブなWeb APIっぽいものを作る事は出来ません。
    • 実はセッションリストをjsonで取得できるようにしてあるんですが、それもLiquidで書き出してるだけです。
  • _data/の下にYAMLで任意のデータを置くとテンプレートから参照できます。
    • それでセッションリストのデータを持っています。
    • YAML書き換えるとページとjsonも勝手に書き換わります。
    • Jekyllでは普通_posts/2015-04-24-DroidKaigi.mdって感じのパスで記事を書いて行くようなんですが、 DroidKaigiのサイトではそれは使っていません。
  • Jeykyllで処理するファイルの先頭にはFront Matterを書きます。

テスト

  • YAML使ったり、json書き出したりとかしだしたので、CIでテストもするようにしました。
  • Travis CIで回してます。
  • テスト内容
    • ビルド
    • HTMLの構文チェック HTML::Proofer
    • favicon
    • リンク切れ
    • imgのalt属性のチェックはわざと無視。代替文字が必要なデザインじゃないので。
    • YAML,jsonの構文チェック(パースしてみてるだけ)

テストはとりあえずでいいやとインラインで書いちゃってるけど、どういう書き方がベターなんだろ。

Webフォント

英字はRoboto。日本語はNoto Sans。

その他

ちゃんとSEOとか知ってる人には常識だろうけど

  • 一度設定したOpenGraph用の画像を消す時は注意
    • サイトのmetaタグの画像パスなどを書き換えても、すぐにはFbは反映してくれない様です。
    • デザイン刷新時に古い画像を消したら、一時的にFbのシェア時に画像が出なくなってしまいました。
  • はてブとかツイートボタンとか、ソーシャルボタンはURLが明示的に指定できるならした方がいい
    • 指定がなければ勝手に現在のURLになる
    • http/httpsの違いや、ハッシュの有無で別のページとして扱われちゃう
    • canonical URLも書くべき <link rel="canonical" href="http://droidkaigi.github.io/"/>
  • ページランク
    • サイト公開直後はDroidKaigiで検索しても全然検索結果の上位に来なかった。5ページ目以降とか。
    • てくぶのコミケ用ページをGitHub Pagesで作った時もそうだったんですが、一月くらいは上がらない感じ。
    • 後からsitemap.xmlを用意したりとかしたけど、結局Googleがいつクロールしてくれるかはわからないので…

一緒に書いたけど、ソーシャルリンクについてはどちらかと言うとテクブのサイト作ってた時の知見。
あと、PRのブランチへにpushしたら、どっかにデプロイしてすぐ他の人がプレビュー出来るようにすればよかったなー、と気付いた。 レビューが捗る。

感想記事的なものは別に書きます。

2015年4月8日水曜日

GitHubのContributionsをIngressのResistance色にするUser Styleを書いた(二番煎じ)

こんにちは。アイコンは緑だけどResistanceの青りんごです。

下記の記事を見て「cssでも出来んじゃね?」って思って書いてみました。

GitHub の Contributions を Ingress の Resistance 色にする Chrome 拡張を作った - I'm kubosho_ http://blog.kubosho.com/entry/change-ingress-registance-color-of-github-contributions

resistance-contributions.css

cssの中身。legendの元の色指定がインラインスタイルだったので、上書きするには!important書かざるを得ないのが悔しい。

StylishといったUser Styleを設定できる拡張機能を利用したりして使う。


before:

after:

あんまりGitHub使えてないなぁ…