Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2016/07/02
オープンセミナー2016@香川 発表資料

  • Be the first to comment

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

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

×