Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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