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

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

Apr 16, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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