SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Firabase Crash Reporting を使ってみました1
Firabase Crash Reporting を
使ってみました
Google I/O Extended 報告会 2016 in 関西 LT
2016-06-11
Firabase Crash Reporting を使ってみました2
Firabase Crash Reporting を
使ってみました
 自己紹介
 ・名前    robo (兼高理恵)
 ・お仕事   Java 技術者
         要件定義に設計から実装まで
 ・好きなもの  モバイル端末
Firabase Crash Reporting を使ってみました3
今年のI/Oでは
 今年のI/Oでは、
 音声や画像のbigdataを機械学習させた成果として、
 Google Assistant と Google Home や Allo、
 Google Cloud Vision API が、
 
Google I/O 2016 - Keynote より Google Play より
Firabase Crash Reporting を使ってみました4
今年のI/Oでは
 VRへの意気込みとして Google VR-Daydream と、
 NのVR …最適化モードがお披露目されたことと思いますが
Google VR - Daydream より
Firabase Crash Reporting を使ってみました5
今年のI/Oでは
 私の中では、Firebaseへの関心が
 Google I/O 2016 前と後で、大きく変わりました。
IO以前は、firebase.com でしたが… IO以後は、firebase.google.com に
Firabase Crash Reporting を使ってみました6
Firebase が、
モバイル支援プラットフォームに昇格
Firebaseの位置づけは、
モバイルアプリの品質や利用/収益改善を支援する
統合プラットフォームに昇格しました。
・Google アカウントがあれば使用できます。
・オンラインを介した15の機能が、基本無料で使えます。
・Google Playに登録していないアプリでも利用可能です。
・build.gradleへの追加設定のみで使える機能もあります。
Google Developers Japan Blog
Firebase の紹介動画(第 1 弾) 2016年5月30日
http://googledevjp.blogspot.jp/2016/05/firebase-1.html
Firebase の紹介動画(第 2 弾) 2016年6月02日
http://googledevjp.blogspot.jp/2016/06/firebase-2.html
新しいFirebaseの全体概要や各機能の紹介は、
1本 2〜4分かつ日本語字幕付きの
お手軽ビデオで確認できますよ。
Firabase Crash Reporting を使ってみました7
Firebase 紹介ビデオの概要
Introducing Firebase モバイル アプリを支援する統合プラットフォーム機能全般紹介
Introducing Firebase Analytics アプリの利用状況を解析するために必要なデータを収集します。
Introducing Firebase Cloud Messaging アプリ・ユーザーへのメッセージ送信を容易にします。
Introducing Firebase Remote Config アプリをユーザごとにカスタマイズさせる動的外部変更可能な設定データ。
Introducinf Firebase Dynamic Links ウェブページやアプリの任意の場所や画面に移動できるディープリンク。
Introducing Firebase Notifications ユーザーへのお知らせの送信や管理を容易にします。
Introducing Firebase Invite ユーザー同士でのコンテンツや紹介コードの送信を容易にします。
Introducing Firebase Test Lab for Android アプリのテストが様々な実機端末で簡単にできるようになります。
Introducing Firebase Crash Reporting アプリのクラッシュ情報を収集し、コンソールに表示します。
Introducing Firebase and AdMob by Google AdMobと Firebase との連携で、アプリからの広告収入を生み出します。
Introducing Firebase Storage アプリから共有できるオンライン・ファイル保存ストレージ。
Introducing Firebase Realtime Database リアルタイムのデータ同期やオフライン時のサポートを行うデータベース。
Introducing Firebase Hosting フロントエンドウェブアプリ向けの静的ウェブホスティングプロバイダ。
Introducing Firebase and Google AdWords AdWords と Firebase との連携で、アプリの効果的な宣伝を行います。
Introducing Firebase Authentication Google や Twitter 等のアカウントと連携した認証を簡単にします。
Introducing Firebase App Indexing 再エンゲージを高める、Google 検索と連携したアプリへのディープリンク。
Firabase Crash Reporting を使ってみました8
Firebaseを
アプリで利用するための基本手順
あああ
【基本手順の参照元】 Firebase Docs > GUIDE > Get Started > Android
Add Firebase to your Android Project
https://firebase.google.com/docs/android/setup
Gradle Dependency Line Service
com.google.firebase:firebase-core:9.0.2 Analytics
com.google.firebase:firebase-database:9.0.2 Realtime Database
com.google.firebase:firebase-storage:9.0.2 Storage
com.google.firebase:firebase-crash:9.0.2 Crash Reporting
com.google.firebase:firebase-auth:9.0.2 Authentication
com.google.firebase:firebase-messaging:9.0.2 Cloud Messaging / Notifications
com.google.firebase:firebase-config:9.0.2 Remote Config
com.google.firebase:firebase-invites:9.0.2 Invites / Dynamic Links
com.google.firebase:firebase-ads:9.0.2 AdMob
com.google.android.gms:play-services-appindexing:9.0.2 App Indexing
Firebase機能のライブラリ一覧
Firabase Crash Reporting を使ってみました9
Firebaseを
アプリで利用するための基本手順
1.Firebase サービスを利用するアプリの
Android Studio プロジェクト名とパッケージ名を確認します。
2.Firebase コンソールの「新規プロジェクトの作成」からプロジェクト名を新規登録します。
3.Firebase コンソールの「Android アプリにFirebaseを追加」から、
先のプロジェクトにパッケージ名(と必要あればデバッグキーのSHA-1)を設定します。
4.Firebase コンソールからダウンロードした google-services.json 設定ファイルを
Android Studio プロジェクトのアプリモジュール(app/)の直下にコピーします。
5.Android Studio プロジェクトの build.gradle の dependencies にFirebase必須プラグインの
classpath 'com.google.gms:google-services:3.0.0' を追加します。
6.Android Studio プロジェクトの app/build.gradle で、
dependenciesに利用するFirabase機能のライブラリ(前ページ参照)を追加(*1)
して、
ファイル末尾で Firebase必須プラグインの適用(*2)
を行います。
(*1) compile 'com.google.firebase:firebase-core:9.0.2' (Analicticsの場合)
(*2) apply plugin:'com.google.gms.google-services'
7.Android Studio プロジェクトで Sync( )を行います。
8.必要があれば、アプリのソースに 導入したFirebase機能 独自の実装を追加します。
・Android 2.3(Gingerbread)以上で、Google Play services 9.0.2 以上の端末が対象です。
・Android Studio は、1.5以上かつ Google Play Service SDK が利用できることが必要です。
・Android Studio 2.2 より前の Instant Run には、互換性がないので無効にしてください。
Firabase Crash Reporting を使ってみました10
Firebaseを
アプリで利用するための基本手順
【補足】
 Firebase を使ってみるプロジェクトが手元にない場合は、
 Firabase のサンプルプロジェクトを使うと良いでしょう。
  ただしその場合は、
   「利用するプロジェクトのパッケージ名が他の人と被らないように
     AndroidManifest.xml で固有のものに変更してね!」 とのこと。
firebase/quickstart-android
https://github.com/firebase/quickstart-android
Firebase 機能ごとのサンプルプロジェクトが、各機能毎のプロジェクトディレクトリに配置されています。
Firabase Crash Reporting を使ってみました11
Firebaseを
アプリで利用するための基本手順
機能毎にプロジェクトが
分かれています。
機能毎にプロジェクトが
分かれています。
Github の
firebase/quickstart-android リポジトリを
ローカルに clone しましましたら、
確認したい機能のサンプル・プロジェクトを
Android Studio にインポートします。
【補足】
 サンプル・プロジェクトを
 利用する際の注意事項
Firabase Crash Reporting を使ってみました12
Firebaseを
アプリで利用するための基本手順
サンプル・プロジェクトをインポートしたら、
元々設定されていたパッケージ名から、
固有のパッケージ名に変更してください。
サンプル・プロジェクトをインポートしたら、
元々設定されていたapplicationId名から、
固有のapplicationId名に変更してください。
AndroidManifest.xml app/build.gradle
【補足】
 サンプル・プロジェクトを
 利用する際の注意事項
サンプル・プロジェクトをインポートしたら、
固有のパッケージ名のディレクトリ構成に
変更してください。
新規パッケージを追加して、元クラスを移動すると楽です。
Firabase Crash Reporting を使ってみました13
Firebaseを
アプリで利用するための基本手順
文字だけの説明では、
イメージが伝わりにくいと思います。
次ページから、具体的な例として
Firebase Crash Reporting 機能を
利用できるようにするための手順を
まとめました。
Firabase Crash Reporting を使ってみました14
Firebaseを
アプリで利用するための基本手順
【具体例】 (Android Studio での下準備)
Github の
firebase/quickstart-android リポジトリを
ローカルに clone します。
クローン後に、
ローカル・リポジトリの crash ディレクトリ
(Crash Reporting 機能のサンプル・プロジェクト)を
Android Studio にインポートします。
Android Studio に、
crash プロジェクトをインポートしたら
2ページ前の手順を参考に、
パッケージ名の変更を行ってください。
Firabase Crash Reporting を使ってみました15
Firebaseを
アプリで利用するための基本手順
【具体例】 (Firebase コンソールでの操作)
予め Google アカウントで、
Chrome にログイン済であれば、
Console リンクをクリックすると
Firebase コンソールが開きます。
firebase サイト
firebase.google.com を開きます。
新規プロジェクトを作成をクリックして
Firebase 機能を利用する
新規プロジェクトを作成します。
Firabase Crash Reporting を使ってみました16
Firebaseを
アプリで利用するための基本手順
新規プロジェクト用の
適当なプロジェクト名を
入力します。
クリックして
プロジェクトを
  作成します。
新規プロジェクトを作成のクリックで
プロジェクトの作成ダイアログが
開きます。
Firabase Crash Reporting を使ってみました17
Firebaseを
アプリで利用するための基本手順
プロジェクトが作成され
作成した新規プロジェクト用の
コンソール画面が開きます。
新規作成したプロジェクト が
選択されています。
新規作成したFirebaseプロジェクトに
任意のAndroid アプリを登録して、
アプリからFirabaseの機能を使えるようクリックします。
Firabase Crash Reporting を使ってみました18
Firebaseを
アプリで利用するための基本手順
AndroidアプリにFirebaseを追加のクリックで
AndroidアプリにFirebaseを追加ダイアログが
開きます。
クリックして
Firebaseプロジェクトに
アプリを追加します。
Firebaseの機能を使いたい
アプリのパッケージ名を
指定します。
必要なければ
入力の必要は、
ありません。
詳細は、
次ページ参照
Firabase Crash Reporting を使ってみました19
Firebaseを
アプリで利用するための基本手順
デバッグ用の署名証明書 SHA-1(オプション)は、
Firebase Invites か Firebase Dynamic Links を使う場合や、
アプリをリリースする際に Oauth client ID や API key を使う場合や、
エラーレポートをアプリの共同開発者版のものと区別したい場合に必要となります。
Firebse > Support > Support (Recent changes & updates | FAQ)
Frequency Asked Questions > Projects and the Firebase console
Do I need to provide a SHA-1 when adding an Android app? より
Firebase Invites か
Firebase Dynamic Links を使う場合、
SHA-1を指定してくださいとあります。
https://firebase.google.com/support/faq/
Firebase > Support > Support Guides >Launch Checklist >
Firebase Launch Checklist より
OAuth client ID や API key を使う場合、
アプリをリリースする際には、
リリース版 SHA-1 証明書キーを登録して
くださいとあります。
https://firebase.google.com/support/guides/launch-checklist
Firabase Crash Reporting を使ってみました20
Firebaseを
アプリで利用するための基本手順
アプリを追加のクリックで、この後でダウンロードされる
Firebase の機能を使えるようにする google-services.json 設定ファイルを
Firebase 機能を使いたいアプリの Android Studio プロジェクトの app モジュール下に
コピー追加するよう促すダイアログに切り替わります。
クリックして、続行します。
Firabase Crash Reporting を使ってみました21
Firebaseを
アプリで利用するための基本手順
続行のクリックで、
Firebase 機能を使いたいアプリの Android Studio プロジェクトの ルートと、
app モジュール下にある build.gradle への追加設定を促すダイアログに切り替わります。
クリックして、設定を終了します。
Android Studio ルートの build.gralde 設定
buildscript {
dependencies {
// Firebase を使えるようにするプラグイン設定を追加
classpath 'com.google.gms:google-services:3.0.0';
}
}
Android Studio app/下の build.gralde 設定
dependencies{
// (補足)利用するFirebase機能のライブラリを追加
compile 'com.google.firebase:firebase-crash:9.0.2'
}
設定記述の末尾に、プラグイン適用指定を追加
apply plugin: 'com.google.gms.google-services'
設定が反映されるにはSync( )が必要です。
Firabase Crash Reporting を使ってみました22
Firebaseを
アプリで利用するための基本手順
終了のクリックで、
Android アプリで Firebase の機能を使えるようにする
google-services.json 設定ファイルがダウンロードされますので、
Firebase 機能を使うアプリのASプロジェクトに、前2ページ分の設定操作を行ってください。
ダウンロードした
json 設定ファイルのコピー先
以下の設定後に、ASのツールバーから
Sync( )を行って設定を反映します。
ASプロジェクト・ルートの
build.gradle への追加設定
ダイアログの説明にない追加設定
ASプロジェクト・appモジュール下の
build.gradle への
利用するFirebase機能の
ライブラリをインポートする追加設定
ASプロジェクト・appモジュール下の
build.gradle 末尾への追加設定
Firabase Crash Reporting を使ってみました23
Firebase Crash Reporting の
特徴と注意点
Firabase Crash Reporting を使ってみました24
Crash Reporting の特徴 (1)
●
現段階ではベータ版
●
基本無料で利用可能
●
Googleアカウントがあれば利用可能
●
Google Play に登録/公開していないアプリでも利用可能
●
Firebase コンソールのプロジェクトへのアプリ・パッケージ名登録と、
アプリ側のルート下と、appモジュール下の build.gradle 設定と
app 直下への json 設定ファイル追加のみで利用開始可能
Firabase Crash Reporting を使ってみました25
Crash Reporting の特徴 (2)
●
キャッチされなかった例外のレポートのみであれば、
現状コードへの追加実装も不要
●
エラーレポートには、
発生日時や端末情報に例外種別とスタックトレースも記録可能
●
捕捉されたエラーは、
20分程度でエラーレポートに反映され&コンソールで確認可能
●
例外や発生箇所や端末やAPI レベルなどで、
エラーレポートのフィルタリングも可能
●
エラーレポートへの任意例外の記録やカスタムログの追加も、
対応実装の追加で可能
Firabase Crash Reporting を使ってみました26
Crash Reporting の特徴 (3)
【留意事項】
●
End user privacy
Firebase Crush Reporting は、
クラッシュしたアプリ・ユーザのメールアドレスや電話番号など、
         個人を特定できる情報を収集していません。
Googleさんとしては、
カスタムログに個人特定情報入れると、
自分たちに送ることになるので入れないでね!とのこと。
【以上の参照元】Firebase > Docs > GUIDE > Crash Reporting > Introduction
Firebase Crash Reporting
    https://firebase.google.com/docs/crash/
Firabase Crash Reporting を使ってみました27
Crash Reporting の特徴詳細
●
Firebase Crash Reporting を使うには、
app モジュールの build.gradle の dependencies に、
Crash Report のライブラリをインポートする設定を追加します。
compile 'com.google.firebase:firebase-crash:9.0.2'
●
自動的にキャッチされない例外を捕捉して
エラーレポートを記録しますが、それだけでなく、
下記のように、明示的にエラーレポートを記録させることもできます。 
FirebaseCrash.report(
new Exception("My first Android non-fatal error"));
●
Firebase カスタムログ出力を使って、
エラーレポートに独自情報(カスタムログ出力内容)の
                   追加もできます。 
FirebaseCrash.log("Activity created");
Firabase Crash Reporting を使ってみました28
Crash Reporting の注意事項
●
ProGurad を使うと、
エラーレポートのスタックトレースも難読化されます。
難読化を解除したい場合は、マッピングファイルのアップロードが
必要です。 (マッピングファイルの出力先は、下記のフォーマット)
<project root>/<module name>/build/outputs/mapping/<build type>/<appname>-proguard-mapping.txt
例:app/build/outputs/mapping/debug/app-proguard-mapping.txt
アップロードについては、スライドP.38を参照ください。
●
Crash Reporting と Analictics で報告されるエラー総数は、
                  現在一致しません。
Firabase Crash Reporting を使ってみました29
Crash Reporting 既知の問題 (1)
●
クラッシュレポートは、バックプロセスで実行されます。
●
このため
バックプロセス分の Application オブジェクトも生成され、
ライフサイクルなどのシステム・コールバック・メソッドも
また実行されることになります。
●
Application オブジェクトのシステム・コールバックで、
プロセスをまたいで共有されるデータ(*1)
の更新を行う場合、
マルチプロセス対応をしていないと思わぬ上書きが発生し、
同期問題が発生するのです。
onCreate()でDBの初期化などをしないようにしてください。
        (*1)
Shared Preferences や Database など
Firabase Crash Reporting を使ってみました30
Crash Reporting 既知の問題 (2)
●
同期問題は、
プロセスをまたいでデータを共有する
サードパーティ製のライブラリにもあてはまります。
これらのライブラリを使う際には、マルチプロセス対応の
有無を確認してから利用や対応を行ってください。
●
プロセスをまたいで共有されるデータは、
Content Providerを介して管理することが推奨されています。
【以上の参照元】Firebase > Docs > GUIDE > Crash Reporting > Android > Report Crashes
Report Crashes
https://firebase.google.com/docs/crash/android
Firabase Crash Reporting を使ってみました31
Firebase Crash Reporting を
使ってみる
Firabase Crash Reporting を使ってみました32
Firebase Crash Reporting を
アプリから利用する
 Firebase Crash Reporting は、
 基本手順を踏めば任意のアプリに組み込めますが、
 今回は、サンプルの crash プロジェクトを使ってみました。
 
 組み込み手順については、
 「Firebaseをアプリで利用するための基本手順」の具体例を参照ください。
アプリを起動すると表示される画面
チェックなしでクリックすると、
NullPointer例外が発生して
アプリがクラッシュします。
チェックありでクリックすると、
NullPointer例外がキャッチされ、
何もなかったように振る舞います。
Firabase Crash Reporting を使ってみました33
Firebase Crash Reporting を
アプリから利用する
Catch Crash
チェックあり
Catch Crash
チェックなし
アプリの実装 (抜粋)
キャッチされない
例外を発生させて放置
捕捉した例外を
カスタムログに出力し、
エラーレポートに記録
Firabase Crash Reporting を使ってみました34
Firebase Crash Reporting で
エラーレポートを記録させる
 Firebase Crash Reporting の働きを確認するため、
 1.チェックなしでボタンをクリックしてアプリをクラッシュさせる。
 2.チェックありでボタンをクリックして例外を記録させる。
 …を行った後、
 Firebaseコンソールにログインして、
           エラーレポートを確認します。
Firabase Crash Reporting を使ってみました35
Firebase Crash Reporting の
エラーレポート確認手順 (1)
予め Google アカウントで、
Chrome にログイン済であれば、
Console リンクをクリックすると
Firebase コンソールが開きます。
firebase サイト
firebase.google.com を開きます。
作成済みの
Firebase を使用するプロジェクトを
クリックして選択します。
Firabase Crash Reporting を使ってみました36
Firebase Crash Reporting の
エラーレポート確認手順 (2)
前ページでクリックされた、
Firebase を使用するプロジェクトに
         切り替わります。
Firebase Crash Reporting の
エラーレポートを確認するため
Crash項目をクリックします。
右ペインが
Crash Reporting に
切り替わります。
Firabase Crash Reporting を使ってみました37
Firebase Crash Reporting の
エラーレポート確認 (1)
はじめは、チェックなしのクリックによる
キャッチされない NulPointer例外がレポートされています。
スタックトレース詳細を確認するには、
例外発生元のリンクをクリックします。キャッチされない
例外のため
「致命的」と
レポートされる。
Firabase Crash Reporting を使ってみました38
Firebase Crash Reporting の
エラーレポート確認 (2)
はじめの、
キャッチされない
NullPointer例外の
スタックトレースが
表示されています。
ProGuard を使う場合は、
スタックトレース内容も
難読化されます。
難読化を解除するには、
マッピングファイルの
アップロードが必要です。
前ページの
エラー発生元リンクの
クリックにより、
スタックトレース表示に
切り替わっています。
Firabase Crash Reporting を使ってみました39
Firebase Crash Reporting の
エラーレポート確認 (3)
スタックトレース内容
だけでなく、端末の
Androidバージョンや
空きメモリ状況なども
レポートしてくれます。
Firabase Crash Reporting を使ってみました40
Firebase Crash Reporting の
エラーレポート確認 (4)
続いて、チェックを入れてキャッチされた例外のスタックトレースを表示しています。
遅れてレポートされた、
キャッチされて
実装側で任意レポートと
カスタムログが出力された
NullPointer例外の
スタックトレースが
表示されています。
キャッチされた例外なので、
「非致命的」と
レポートされています。
Firabase Crash Reporting を使ってみました41
Firebase Crash Reporting の
エラーレポート確認 (5)
フィルタリング条件も、
アプリのバージョン番号や
端末のAPIバージョンに、
端末種類や日時などが
用意されています。
Firabase Crash Reporting を使ってみました42
Firebase Crash Reporting の
雑感
 …以上のように、
 Firebase Crash Reporting は、
 開発者側の設定を最小限にしようとしていることと、
 エラーレポートでは、
 細かなフィルタリング条件や、エラー端末情報が補足され、
 単なるエラーチェックだけでなく、エラー分析に役立つよう
 試みられており、
 基本無償でありながら、モバイル・アプリの
 品質や利用/収益改善の支援を目指していることは、
               確かなように思えます。
Firabase Crash Reporting を使ってみました43
ご清聴、ありがとうございました。
イメージなどを詰め込みすぎ、
資料が小さく読みづらかったことを
         お詫びいたします。

Mais conteúdo relacionado

Destaque

スマホアプリのSSLサーバ証明書の検証不備について
スマホアプリのSSLサーバ証明書の検証不備についてスマホアプリのSSLサーバ証明書の検証不備について
スマホアプリのSSLサーバ証明書の検証不備についてShunsuke Taniguchi
 
htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話司 知花
 
Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
ZshでデキるプロンプトMaruyama Tetsutaro
 
Firebaseマーケティング活用事例
Firebaseマーケティング活用事例Firebaseマーケティング活用事例
Firebaseマーケティング活用事例Hiroshi Genouzono
 
地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり
地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり
地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり健一 辰濱
 
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化するEspresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化する健一 辰濱
 
Kotlin 使いになりました
Kotlin 使いになりましたKotlin 使いになりました
Kotlin 使いになりました健一 辰濱
 
Android crash debugging
Android crash debuggingAndroid crash debugging
Android crash debuggingAshish Agrawal
 
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。健一 辰濱
 
6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発Google Cloud Platform - Japan
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか真吾 吉田
 
FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法cch-robo
 
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいことTitanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいことRyutaro Miyashita
 
はじめてのAIプログラミング 5章: 知識表現
はじめてのAIプログラミング 5章: 知識表現はじめてのAIプログラミング 5章: 知識表現
はじめてのAIプログラミング 5章: 知識表現nkazuki
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。cch-robo
 
Unlimited Frameworks
Unlimited FrameworksUnlimited Frameworks
Unlimited FrameworksTerui Masashi
 
Architecture driven development のすすめ
Architecture driven development のすすめArchitecture driven development のすすめ
Architecture driven development のすすめAtsushi Fukui
 

Destaque (20)

スマホアプリのSSLサーバ証明書の検証不備について
スマホアプリのSSLサーバ証明書の検証不備についてスマホアプリのSSLサーバ証明書の検証不備について
スマホアプリのSSLサーバ証明書の検証不備について
 
htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話
 
Zshでデキるプロンプト
ZshでデキるプロンプトZshでデキるプロンプト
Zshでデキるプロンプト
 
Firebaseマーケティング活用事例
Firebaseマーケティング活用事例Firebaseマーケティング活用事例
Firebaseマーケティング活用事例
 
地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり
地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり
地方のサテライトオフィスで働くエンジニアの仕事と地域との関わり
 
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化するEspresso と Firebase Test Lab で Android アプリのテストを自動化する
Espresso と Firebase Test Lab で Android アプリのテストを自動化する
 
Kotlin 使いになりました
Kotlin 使いになりましたKotlin 使いになりました
Kotlin 使いになりました
 
Android crash debugging
Android crash debuggingAndroid crash debugging
Android crash debugging
 
Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。Java → Kotlin 変換 そのあとに。
Java → Kotlin 変換 そのあとに。
 
6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
6 月 18 日 Next - 意外と簡単、AI を使ったリアルタイム モバイルゲーム開発
 
Firebase 概要
Firebase 概要Firebase 概要
Firebase 概要
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 
FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法FirefoxOSで学ぶJavaScript作法
FirefoxOSで学ぶJavaScript作法
 
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいことTitanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
 
はじめてのAIプログラミング 5章: 知識表現
はじめてのAIプログラミング 5章: 知識表現はじめてのAIプログラミング 5章: 知識表現
はじめてのAIプログラミング 5章: 知識表現
 
Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。Firebase Test Lab 無料枠を使ってみました。
Firebase Test Lab 無料枠を使ってみました。
 
Wearable realm
Wearable realmWearable realm
Wearable realm
 
Unlimited Frameworks
Unlimited FrameworksUnlimited Frameworks
Unlimited Frameworks
 
読むと怖くないDagger2
読むと怖くないDagger2読むと怖くないDagger2
読むと怖くないDagger2
 
Architecture driven development のすすめ
Architecture driven development のすすめArchitecture driven development のすすめ
Architecture driven development のすすめ
 

Mais de cch-robo

Flutter_Forward_Extended_Kyoto-Keynote_Summary
Flutter_Forward_Extended_Kyoto-Keynote_SummaryFlutter_Forward_Extended_Kyoto-Keynote_Summary
Flutter_Forward_Extended_Kyoto-Keynote_Summarycch-robo
 
go_router が隠してくれるもの
go_router が隠してくれるものgo_router が隠してくれるもの
go_router が隠してくれるものcch-robo
 
Introduction_on_designing_test_in_flutter
Introduction_on_designing_test_in_flutterIntroduction_on_designing_test_in_flutter
Introduction_on_designing_test_in_fluttercch-robo
 
Google I/O 2021 Flutter 全体報告
Google I/O 2021 Flutter 全体報告Google I/O 2021 Flutter 全体報告
Google I/O 2021 Flutter 全体報告cch-robo
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門cch-robo
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察cch-robo
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
Dart言語の進化状況
Dart言語の進化状況Dart言語の進化状況
Dart言語の進化状況cch-robo
 
明示的アニメで、Flutterアニメーション入門
明示的アニメで、Flutterアニメーション入門明示的アニメで、Flutterアニメーション入門
明示的アニメで、Flutterアニメーション入門cch-robo
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようcch-robo
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービスcch-robo
 
Pin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widgetPin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widgetcch-robo
 
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略cch-robo
 
Before lunch オプションを使って Flutterでstaging/release環境を切り替える
Before lunch オプションを使って Flutterでstaging/release環境を切り替えるBefore lunch オプションを使って Flutterでstaging/release環境を切り替える
Before lunch オプションを使って Flutterでstaging/release環境を切り替えるcch-robo
 
Flutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux までFlutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux までcch-robo
 
Loose and fluffy_ddd_intro
Loose and fluffy_ddd_introLoose and fluffy_ddd_intro
Loose and fluffy_ddd_introcch-robo
 

Mais de cch-robo (16)

Flutter_Forward_Extended_Kyoto-Keynote_Summary
Flutter_Forward_Extended_Kyoto-Keynote_SummaryFlutter_Forward_Extended_Kyoto-Keynote_Summary
Flutter_Forward_Extended_Kyoto-Keynote_Summary
 
go_router が隠してくれるもの
go_router が隠してくれるものgo_router が隠してくれるもの
go_router が隠してくれるもの
 
Introduction_on_designing_test_in_flutter
Introduction_on_designing_test_in_flutterIntroduction_on_designing_test_in_flutter
Introduction_on_designing_test_in_flutter
 
Google I/O 2021 Flutter 全体報告
Google I/O 2021 Flutter 全体報告Google I/O 2021 Flutter 全体報告
Google I/O 2021 Flutter 全体報告
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
Dart言語の進化状況
Dart言語の進化状況Dart言語の進化状況
Dart言語の進化状況
 
明示的アニメで、Flutterアニメーション入門
明示的アニメで、Flutterアニメーション入門明示的アニメで、Flutterアニメーション入門
明示的アニメで、Flutterアニメーション入門
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
 
Dartでサーバレスサービス
DartでサーバレスサービスDartでサーバレスサービス
Dartでサーバレスサービス
 
Pin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widgetPin-point rebuildable and non-rebuild custom widget
Pin-point rebuildable and non-rebuild custom widget
 
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
 
Before lunch オプションを使って Flutterでstaging/release環境を切り替える
Before lunch オプションを使って Flutterでstaging/release環境を切り替えるBefore lunch オプションを使って Flutterでstaging/release環境を切り替える
Before lunch オプションを使って Flutterでstaging/release環境を切り替える
 
Flutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux までFlutter のリアクティブ戦略 set state 〜 redux まで
Flutter のリアクティブ戦略 set state 〜 redux まで
 
Loose and fluffy_ddd_intro
Loose and fluffy_ddd_introLoose and fluffy_ddd_intro
Loose and fluffy_ddd_intro
 

Firebase Crash Reporting を使ってみました。

  • 1. Firabase Crash Reporting を使ってみました1 Firabase Crash Reporting を 使ってみました Google I/O Extended 報告会 2016 in 関西 LT 2016-06-11
  • 2. Firabase Crash Reporting を使ってみました2 Firabase Crash Reporting を 使ってみました  自己紹介  ・名前    robo (兼高理恵)  ・お仕事   Java 技術者          要件定義に設計から実装まで  ・好きなもの  モバイル端末
  • 3. Firabase Crash Reporting を使ってみました3 今年のI/Oでは  今年のI/Oでは、  音声や画像のbigdataを機械学習させた成果として、  Google Assistant と Google Home や Allo、  Google Cloud Vision API が、   Google I/O 2016 - Keynote より Google Play より
  • 4. Firabase Crash Reporting を使ってみました4 今年のI/Oでは  VRへの意気込みとして Google VR-Daydream と、  NのVR …最適化モードがお披露目されたことと思いますが Google VR - Daydream より
  • 5. Firabase Crash Reporting を使ってみました5 今年のI/Oでは  私の中では、Firebaseへの関心が  Google I/O 2016 前と後で、大きく変わりました。 IO以前は、firebase.com でしたが… IO以後は、firebase.google.com に
  • 6. Firabase Crash Reporting を使ってみました6 Firebase が、 モバイル支援プラットフォームに昇格 Firebaseの位置づけは、 モバイルアプリの品質や利用/収益改善を支援する 統合プラットフォームに昇格しました。 ・Google アカウントがあれば使用できます。 ・オンラインを介した15の機能が、基本無料で使えます。 ・Google Playに登録していないアプリでも利用可能です。 ・build.gradleへの追加設定のみで使える機能もあります。 Google Developers Japan Blog Firebase の紹介動画(第 1 弾) 2016年5月30日 http://googledevjp.blogspot.jp/2016/05/firebase-1.html Firebase の紹介動画(第 2 弾) 2016年6月02日 http://googledevjp.blogspot.jp/2016/06/firebase-2.html 新しいFirebaseの全体概要や各機能の紹介は、 1本 2〜4分かつ日本語字幕付きの お手軽ビデオで確認できますよ。
  • 7. Firabase Crash Reporting を使ってみました7 Firebase 紹介ビデオの概要 Introducing Firebase モバイル アプリを支援する統合プラットフォーム機能全般紹介 Introducing Firebase Analytics アプリの利用状況を解析するために必要なデータを収集します。 Introducing Firebase Cloud Messaging アプリ・ユーザーへのメッセージ送信を容易にします。 Introducing Firebase Remote Config アプリをユーザごとにカスタマイズさせる動的外部変更可能な設定データ。 Introducinf Firebase Dynamic Links ウェブページやアプリの任意の場所や画面に移動できるディープリンク。 Introducing Firebase Notifications ユーザーへのお知らせの送信や管理を容易にします。 Introducing Firebase Invite ユーザー同士でのコンテンツや紹介コードの送信を容易にします。 Introducing Firebase Test Lab for Android アプリのテストが様々な実機端末で簡単にできるようになります。 Introducing Firebase Crash Reporting アプリのクラッシュ情報を収集し、コンソールに表示します。 Introducing Firebase and AdMob by Google AdMobと Firebase との連携で、アプリからの広告収入を生み出します。 Introducing Firebase Storage アプリから共有できるオンライン・ファイル保存ストレージ。 Introducing Firebase Realtime Database リアルタイムのデータ同期やオフライン時のサポートを行うデータベース。 Introducing Firebase Hosting フロントエンドウェブアプリ向けの静的ウェブホスティングプロバイダ。 Introducing Firebase and Google AdWords AdWords と Firebase との連携で、アプリの効果的な宣伝を行います。 Introducing Firebase Authentication Google や Twitter 等のアカウントと連携した認証を簡単にします。 Introducing Firebase App Indexing 再エンゲージを高める、Google 検索と連携したアプリへのディープリンク。
  • 8. Firabase Crash Reporting を使ってみました8 Firebaseを アプリで利用するための基本手順 あああ 【基本手順の参照元】 Firebase Docs > GUIDE > Get Started > Android Add Firebase to your Android Project https://firebase.google.com/docs/android/setup Gradle Dependency Line Service com.google.firebase:firebase-core:9.0.2 Analytics com.google.firebase:firebase-database:9.0.2 Realtime Database com.google.firebase:firebase-storage:9.0.2 Storage com.google.firebase:firebase-crash:9.0.2 Crash Reporting com.google.firebase:firebase-auth:9.0.2 Authentication com.google.firebase:firebase-messaging:9.0.2 Cloud Messaging / Notifications com.google.firebase:firebase-config:9.0.2 Remote Config com.google.firebase:firebase-invites:9.0.2 Invites / Dynamic Links com.google.firebase:firebase-ads:9.0.2 AdMob com.google.android.gms:play-services-appindexing:9.0.2 App Indexing Firebase機能のライブラリ一覧
  • 9. Firabase Crash Reporting を使ってみました9 Firebaseを アプリで利用するための基本手順 1.Firebase サービスを利用するアプリの Android Studio プロジェクト名とパッケージ名を確認します。 2.Firebase コンソールの「新規プロジェクトの作成」からプロジェクト名を新規登録します。 3.Firebase コンソールの「Android アプリにFirebaseを追加」から、 先のプロジェクトにパッケージ名(と必要あればデバッグキーのSHA-1)を設定します。 4.Firebase コンソールからダウンロードした google-services.json 設定ファイルを Android Studio プロジェクトのアプリモジュール(app/)の直下にコピーします。 5.Android Studio プロジェクトの build.gradle の dependencies にFirebase必須プラグインの classpath 'com.google.gms:google-services:3.0.0' を追加します。 6.Android Studio プロジェクトの app/build.gradle で、 dependenciesに利用するFirabase機能のライブラリ(前ページ参照)を追加(*1) して、 ファイル末尾で Firebase必須プラグインの適用(*2) を行います。 (*1) compile 'com.google.firebase:firebase-core:9.0.2' (Analicticsの場合) (*2) apply plugin:'com.google.gms.google-services' 7.Android Studio プロジェクトで Sync( )を行います。 8.必要があれば、アプリのソースに 導入したFirebase機能 独自の実装を追加します。 ・Android 2.3(Gingerbread)以上で、Google Play services 9.0.2 以上の端末が対象です。 ・Android Studio は、1.5以上かつ Google Play Service SDK が利用できることが必要です。 ・Android Studio 2.2 より前の Instant Run には、互換性がないので無効にしてください。
  • 10. Firabase Crash Reporting を使ってみました10 Firebaseを アプリで利用するための基本手順 【補足】  Firebase を使ってみるプロジェクトが手元にない場合は、  Firabase のサンプルプロジェクトを使うと良いでしょう。   ただしその場合は、    「利用するプロジェクトのパッケージ名が他の人と被らないように      AndroidManifest.xml で固有のものに変更してね!」 とのこと。 firebase/quickstart-android https://github.com/firebase/quickstart-android Firebase 機能ごとのサンプルプロジェクトが、各機能毎のプロジェクトディレクトリに配置されています。
  • 11. Firabase Crash Reporting を使ってみました11 Firebaseを アプリで利用するための基本手順 機能毎にプロジェクトが 分かれています。 機能毎にプロジェクトが 分かれています。 Github の firebase/quickstart-android リポジトリを ローカルに clone しましましたら、 確認したい機能のサンプル・プロジェクトを Android Studio にインポートします。 【補足】  サンプル・プロジェクトを  利用する際の注意事項
  • 12. Firabase Crash Reporting を使ってみました12 Firebaseを アプリで利用するための基本手順 サンプル・プロジェクトをインポートしたら、 元々設定されていたパッケージ名から、 固有のパッケージ名に変更してください。 サンプル・プロジェクトをインポートしたら、 元々設定されていたapplicationId名から、 固有のapplicationId名に変更してください。 AndroidManifest.xml app/build.gradle 【補足】  サンプル・プロジェクトを  利用する際の注意事項 サンプル・プロジェクトをインポートしたら、 固有のパッケージ名のディレクトリ構成に 変更してください。 新規パッケージを追加して、元クラスを移動すると楽です。
  • 13. Firabase Crash Reporting を使ってみました13 Firebaseを アプリで利用するための基本手順 文字だけの説明では、 イメージが伝わりにくいと思います。 次ページから、具体的な例として Firebase Crash Reporting 機能を 利用できるようにするための手順を まとめました。
  • 14. Firabase Crash Reporting を使ってみました14 Firebaseを アプリで利用するための基本手順 【具体例】 (Android Studio での下準備) Github の firebase/quickstart-android リポジトリを ローカルに clone します。 クローン後に、 ローカル・リポジトリの crash ディレクトリ (Crash Reporting 機能のサンプル・プロジェクト)を Android Studio にインポートします。 Android Studio に、 crash プロジェクトをインポートしたら 2ページ前の手順を参考に、 パッケージ名の変更を行ってください。
  • 15. Firabase Crash Reporting を使ってみました15 Firebaseを アプリで利用するための基本手順 【具体例】 (Firebase コンソールでの操作) 予め Google アカウントで、 Chrome にログイン済であれば、 Console リンクをクリックすると Firebase コンソールが開きます。 firebase サイト firebase.google.com を開きます。 新規プロジェクトを作成をクリックして Firebase 機能を利用する 新規プロジェクトを作成します。
  • 16. Firabase Crash Reporting を使ってみました16 Firebaseを アプリで利用するための基本手順 新規プロジェクト用の 適当なプロジェクト名を 入力します。 クリックして プロジェクトを   作成します。 新規プロジェクトを作成のクリックで プロジェクトの作成ダイアログが 開きます。
  • 17. Firabase Crash Reporting を使ってみました17 Firebaseを アプリで利用するための基本手順 プロジェクトが作成され 作成した新規プロジェクト用の コンソール画面が開きます。 新規作成したプロジェクト が 選択されています。 新規作成したFirebaseプロジェクトに 任意のAndroid アプリを登録して、 アプリからFirabaseの機能を使えるようクリックします。
  • 18. Firabase Crash Reporting を使ってみました18 Firebaseを アプリで利用するための基本手順 AndroidアプリにFirebaseを追加のクリックで AndroidアプリにFirebaseを追加ダイアログが 開きます。 クリックして Firebaseプロジェクトに アプリを追加します。 Firebaseの機能を使いたい アプリのパッケージ名を 指定します。 必要なければ 入力の必要は、 ありません。 詳細は、 次ページ参照
  • 19. Firabase Crash Reporting を使ってみました19 Firebaseを アプリで利用するための基本手順 デバッグ用の署名証明書 SHA-1(オプション)は、 Firebase Invites か Firebase Dynamic Links を使う場合や、 アプリをリリースする際に Oauth client ID や API key を使う場合や、 エラーレポートをアプリの共同開発者版のものと区別したい場合に必要となります。 Firebse > Support > Support (Recent changes & updates | FAQ) Frequency Asked Questions > Projects and the Firebase console Do I need to provide a SHA-1 when adding an Android app? より Firebase Invites か Firebase Dynamic Links を使う場合、 SHA-1を指定してくださいとあります。 https://firebase.google.com/support/faq/ Firebase > Support > Support Guides >Launch Checklist > Firebase Launch Checklist より OAuth client ID や API key を使う場合、 アプリをリリースする際には、 リリース版 SHA-1 証明書キーを登録して くださいとあります。 https://firebase.google.com/support/guides/launch-checklist
  • 20. Firabase Crash Reporting を使ってみました20 Firebaseを アプリで利用するための基本手順 アプリを追加のクリックで、この後でダウンロードされる Firebase の機能を使えるようにする google-services.json 設定ファイルを Firebase 機能を使いたいアプリの Android Studio プロジェクトの app モジュール下に コピー追加するよう促すダイアログに切り替わります。 クリックして、続行します。
  • 21. Firabase Crash Reporting を使ってみました21 Firebaseを アプリで利用するための基本手順 続行のクリックで、 Firebase 機能を使いたいアプリの Android Studio プロジェクトの ルートと、 app モジュール下にある build.gradle への追加設定を促すダイアログに切り替わります。 クリックして、設定を終了します。 Android Studio ルートの build.gralde 設定 buildscript { dependencies { // Firebase を使えるようにするプラグイン設定を追加 classpath 'com.google.gms:google-services:3.0.0'; } } Android Studio app/下の build.gralde 設定 dependencies{ // (補足)利用するFirebase機能のライブラリを追加 compile 'com.google.firebase:firebase-crash:9.0.2' } 設定記述の末尾に、プラグイン適用指定を追加 apply plugin: 'com.google.gms.google-services' 設定が反映されるにはSync( )が必要です。
  • 22. Firabase Crash Reporting を使ってみました22 Firebaseを アプリで利用するための基本手順 終了のクリックで、 Android アプリで Firebase の機能を使えるようにする google-services.json 設定ファイルがダウンロードされますので、 Firebase 機能を使うアプリのASプロジェクトに、前2ページ分の設定操作を行ってください。 ダウンロードした json 設定ファイルのコピー先 以下の設定後に、ASのツールバーから Sync( )を行って設定を反映します。 ASプロジェクト・ルートの build.gradle への追加設定 ダイアログの説明にない追加設定 ASプロジェクト・appモジュール下の build.gradle への 利用するFirebase機能の ライブラリをインポートする追加設定 ASプロジェクト・appモジュール下の build.gradle 末尾への追加設定
  • 23. Firabase Crash Reporting を使ってみました23 Firebase Crash Reporting の 特徴と注意点
  • 24. Firabase Crash Reporting を使ってみました24 Crash Reporting の特徴 (1) ● 現段階ではベータ版 ● 基本無料で利用可能 ● Googleアカウントがあれば利用可能 ● Google Play に登録/公開していないアプリでも利用可能 ● Firebase コンソールのプロジェクトへのアプリ・パッケージ名登録と、 アプリ側のルート下と、appモジュール下の build.gradle 設定と app 直下への json 設定ファイル追加のみで利用開始可能
  • 25. Firabase Crash Reporting を使ってみました25 Crash Reporting の特徴 (2) ● キャッチされなかった例外のレポートのみであれば、 現状コードへの追加実装も不要 ● エラーレポートには、 発生日時や端末情報に例外種別とスタックトレースも記録可能 ● 捕捉されたエラーは、 20分程度でエラーレポートに反映され&コンソールで確認可能 ● 例外や発生箇所や端末やAPI レベルなどで、 エラーレポートのフィルタリングも可能 ● エラーレポートへの任意例外の記録やカスタムログの追加も、 対応実装の追加で可能
  • 26. Firabase Crash Reporting を使ってみました26 Crash Reporting の特徴 (3) 【留意事項】 ● End user privacy Firebase Crush Reporting は、 クラッシュしたアプリ・ユーザのメールアドレスや電話番号など、          個人を特定できる情報を収集していません。 Googleさんとしては、 カスタムログに個人特定情報入れると、 自分たちに送ることになるので入れないでね!とのこと。 【以上の参照元】Firebase > Docs > GUIDE > Crash Reporting > Introduction Firebase Crash Reporting     https://firebase.google.com/docs/crash/
  • 27. Firabase Crash Reporting を使ってみました27 Crash Reporting の特徴詳細 ● Firebase Crash Reporting を使うには、 app モジュールの build.gradle の dependencies に、 Crash Report のライブラリをインポートする設定を追加します。 compile 'com.google.firebase:firebase-crash:9.0.2' ● 自動的にキャッチされない例外を捕捉して エラーレポートを記録しますが、それだけでなく、 下記のように、明示的にエラーレポートを記録させることもできます。  FirebaseCrash.report( new Exception("My first Android non-fatal error")); ● Firebase カスタムログ出力を使って、 エラーレポートに独自情報(カスタムログ出力内容)の                    追加もできます。  FirebaseCrash.log("Activity created");
  • 28. Firabase Crash Reporting を使ってみました28 Crash Reporting の注意事項 ● ProGurad を使うと、 エラーレポートのスタックトレースも難読化されます。 難読化を解除したい場合は、マッピングファイルのアップロードが 必要です。 (マッピングファイルの出力先は、下記のフォーマット) <project root>/<module name>/build/outputs/mapping/<build type>/<appname>-proguard-mapping.txt 例:app/build/outputs/mapping/debug/app-proguard-mapping.txt アップロードについては、スライドP.38を参照ください。 ● Crash Reporting と Analictics で報告されるエラー総数は、                   現在一致しません。
  • 29. Firabase Crash Reporting を使ってみました29 Crash Reporting 既知の問題 (1) ● クラッシュレポートは、バックプロセスで実行されます。 ● このため バックプロセス分の Application オブジェクトも生成され、 ライフサイクルなどのシステム・コールバック・メソッドも また実行されることになります。 ● Application オブジェクトのシステム・コールバックで、 プロセスをまたいで共有されるデータ(*1) の更新を行う場合、 マルチプロセス対応をしていないと思わぬ上書きが発生し、 同期問題が発生するのです。 onCreate()でDBの初期化などをしないようにしてください。         (*1) Shared Preferences や Database など
  • 30. Firabase Crash Reporting を使ってみました30 Crash Reporting 既知の問題 (2) ● 同期問題は、 プロセスをまたいでデータを共有する サードパーティ製のライブラリにもあてはまります。 これらのライブラリを使う際には、マルチプロセス対応の 有無を確認してから利用や対応を行ってください。 ● プロセスをまたいで共有されるデータは、 Content Providerを介して管理することが推奨されています。 【以上の参照元】Firebase > Docs > GUIDE > Crash Reporting > Android > Report Crashes Report Crashes https://firebase.google.com/docs/crash/android
  • 31. Firabase Crash Reporting を使ってみました31 Firebase Crash Reporting を 使ってみる
  • 32. Firabase Crash Reporting を使ってみました32 Firebase Crash Reporting を アプリから利用する  Firebase Crash Reporting は、  基本手順を踏めば任意のアプリに組み込めますが、  今回は、サンプルの crash プロジェクトを使ってみました。    組み込み手順については、  「Firebaseをアプリで利用するための基本手順」の具体例を参照ください。 アプリを起動すると表示される画面 チェックなしでクリックすると、 NullPointer例外が発生して アプリがクラッシュします。 チェックありでクリックすると、 NullPointer例外がキャッチされ、 何もなかったように振る舞います。
  • 33. Firabase Crash Reporting を使ってみました33 Firebase Crash Reporting を アプリから利用する Catch Crash チェックあり Catch Crash チェックなし アプリの実装 (抜粋) キャッチされない 例外を発生させて放置 捕捉した例外を カスタムログに出力し、 エラーレポートに記録
  • 34. Firabase Crash Reporting を使ってみました34 Firebase Crash Reporting で エラーレポートを記録させる  Firebase Crash Reporting の働きを確認するため、  1.チェックなしでボタンをクリックしてアプリをクラッシュさせる。  2.チェックありでボタンをクリックして例外を記録させる。  …を行った後、  Firebaseコンソールにログインして、            エラーレポートを確認します。
  • 35. Firabase Crash Reporting を使ってみました35 Firebase Crash Reporting の エラーレポート確認手順 (1) 予め Google アカウントで、 Chrome にログイン済であれば、 Console リンクをクリックすると Firebase コンソールが開きます。 firebase サイト firebase.google.com を開きます。 作成済みの Firebase を使用するプロジェクトを クリックして選択します。
  • 36. Firabase Crash Reporting を使ってみました36 Firebase Crash Reporting の エラーレポート確認手順 (2) 前ページでクリックされた、 Firebase を使用するプロジェクトに          切り替わります。 Firebase Crash Reporting の エラーレポートを確認するため Crash項目をクリックします。 右ペインが Crash Reporting に 切り替わります。
  • 37. Firabase Crash Reporting を使ってみました37 Firebase Crash Reporting の エラーレポート確認 (1) はじめは、チェックなしのクリックによる キャッチされない NulPointer例外がレポートされています。 スタックトレース詳細を確認するには、 例外発生元のリンクをクリックします。キャッチされない 例外のため 「致命的」と レポートされる。
  • 38. Firabase Crash Reporting を使ってみました38 Firebase Crash Reporting の エラーレポート確認 (2) はじめの、 キャッチされない NullPointer例外の スタックトレースが 表示されています。 ProGuard を使う場合は、 スタックトレース内容も 難読化されます。 難読化を解除するには、 マッピングファイルの アップロードが必要です。 前ページの エラー発生元リンクの クリックにより、 スタックトレース表示に 切り替わっています。
  • 39. Firabase Crash Reporting を使ってみました39 Firebase Crash Reporting の エラーレポート確認 (3) スタックトレース内容 だけでなく、端末の Androidバージョンや 空きメモリ状況なども レポートしてくれます。
  • 40. Firabase Crash Reporting を使ってみました40 Firebase Crash Reporting の エラーレポート確認 (4) 続いて、チェックを入れてキャッチされた例外のスタックトレースを表示しています。 遅れてレポートされた、 キャッチされて 実装側で任意レポートと カスタムログが出力された NullPointer例外の スタックトレースが 表示されています。 キャッチされた例外なので、 「非致命的」と レポートされています。
  • 41. Firabase Crash Reporting を使ってみました41 Firebase Crash Reporting の エラーレポート確認 (5) フィルタリング条件も、 アプリのバージョン番号や 端末のAPIバージョンに、 端末種類や日時などが 用意されています。
  • 42. Firabase Crash Reporting を使ってみました42 Firebase Crash Reporting の 雑感  …以上のように、  Firebase Crash Reporting は、  開発者側の設定を最小限にしようとしていることと、  エラーレポートでは、  細かなフィルタリング条件や、エラー端末情報が補足され、  単なるエラーチェックだけでなく、エラー分析に役立つよう  試みられており、  基本無償でありながら、モバイル・アプリの  品質や利用/収益改善の支援を目指していることは、                確かなように思えます。
  • 43. Firabase Crash Reporting を使ってみました43 ご清聴、ありがとうございました。 イメージなどを詰め込みすぎ、 資料が小さく読みづらかったことを          お詫びいたします。