DevFest Tokyo 2016参加メモ


DevFest Tokyo 2016に参加したのでメモを残しておきます。リアルタイムで書いたので、ちょいちょい間違っているかもしれません

自分が参加したトラックは以下

  • あいさつ、コミュニティ紹介
  • Nested Scrolling: living life on the edge
  • Spotlight on Android Studio 2.2
  • Android Architecture Blueprints
  • エンジニアとして知っておくと幸せになれる(かも知れない)機械学習とTensorFlowのこと
  • Android 開発のライブラリについて
  • ライトニングトーク大会

DevFest Tokyo 2016とは?

DevFest Tokyo 2016 開催!

DevFest は、Google Developer Group (GDG) コミュニティによって世界各地で開かれるデベロッパー向けイベントです。DevFest Tokyo 2016 は、普段は別々に活動している複数のコミュニティが集まり、新しいノウハウや最新情報を共有するだけではなくコミュニティやプロダクトを超えた交流の場となる「技術者の祭典」となることを⽬指して開催されます。どうぞみなさんも一緒に盛り上がりましょう!

概要

  • 日 時:2016年10月9日 13:00〜18:00 (12:30開場)
  • 募集人数:1,400人予定
  • 対 象 者:Android, Web, GCP (ML), Firebase 技術者および学生
  • 会 場:東京電機大学 千住キャンパス 1号館(東京都足立区千住旭町5番)
  • 主 催:GDG Tokyo, Shibuya.apk, DroidKaigi, 日本Androidの会, html5j, GTUG Girls, GCPUG, TensorFlow コミュニティ
  • 協 力:Abema TV, Google
  • 参 加 費:無料

スケジュール、プログラム詳細

スケジュールはこちらからご覧ください。

各セッションの詳細はこちらからご覧ください。

登壇者についてはこちらからご覧ください。

あいさつ、コミュニティ紹介

DevFest 2016

Google Developer Groupによって世界各地で開催

日本Androidの会

2008/9/12から

Android Bazaar and Conference 2016 Autumn

2016/11/19 10:00 - 17:00

Shibuya.apk

2ヶ月に1度の頻度で勉強会

15分のLTと5分のLT

2016/11/22 19:50 -

DroidKaigi

DroidKaigi 2017

March 9-10, 2017

Google Cloud Platform コミュニティ

GCPUG: Google Cloud Platform User Group

TensorFlow User Group

2016/10/08に発足!

10/12 19:50 -

Webコミュニティ

html5j

HTML5の勉強会を開催

GTUG Girls

ハンズオンを開催している

アンカンファレンスについて

みんなで作るカンファレンス

  1. ルームDに集合
  2. テーマをみんなで決める
  3. 話す

Firebaseコミュニティ

まだない!

Nested Scrolling: living life on the edge

problem

Flinging does not transfer left over velocity

一番上までスクロールした時に速度を伝えたい

  • NestedPreScroll
  • NestedScroll
  • NestedPreFling
  • NestedFling

Pre vs Non-pre

Pre eventは消費するかどうかを決めることができる

problem

Nested Flinging does not allow interception like the scrolling

indirect nested scrolling は work in progress

scroll event

fling、program, key event and so on...

API

Indirectがつく

FlingではなくNested Scrolling

ACTION_UPでstopNestedScroll()fling()するが、ここでNestedIndirectPreFlingをdispatchする。

Spotlight on Android Studio 2.2

Android Studio 2.0+

Instant Run

Brand new Android Emulator with faster ADB transfers, new UI and SMP support

Android Studio 2.2をリリースし、EclipseをDeprecatedにした

Android Studio 2.2

Layout Editor with ConstraintLayout

右クリックしてConstraintLayoutに変換できる

Layout Inspector

Android MonitorのメニューからLayout Inspectorを押すと、(エミュレータなら)現在の画面のヒエラルキーが見られる

Vector Asset Studio support for PSD

New > Vector AssetでPSDがつかできる

Firebase Assistant

AssistantというタブからFirebaseサポートが利用できる

Sample code browser

関数名を右クリックしてFind Sample Codeを押すと、サンプルコードを探して表示してくれる

ndk-build/CMake

使えるようになった

Jack improvements

java8の機能を使いたければ

Signing v2

テストする時に

Build cache (exp.)

複数のプロジェクトが同じところを参照している時に、キャッシュを使うので早くなる

Merged Manifest viewer

下のタブで切り替えると、いろいろなライブラリのManifestを一つのファイルにまとめて、色分けして表示してくれる

APK Analyzer

Build > Analyze APK

サイズの内訳を表示。生のサイズとダウンロードサイズ(圧縮されたサイズ)が見られる。

dexファイルの中も見られるので、必要なファイルがパックされているか確認出来る。

resourceのxmlも人間が読める形に。AndroidManifest.xmlも同様に。

Virtual sensors in Emulator

EmulatorにVirtual sensorsという項目が追加され、端末を回転したり、その他のセンサを操作できる

Test Recorder (beta)

Record Espresso Testを使うと、エミュレータを操作して、Assertionを設定すると、勝手にテストコードを生成してくれる。

GPU debugger (beta)

Android MonitorにGPUが追加された。

Android Architecture Blueprints

Googleの人、そうじゃない人、たくさんの人がサンプルを作っている

Blueprints is a testing project

  • UI Testing As A Spec
    • Fast, reliable and hermetic
  • Honest, decent unit test converage
    • Mockito, MockableAndroidJar, no Robolectric, no powermock.
  • Use Non-UI Android tests
    • Test against real implementations, compatibility testing

Stable

  • todo-mvp/
  • todo-mvp-loaders/
  • todo-databinding/
  • todo-mvp-clean/
  • todo-mvp-dagger/
  • todo-mvp-contentproviders/
  • todo-mvp-rxjava/

In development

  • dev-todo-mvp-tablet/

External

  • todo-mvp-fragmentless/
  • todo-mvp-conductor/

UI Testing as a contract

espresso

MVP

Design decisions

Flavors

mockとprod

Fragments

タブレット対応する時とかに

Simulated network calls

ディレイを入れて返すなど

2 screens / 4 features

Minifier / shrinker

Blueprints is a platform for Android Devs.

  • Learning
  • Outreach/discuss
  • Base for sample or template for app
  • GitHub cred

How to use Blueprints

Browse on GitHub

Compare locally

git checkout todo-mvp
git difftool -d todo-mvp-clean

MVP-CLEAN


クラスは多いがテストしやすいので、大きいチームには向いている。

MVP-CONTENTPROVIDERS

DATABINDING

Findings

  • Dex method count
  • APK size

Irrelevant if you shrink

複雑さ、学習コスト、テストしやすさが違うので、チームやプロダクトの規模で選ぶ

HELP!

  • Answer questions and reply to issues
  • Wiki and articles
  • Create samples (read guidelines!)
  • Become core maintainer (merge-master)

V2: What is coming

  • Focusing on underlying patterns
    • MVVM, MVC, Redux, Flux...
  • Other apps, different spec
  • Improve platform for discussion
  • Run UI tests with Continuous Integration

Q&A

Q. サンプルは誰がメンテするの?
A. Googleの人がメンテするか削除する

Q. Spockのような他のテストフレームワークは?
A. espresso、JUnit。いろいろなテストフレームワークでテストを書くと比較できて良いので素晴らしい貢献だが、そうしていく予定はそこまでない。

Q. CIとは具体的に?
A. Firebase Test Labなどに配布するまでのコードを用意したい。

エンジニアとして知っておくと幸せになれる(かも知れない)機械学習とTensorFlowのこと

TensorFlowで遊ぶ

Inception-V3

Googleが発案したモデル

TensorFlow

Google内部での使用実績

  • 音声認識
  • スパムフィルタ
  • 画像分類
  • 翻訳

TensorFlowは分散処理の理論に似ているので、論文を読んでみてください。

Tensorflow: Large-scale machine learning on heterogeneous distributed systems

管理者権限で

curl -kL https://bootstrap.pypa.io/get-pip.py | python

sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.11.0rc0-py2-none-any.whl

データセット:https://en.wikipedia.org/wiki/Iris_flower_data_set

Android 開発のライブラリについて

20アプリを調査、216種類

カテゴリ別にランク3まで

言語系

  1. Retrolambda
  2. ThreeTenABP
  3. AndroidAnnotations

Support Lib

  1. support-v4
  2. appcompat-v7
  3. recyclerview-v7

バージョンが古いのがちらほら
不具合が報告されてない限りは24時間以内にアップデートする

PlayServices

  1. play-services-gcm
  2. play-services-ads
  3. play-services-analytics

adsはadmobというよりもadvertiseIDを使いたいから

Firebase

  1. firebase-messaging
  2. firebase-invites
  3. firebase-analytics
  4. firebase-config

View injection

  1. butterknife
  2. dataBinding
  3. kotterknife

Parser / Protocol Buffer

  1. gson
  2. jackson-core
  3. wire-runtime

gRPC使いたい。wire-runtimeでProtocol Buffer

通信

  1. okhttp3
  2. retrofit2
  3. okhttp
  4. volley

画像

  1. Glide
  2. picasso
  3. glide-transformations

Frescoを使うのがいいかも

動画・音楽

  1. exoplayer
  2. exoplayer-textureview
  3. isoparser

exoplayer2で良くなったのでexoplayer-textureviewは使わなくてもいいかも

DB / ORM

  1. activeandroid
  2. ormlite-android
  3. sqlbrite
  4. orma
  5. realm
  6. greendao
  7. DBFlow

Reactive

  1. rxjava
  2. rxandroid
  3. rxlifecycle

RxBindingとかを使いこなしたい

View / UI

  1. android-observable-scrollview
  2. recyclerview-animators
  3. recyclerview-multiple-viewtypes-adapter

マテリアルデザイン系のライブラリなど
種類がすごい多い

クラッシュロギング

  1. crashlytics
  2. crittercism-android-ndk-agent

デバッグ

  1. leakcanaly-android
  2. timber
  3. stetho

SNS

  1. facebook
  2. twitter

テスト

  1. robolectric
  2. junit
  3. mockito

広告

  1. fox / AppAdForce
  2. adjust-android
  3. flurry-android:analytics

その他

  1. conceal
  2. parceler-api
  3. bolts-android
  4. commons-lang3
  5. commons-io

onActivityResultっていうライブラリが便利
Permission dispatcherが便利

まとめ

TLS 1.2にどうやって対応しているんだろう

来年春になったらDataBindingが1位になるのかなーとか

会社別、1アプリあたりのOSS利用個数

  1. CyberAgent 52.9
  2. ソウゾウ 39.0
  3. DeNA 35.2
  4. ヤフー 21.8

CyberAgentは他のメンバーが作ったものを使ってたりする文化がある。
OSSを自己責任でやっていく文化がある。

ヤフーはライセンスにまじめに取り組みすぎちゃってるのかも。

OSS使ってるのにライセンス表記がないアプリがちらほらあったので注意しましょう。

リンク集

ライトニングトーク大会

あなたがLTすべき100の理由

HTML5 ConferenceのLT応募数が減少

  • 喋っている人が主役
  • 失敗しても大して覚えていない
  • たった5分しゃべるだけで抽選とかお金とかを突破できる
  • 調べてまとめるので勉強になる
  • 結論なくても大丈夫
  • 参加することに意味がある

Firebase Custom AuthとGAE/GoでSlack認証してみた

認証はセキュリティ的に大変

Google App Engine

豊富な無料枠

Firebase Authentication

いろいろな認証ができる

Firebase Custom Authentication

SDKはNode.jsとJavaがある

jwt-goでCustom Tokenを作成する

日本Androidの会学生部活動報告

高校生から大学院生まで33名

Chrome DevTools: TimelineのNetworkビュー

ネットワークの状態を見たい!

Networkパネル

jsとの関係が分からない

TimelineパネルのNetwork

いろいろ見られる

OkHttpの通信をUIテストしたい

通信のテスト

正しいURLに大してリクエスト・レスポンスが発生したことをテストする

通信ログに対してassertしたい

OkHttpLoggingInterceptorのテストが参考になる

なぜUIテスト

ボタンを押して、通信するが、UIが変化しない場合はテストが難しい。

ログを取ってassertする。

みんなの知らないChromeアプリの世界

HTML/js/CSSで書ける

sockets.tcpがあれば何でもできる

MySQL JavaScript Driverを作った

ネイティブのコードも動く

1度書けば、Chromeさえあればどこでも動く!(今までは)

ChromeアプリからWebへ

BigQueryとGAPを2年使ってみた感想

GAPとはGoogleAnalyticsPremiumのこと。BigQueryをエクスポートしてくれる。

130万円かかる。

アクセスログをユーザーごどの行動でまとめて出してくれる。

JSONがくせもの。ネストされているとうまくいかない。

Viewを使うとできる。

DroidKaigi 2017のご案内

懇親会でおいしいものが食べられる

2017/3/9,10に開催。2016/11/1 23:59 JSTが〆切

さいごに

間違っているところがあったら指摘していただけると嬉しいです!