Android 開発, 運用時に使いたいライブラリやサービスの紹介

50
Android 開開 , 開開開開開開開開開開開開 開開開開開開開開開 2016/07/02 開開開開開開開開 2016@ 開開 #osk2016 2016/07/02 開開開開開開開 e- 開開開 開開開 5F BB 開開開開 Tokushima.app Sansan 開開開開 開開開

Transcript of Android 開発, 運用時に使いたいライブラリやサービスの紹介

Page 1: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Android 開発 , 運用時に使いたいライブラリやサービスの紹介

2016/07/02

オープンセミナー 2016@ 香川 #osk20162016/07/02@情報通信交流館 e- とぴあ かがわ 5F BB スクエア

Tokushima.app & Sansan 株式会社 辰濱健一

Page 2: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

> Agenda

2

• 自己紹介

• ○○ 時に使いたい、ライブラリやサービスの紹介

• 開発

• テスト

• 運用

※ あくまでも、ざっくりとした紹介のみです。 試用・導入にあたっては、本家のドキュメントを参照下さい。

Page 3: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

自己紹介

3

Page 4: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>自己紹介

4

• 辰濱健一

• 徳島生まれ、奈良育ち

• 2 回転職するも、いずれも徳島県内勤務

• Tokushima.app 主催(徳島でのスマホアプリの勉強会)

• Sansan 株式会社所属

• 古民家を改修した神山ラボ勤務

• 名刺アプリ Eight Android 版の開発

• Kotlin, RxJava, Realm, … を使ってます

• リモートワーク

• 趣味は楽器演奏

Page 5: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Sansan 神山ラボ

5

Page 6: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>趣味

6

• 楽器演奏(エレクトーン・トランペット)

• 県内のイベントでちらほら演奏する機会を頂いてます(明日もイベント出演です)

Page 7: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Tokushima.app

7

• http://tokushima-app.connpass.com• 徳島のスマホアプリ開発の勉強会

• 基本もくもく会、たまにハンズオン

• 場所は徳島市内、 10:00 〜 16:00• 初心者でも OK 、入退出自由、参加費無料

• 月 1 ペースで開催(したいと思ってはいる)

• 辰濱が東京の勉強会で仕入れてきた情報なども共有します

• 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。

Page 8: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

開発時に使いたいライブラリやサービス

8

Page 9: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Support Library

9

• https://developer.android.com/topic/libraries/support-library/index.html

• プラットフォーム本体の機能のバックポート

• Fragment, Loader, **Compat

• プラットフォーム本体には存在しない機能の追加

• Design Support Library• Floating Action Button• Navigation View• Tab Layout

• 後方互換性担保のためにも、基本的に使おう!

Page 10: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Support Annotations

10

• http://tools.android.com/tech-docs/support-annotations

• Support Library 群の1つ

• 引数の制約などを定義し、制約違反の場合は Android Studio 上に警告を出すことができる

Page 11: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Stetho

11

• http://facebook.github.io/stetho/• Facebook 製のライブラリ

• Chrome DevTools を使って、以下のことができる

• Network Inspection• Database Inspection• View Hierarchy

Page 12: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Stetho Network Inspection

12

• 時系列の通信状況やレスポンスがわかる

• OkHttp などの通信クライアントに Stetho をかますと使える

Page 13: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Stetho Database Inspection

13

• 端末内 DB の SQLite のテーブルの内容が確認できる

• 端末内キャッシュ( SharedPreference )も同様に確認できる

• 値の書き換えも可能(だったはず…)

Page 14: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Stetho View Hierarchy

14

↓ エミュレータ(横に並べただけ)

• View 階層を確認でき、各要素のプロパティも確認できる

• 選択中の要素が端末上で色が付く

• 値の書き換え&反映も可能

Page 15: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Realm

15

• https://realm.io/jp/• 高速に動作し、使いやすく、無料の DB• 暗号化、変更通知、マイグレーション対応

• 日本語でのサポート対応

• シリアライズされた DB ファイルは、 iOS / Android などどのプラットフォームでも利用可能

Page 16: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Realm

16

• SQL の記述は不要

• クエリ文も簡潔

Page 17: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Stetho-Realm

17

• https://github.com/uPhyca/stetho-realm• Stetho で Realm DB を扱えるようになる

• uPhyca の @zaki50 さん製

• Sansan 株式会社の Android の技術顧問

• 先日の Google I/O 2016 Extended 四国にいらっしゃってました。

Page 18: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Jenkins

18

• https://jenkins.io/• CI です。

• 決まり切った手順は人手でやらず自動化

• ビルドやテストなどのジョブの定期実行

• テストバイナリの作成・配信

• 本番バイナリの作成

• ジョブ(手順)を登録しておくと、定義したタイミングで実行してくれる

• コミットがあったとき

• 定刻

• 手動

• 同様のサービス:Circle CI

Page 19: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Lint

19

• http://tools.android.com/tips/lint• Android SDK tools に同梱されている、静的コード解析ツール

• 検出内容

• 未翻訳文言

• レイアウトパフォーマンス

• 未使用文言

• などなど

• コマンドライン(や Gradle )から実行できる

• ./gradlew lint

Page 20: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Jenkins Android Lint Plugin

20

• https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin

• Jenkins の Lint Plugin• Lint の結果の推移をグラフィカルに表示

Page 21: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Android Studio Inspect Code

21

• Android Studio の静的コード解析ツール

• Analyze > Inspect Code

• Lint よりも検査項目が多い

• IDE による修正アシストもある

Page 22: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Android Studio Inspect Code

22

• IDE による修正アシスト

Alt + Enter

不要な null チェックが除去される

Page 23: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Infer

23

• http://fbinfer.com/• Facebook 製、静的コード解析ツール

• 指摘内容

• CONTEXT_LEAK• NULL_DEREFERENCE• RESOURCE_LEAK

• 結果は CSV, Json で出力される

• Android Studio Inspect Code での内容と重複するところもあるが、 Inspect Code にない指摘もある

Page 24: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>QARK

24

• https://github.com/linkedin/qark • LinkedIn 製、セキュリティチェックツール

• 指摘内容

• export されたコンポーネント

• WebView の設定

• Intent のセキュリティ

• 弱い暗号方式の利用など…

• 結果は html で出力される

Page 25: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Genymotion

25

• https://www.genymotion.com/• 軽量なエミュレータ

(最近は本家のエミュレータも進化してる)

• Android Studio からもデバッグ可能

• ウィンドウサイズを変えると画面が縮小してくれるのが好き

• ※Android N の マルチウィンドウのリサイズのことではない

Page 26: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved. 26

Page 27: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Firebase – Authentication

27

• https://firebase.google.com/docs/auth/ • Google I/O 2016 で新バージョンが発表された

• 色んな機能がある

• 様々な認証機能を簡単に組み込むことができる

• 大手: Facebook, GitHub, Google, Twitter• パスワード:ユーザ登録&認証

• 自前の認証機構

Page 28: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Firebase – Realtime Database

28

• https://firebase.google.com/docs/database/• NoSQL JSON データベース

• 同じデータを持っている端末に即座に同期してくれる

• オフライン編集でも、オンラインになったら同期してくれる

• ファイルへのアクセス権制御は、前述の Firebase Authentication を使う

• 利用シーン

• 端末をまたいだ、ユーザ設定値( Key, Value )の同期

Page 29: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Firebase – Storage

29

• https://firebase.google.com/docs/storage/• ファイルのアップロード・ダウンロード機能を提供

• ファイルへのアクセス権制御は、前述の Firebase Authentication を使う

• Upload, Download の接続が中断されても自動で再開できる

• ペタバイトのデータを保存できる

Page 30: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Firebase – Remote Config

30

• https://firebase.google.com/docs/remote-config/ • Firebase 側の値を変更のみで、アプリの動作をカスタ

マイズできる

• セグメント毎に値を変更することも可能

• 日本国内のユーザ: Value1 、海外: Value2• Android 5.0 以上の男性のユーザ:…

• 利用シーン

• A/B テスト

• 閾値の変更

• メンテナンスモードへの切り替え

Page 31: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

テスト時に使いたいライブラリやサービス

31

Page 32: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Robolectric

32

• http://robolectric.org• Android Test だと、テスト用アプリをビルドして実

機に転送して実行していた。

• Android フレームワークに依存しない、ロジック部分のテストを JVM 上で実行させる

• これにより、・テストビルドの高速化・テストの高速実行が実現する

Page 33: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Espresso

33

• https://google.github.io/android-testing-support-library/docs/espresso/

• UI 操作や UI の状態のテストを記述できるライブラリ

• Android Studio 2.2 からは、 Excel のマクロ記録のように、 Record Espresso Test が可能に!

“Steve” を入力

ボタンクリック

表示チェック

Page 34: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Fabric - beta

34

• https://get.fabric.io• 色んな機能があるが、テスターに開発中のバイナリを配信するのに便利

• Gradle プラグインがあり、ビルドしたものを自動的に Fabric へのアップロードまでしてくれる

• テスターがバイナリを端末にインストールするのも簡単

• バイナリのクラッシュ状況を確認できる

• 同等サービス: Google Play α 版 /β 版 テスト

Page 35: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Fabric 端末へのイントール

35

• 専用アプリへテストバイナリの配信情報が来る

• テストアプリを選択して、バイナリを選択するとインストールされる

• iOS アプリの配信も可能

Page 36: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Fabric

36

• テスト版配布のダッシュボード

テスター 進捗

クラッシュ状況

Page 37: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Fabric

37

• クラッシュ情報

スタックトレース

端末情報

↑件数 時間→

件数・人数

Page 38: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>AWS Device Farm

38

• https://aws.amazon.com/jp/device-farm/• クラウド上の実機でテストが行える

• テスト端末を買わなくても時間借りができる( 0.17$/Device ・ minute )

• Espresso 等で書いた UI テストの実行に最適

• テストを書かなくても、リモートアクセスも可能(ブラウザからジェスチャ等の操作ができる)

• 同様のサービス: Firebase Test Lab

Page 39: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>AWS Device Farm – Remote Access (beta)

39

• ブラウザ上のマウスで操作可能

↑アプリをアップロード

↑物理ボタン

Page 40: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved. 40

Page 41: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Firebase Test Lab

41

• https://firebase.google.com/docs/test-lab/• ほぼ、 AWS Device Farm と同様

(リモートアクセスはないかも…)

Page 42: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Google Play 段階的公開(アップデート)

42

• https://support.google.com/googleplay/android-developer/answer/6346149

• 一定の割合のユーザのみにアップデートを配信する

• 割合の調整はできるが、ターゲットの選定はできない

• 時間をかけて徐々に配信することで、アップデート版の品質を監視しながらリリースできる

Page 43: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

運用時に使いたいライブラリやサービス

43

Page 44: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Fabric - Crashlytics

44

• https://get.fabric.io• 前述のテスト版配信のように色んな機能があるが、ク

ラッシュ状況やイベントの状況を確認できる

• クラッシュが一定数を超えるとメールで知らせてくれる

クラッシュ箇所

アプリバージョン 期間

Page 45: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Fabric - Answers

45

• https://get.fabric.io• DAU, MAU などの推移を確認できる

• イベントトラッキングも行える

Page 46: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved. 46

Page 47: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved.

>Firebase – Analytics

47

• 様々な分析を統合的に行える(今まではそれぞれ別々のサービスで提供されていることが多く、連携が難しかった)

• アプリ内の行動分析

• 広告やキャンペーンの効果分析

• クラッシュレポート

• ログの保存は無制限で無料

• データエクスポートも可能

Page 48: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved. 48

ライブラリやサービスを使ってアプリの開発・運用を速く・楽にしよう!

Page 49: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved. 49

Page 50: Android 開発, 運用時に使いたいライブラリやサービスの紹介

Copyright © 2014 Sansan, Inc. All rights reserved. 50

これらのライブラリやサービスのハンズオンやるかも?

Tokushima.apphttp://tokushima-app.connpass.com