Slide 1

Slide 1 text

もっとユーザのことを知りたい!
 モバイルアプリでのエラーログ取得
 2019/05/23 タガヤス #11 Akira Shimizu / asmz 1

Slide 2

Slide 2 text

2 誰なのか? ● Akira Shimizu / asmz (@_asmz) ● https://asmz.beer/ ● 株式会社ビデオマーケット 仙台オフィス ● iOSエンジニア ● 個人開発:IT勉強会検索アプリ「EVENTech」 ○ https://eventech.asmz.beer/

Slide 3

Slide 3 text

3 エラーログはどこで取る?

Slide 4

Slide 4 text

4 Webサービスの場合、ログの多くはサーバサイドで 取得 ● ログが取りやすい ● 蓄積が可能 ● 一元管理・検索がしや すい ● ログの引き上げ手 段が必要 ● 不特定多数 ● 蓄積量に制限

Slide 5

Slide 5 text

5 ただし、クライアントサイドに問題がある場合、ログが 取れない ● 通信処理自体の問題 ● 意図せぬクラッシュ

Slide 6

Slide 6 text

6 アプリでもエラーログを 取りたい!

Slide 7

Slide 7 text

7 自前で実装しようと思うと... ● 最終的にはデータをサーバへ送信する必要がある ○ 通信が発生する →大容量、高頻度のデータ送信は難しい ○ 通信状況は常に変化する →送信失敗時のリトライ検討 →送信できなかった場合のバッファリング検討 考慮すべき点が多く、案外簡単じゃない

Slide 8

Slide 8 text

8 Firebase Crashlyticsを 用いたエラーログ取得

Slide 9

Slide 9 text

9 Firebaseとは ● Google社が提供してい る、主にモバイル向けの バックエンドサービス群 (BaaS)

Slide 10

Slide 10 text

10 Firebase Crashlyticsとは ● モバイルアプリのクラッシュレポートツール SDK導入すると、アプリクラッシュを検知して 自動でレポートを上げてくれる

Slide 11

Slide 11 text

11 Firebase Crashlyticsとは ● 導入が容易 ○ 基本的には各プラットフォームのライブラリ導入手順に沿う だけ(iOS: CocoaPods / Android: Gradle) ○ ログのバッファリングやリトライ処理などの実装が不要 ○ 自動集計され、コンソール画面でレポート管理 でも、ログが上がるのはクラッシュした時だけ...?

Slide 12

Slide 12 text

12 クラッシュ以外のエラーログ取得 ● 任意のタイミングでログ送信が可能 // エラーオブジェクト作成 let error = NSError( domain: "CustomErrorDomain", code: 999, userInfo: ["message": "エラーです"] ) // Crashlyticsへログ送信 Crashlytics.sharedInstance().recordError(error)

Slide 13

Slide 13 text

13 クラッシュ以外のエラーログ取得 クラッシュ:Fatal(重大) クラッシュ以外:Non-Fatal(非重大) としてログが上がるようになる

Slide 14

Slide 14 text

14 もっと詳しくユーザの 行動を知りたい!

Slide 15

Slide 15 text

15 カスタムログメッセージの追加 ● エラーに対する補足 情報を付加すること が可能 SDK App Custom Logs Crash Logs (Auto/Manual)

Slide 16

Slide 16 text

16 カスタムログメッセージの追加 Analyticsイベント カスタムログ どういう操作・行動を 経てエラーに至った のかを確認すること が可能!

Slide 17

Slide 17 text

17 カスタムログメッセージの追加 ● ソース内任意の箇所でログ記録 ● POINT ○ ログ記録しただけではCrashlyticsには上がらない ■ Fatal / Non-Fatalエラー発生時に一緒に上がる ○ カスタムログサイズ上限は64KB CLSLogv("%@", getVaList([string]))

Slide 18

Slide 18 text

18 カスタムログメッセージの追加 ● 主な使いどころ ○ アプリ内画面遷移ログ記録 ○ App内課金など重要な処理の経緯ログ記録 ○ カメラやセンサーなど各種デバイスの操作ログ記録 サーバサイドと重複しない観点で

Slide 19

Slide 19 text

19 まとめ

Slide 20

Slide 20 text

20 まとめ ● クライアントサイドのログが欲しい場面がある ● アプリでのログ機構の実装は案外コストが高い ● Firebase Crashlyticsを利用すると便利 ログ収集や導入のコストを下げ、 その分、そのログを「どう活かすか」に注力

Slide 21

Slide 21 text

21 PR

Slide 22

Slide 22 text

22 公式動画配信サービス MIRAIL(ミレール) ● 映像作品コンテンツホルダーが直接動画販売・配信すること ができるプラットフォーム https://mirail.video/

Slide 23

Slide 23 text

23 Google I/O 報告会 in 仙台 ● Google社開催の世界的技術カンファレンス「Google I/O」参加者による報告会 ○ 2019/05/25(土) 10:00 〜 16:00 ○ 仙都会館(宮城県仙台市青葉区中央2-2-10)

Slide 24

Slide 24 text

24 Enjoy Logging! 
 2019/05/23 タガヤス #11 Akira Shimizu / asmz