Android 開発 , 運用時に使いたいライブラリやサービスの紹介
2016/07/02
オープンセミナー 2016@ 香川 #osk20162016/07/02@情報通信交流館 e- とぴあ かがわ 5F BB スクエア
Tokushima.app & Sansan 株式会社 辰濱健一
Copyright © 2014 Sansan, Inc. All rights reserved.
> Agenda
2
• 自己紹介
• ○○ 時に使いたい、ライブラリやサービスの紹介
• 開発
• テスト
• 運用
※ あくまでも、ざっくりとした紹介のみです。 試用・導入にあたっては、本家のドキュメントを参照下さい。
Copyright © 2014 Sansan, Inc. All rights reserved.
自己紹介
3
Copyright © 2014 Sansan, Inc. All rights reserved.
>自己紹介
4
• 辰濱健一
• 徳島生まれ、奈良育ち
• 2 回転職するも、いずれも徳島県内勤務
• Tokushima.app 主催(徳島でのスマホアプリの勉強会)
• Sansan 株式会社所属
• 古民家を改修した神山ラボ勤務
• 名刺アプリ Eight Android 版の開発
• Kotlin, RxJava, Realm, … を使ってます
• リモートワーク
• 趣味は楽器演奏
Copyright © 2014 Sansan, Inc. All rights reserved.
>Sansan 神山ラボ
5
Copyright © 2014 Sansan, Inc. All rights reserved.
>趣味
6
• 楽器演奏(エレクトーン・トランペット)
• 県内のイベントでちらほら演奏する機会を頂いてます(明日もイベント出演です)
Copyright © 2014 Sansan, Inc. All rights reserved.
>Tokushima.app
7
• http://tokushima-app.connpass.com• 徳島のスマホアプリ開発の勉強会
• 基本もくもく会、たまにハンズオン
• 場所は徳島市内、 10:00 〜 16:00• 初心者でも OK 、入退出自由、参加費無料
• 月 1 ペースで開催(したいと思ってはいる)
• 辰濱が東京の勉強会で仕入れてきた情報なども共有します
• 要望あれば、近隣に出張ハンズオンなども始めようかな…とか思っている。
Copyright © 2014 Sansan, Inc. All rights reserved.
開発時に使いたいライブラリやサービス
8
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
• 後方互換性担保のためにも、基本的に使おう!
Copyright © 2014 Sansan, Inc. All rights reserved.
>Support Annotations
10
• http://tools.android.com/tech-docs/support-annotations
• Support Library 群の1つ
• 引数の制約などを定義し、制約違反の場合は Android Studio 上に警告を出すことができる
Copyright © 2014 Sansan, Inc. All rights reserved.
>Stetho
11
• http://facebook.github.io/stetho/• Facebook 製のライブラリ
• Chrome DevTools を使って、以下のことができる
• Network Inspection• Database Inspection• View Hierarchy
Copyright © 2014 Sansan, Inc. All rights reserved.
>Stetho Network Inspection
12
• 時系列の通信状況やレスポンスがわかる
• OkHttp などの通信クライアントに Stetho をかますと使える
Copyright © 2014 Sansan, Inc. All rights reserved.
>Stetho Database Inspection
13
• 端末内 DB の SQLite のテーブルの内容が確認できる
• 端末内キャッシュ( SharedPreference )も同様に確認できる
• 値の書き換えも可能(だったはず…)
Copyright © 2014 Sansan, Inc. All rights reserved.
>Stetho View Hierarchy
14
↓ エミュレータ(横に並べただけ)
• View 階層を確認でき、各要素のプロパティも確認できる
• 選択中の要素が端末上で色が付く
• 値の書き換え&反映も可能
Copyright © 2014 Sansan, Inc. All rights reserved.
>Realm
15
• https://realm.io/jp/• 高速に動作し、使いやすく、無料の DB• 暗号化、変更通知、マイグレーション対応
• 日本語でのサポート対応
• シリアライズされた DB ファイルは、 iOS / Android などどのプラットフォームでも利用可能
Copyright © 2014 Sansan, Inc. All rights reserved.
>Realm
16
• SQL の記述は不要
• クエリ文も簡潔
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 四国にいらっしゃってました。
Copyright © 2014 Sansan, Inc. All rights reserved.
>Jenkins
18
• https://jenkins.io/• CI です。
• 決まり切った手順は人手でやらず自動化
• ビルドやテストなどのジョブの定期実行
• テストバイナリの作成・配信
• 本番バイナリの作成
• ジョブ(手順)を登録しておくと、定義したタイミングで実行してくれる
• コミットがあったとき
• 定刻
• 手動
• 同様のサービス:Circle CI
Copyright © 2014 Sansan, Inc. All rights reserved.
>Lint
19
• http://tools.android.com/tips/lint• Android SDK tools に同梱されている、静的コード解析ツール
• 検出内容
• 未翻訳文言
• レイアウトパフォーマンス
• 未使用文言
• などなど
• コマンドライン(や Gradle )から実行できる
• ./gradlew lint
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 の結果の推移をグラフィカルに表示
Copyright © 2014 Sansan, Inc. All rights reserved.
>Android Studio Inspect Code
21
• Android Studio の静的コード解析ツール
• Analyze > Inspect Code
• Lint よりも検査項目が多い
• IDE による修正アシストもある
Copyright © 2014 Sansan, Inc. All rights reserved.
>Android Studio Inspect Code
22
• IDE による修正アシスト
Alt + Enter
不要な null チェックが除去される
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 にない指摘もある
Copyright © 2014 Sansan, Inc. All rights reserved.
>QARK
24
• https://github.com/linkedin/qark • LinkedIn 製、セキュリティチェックツール
• 指摘内容
• export されたコンポーネント
• WebView の設定
• Intent のセキュリティ
• 弱い暗号方式の利用など…
• 結果は html で出力される
Copyright © 2014 Sansan, Inc. All rights reserved.
>Genymotion
25
• https://www.genymotion.com/• 軽量なエミュレータ
(最近は本家のエミュレータも進化してる)
• Android Studio からもデバッグ可能
• ウィンドウサイズを変えると画面が縮小してくれるのが好き
• ※Android N の マルチウィンドウのリサイズのことではない
Copyright © 2014 Sansan, Inc. All rights reserved. 26
Copyright © 2014 Sansan, Inc. All rights reserved.
>Firebase – Authentication
27
• https://firebase.google.com/docs/auth/ • Google I/O 2016 で新バージョンが発表された
• 色んな機能がある
• 様々な認証機能を簡単に組み込むことができる
• 大手: Facebook, GitHub, Google, Twitter• パスワード:ユーザ登録&認証
• 自前の認証機構
Copyright © 2014 Sansan, Inc. All rights reserved.
>Firebase – Realtime Database
28
• https://firebase.google.com/docs/database/• NoSQL JSON データベース
• 同じデータを持っている端末に即座に同期してくれる
• オフライン編集でも、オンラインになったら同期してくれる
• ファイルへのアクセス権制御は、前述の Firebase Authentication を使う
• 利用シーン
• 端末をまたいだ、ユーザ設定値( Key, Value )の同期
Copyright © 2014 Sansan, Inc. All rights reserved.
>Firebase – Storage
29
• https://firebase.google.com/docs/storage/• ファイルのアップロード・ダウンロード機能を提供
• ファイルへのアクセス権制御は、前述の Firebase Authentication を使う
• Upload, Download の接続が中断されても自動で再開できる
• ペタバイトのデータを保存できる
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 テスト
• 閾値の変更
• メンテナンスモードへの切り替え
Copyright © 2014 Sansan, Inc. All rights reserved.
テスト時に使いたいライブラリやサービス
31
Copyright © 2014 Sansan, Inc. All rights reserved.
>Robolectric
32
• http://robolectric.org• Android Test だと、テスト用アプリをビルドして実
機に転送して実行していた。
• Android フレームワークに依存しない、ロジック部分のテストを JVM 上で実行させる
• これにより、・テストビルドの高速化・テストの高速実行が実現する
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” を入力
ボタンクリック
表示チェック
Copyright © 2014 Sansan, Inc. All rights reserved.
>Fabric - beta
34
• https://get.fabric.io• 色んな機能があるが、テスターに開発中のバイナリを配信するのに便利
• Gradle プラグインがあり、ビルドしたものを自動的に Fabric へのアップロードまでしてくれる
• テスターがバイナリを端末にインストールするのも簡単
• バイナリのクラッシュ状況を確認できる
• 同等サービス: Google Play α 版 /β 版 テスト
Copyright © 2014 Sansan, Inc. All rights reserved.
>Fabric 端末へのイントール
35
• 専用アプリへテストバイナリの配信情報が来る
• テストアプリを選択して、バイナリを選択するとインストールされる
• iOS アプリの配信も可能
Copyright © 2014 Sansan, Inc. All rights reserved.
>Fabric
36
• テスト版配布のダッシュボード
テスター 進捗
クラッシュ状況
Copyright © 2014 Sansan, Inc. All rights reserved.
>Fabric
37
• クラッシュ情報
スタックトレース
端末情報
↑件数 時間→
件数・人数
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
Copyright © 2014 Sansan, Inc. All rights reserved.
>AWS Device Farm – Remote Access (beta)
39
• ブラウザ上のマウスで操作可能
↑アプリをアップロード
↑物理ボタン
Copyright © 2014 Sansan, Inc. All rights reserved. 40
Copyright © 2014 Sansan, Inc. All rights reserved.
>Firebase Test Lab
41
• https://firebase.google.com/docs/test-lab/• ほぼ、 AWS Device Farm と同様
(リモートアクセスはないかも…)
Copyright © 2014 Sansan, Inc. All rights reserved.
>Google Play 段階的公開(アップデート)
42
• https://support.google.com/googleplay/android-developer/answer/6346149
• 一定の割合のユーザのみにアップデートを配信する
• 割合の調整はできるが、ターゲットの選定はできない
• 時間をかけて徐々に配信することで、アップデート版の品質を監視しながらリリースできる
Copyright © 2014 Sansan, Inc. All rights reserved.
運用時に使いたいライブラリやサービス
43
Copyright © 2014 Sansan, Inc. All rights reserved.
>Fabric - Crashlytics
44
• https://get.fabric.io• 前述のテスト版配信のように色んな機能があるが、ク
ラッシュ状況やイベントの状況を確認できる
• クラッシュが一定数を超えるとメールで知らせてくれる
クラッシュ箇所
アプリバージョン 期間
Copyright © 2014 Sansan, Inc. All rights reserved.
>Fabric - Answers
45
• https://get.fabric.io• DAU, MAU などの推移を確認できる
• イベントトラッキングも行える
Copyright © 2014 Sansan, Inc. All rights reserved. 46
Copyright © 2014 Sansan, Inc. All rights reserved.
>Firebase – Analytics
47
• 様々な分析を統合的に行える(今まではそれぞれ別々のサービスで提供されていることが多く、連携が難しかった)
• アプリ内の行動分析
• 広告やキャンペーンの効果分析
• クラッシュレポート
• ログの保存は無制限で無料
• データエクスポートも可能
Copyright © 2014 Sansan, Inc. All rights reserved. 48
ライブラリやサービスを使ってアプリの開発・運用を速く・楽にしよう!
Copyright © 2014 Sansan, Inc. All rights reserved. 49
Copyright © 2014 Sansan, Inc. All rights reserved. 50
これらのライブラリやサービスのハンズオンやるかも?
Tokushima.apphttp://tokushima-app.connpass.com
Top Related