LoginSignup
4
3

More than 3 years have passed since last update.

Unity Standaloneアプリケーションで使えるクラッシュレポート解析ツール

Last updated at Posted at 2020-12-24

本記事は、サムザップ Advent Calendar 2020 #2 の12/25の記事です。

クラッシュレポート解析ツールをStandaloneアプリケーションでも使えるようにした時のことを執筆していこうと思います。

ツール選び

調べてみると世の中には意外と多くのクラッシュレポート解析ツールがあるんですね。
候補となったツールは以下の通りです。

ツール名 対応プラットフォーム
Smart Beat Android, iOS, Webアプリ
Firebase Crashlytics Android, iOS
Unity Cloud Diagnostics PC, Mac, Linux, Android, iOS, WebGL
App Center Diagnostics Android, iOS
Unity BackTrace Xbox, Google Stadia, PS4, iOS, Android, Windows, Mac, Linux
Splunk MINT iOS, Android, HTML5, Windows 8, Windows Phone
Crittercism iOS, Android, Windows Phone, HTML5
DeployGate iOS, Android
Bugsnag iOS, Android, macOS, Windows, WebGL
RAYGUN Windows Desktop, Mac, iOS, Android
Countly iOS, Android, Windows
InstaBug iOS, Android

Windowsに対応されているもので、Unityプラグインがあって、料金もそこそこで、レポート数の上限がそこそこ多くて、Smart Beatと同じような機能を備えてて…(けっこう条件が厳しい)
最終選考まで通過したのはBugsnagRAYGUNで、最終的に選んだのはBugsnagの方でした!
iOS, Android, macOS, Windows, WebGLに対応されており、必要だったのはWindowsですが、将来Macも対応することになっても安心。

今回はそんなBugsnagの使い方をご紹介します。

Bugsnag紹介

ダッシュボードを開くとレポートの一覧が現れます。同じレポートはまとめて表示してくれてます。

レポートを選択すると、まとめられたレポートが全件表示されます。
レポート毎にスタックトレースや端末情報、ユーザ情報が確認でき、パンくずも見れます。
パンくずはアプリ側で自由に設定できます。

Bugsnag実装

まずはUnityパッケージ入手

BugsnagトップページからPricesを選択すると各プランごとのお値段が現れます。
LiteプランでもStandardプランでもどちらでも良いので「START FREE TRIAL」ボタンを押してメールアドレスなどを登録するとUnityパッケージとAPIキー(後述)が入手できます。

準備をしよう

UnityパッケージをインポートしたらUnity側でレポートを通知するための準備をしていきましょう。
BugsnagのUnityガイドがあるので簡単です。
英語だけど画像もあり、すごくわかりやすい。

GameObjectを作成します。

作成したGameObjectにBugsnagBehaviourをAddComponentします。

BugsnagBehaviourのインスペクタにAPIキーを登録します。
APIキーはBugsnagのアカウントを登録した際に発行されます。

GameObjectを作らずコードからでもBugsnagの初期化が行なえます。

Bugsnag.Init("your-api-key-here");

レポートを送信しよう

Excptionが発生した場合や、エラーログが出力された場合は自動的にBugsnagがレポートの送信を行います。
レポートを自動送信するログレベルはBugsnagBehaviourのインスペクタNotify Levelから設定できます。
コードからでも設定できます。

Bugsnag.Configuration.NotifyLevel = LogType.Warning;

レポートを意図的に送信することもできます。

Bugsnag.Notify(new System.Exception("Non-fatal"));

カスタマイズしてみよう

送信するレポートをカスタマイズすることができます。
以下の方法でレポートに任意の情報を付加させることができます。

Bugsnag.Metadata.Add("system", new Dictionary<string, string>() {
  { "subsystem", "Player Mechanics" }
});

パンくずを使ってみよう

レポートが送信されるまでにどのような遷移をたどったのかを設定したりできます。
使用用途は自由なので任意の情報を残すことができます。

Bugsnag.LeaveBreadcrumb(
  "Button clicked",
  BreadcrumbType.Navigation,
  new Dictionary<string, string>() {{ "panel", panel.Name }}
);

ユーザーIDを設定しよう

各レポートの影響を受けるユーザ数を調査するのに役立ちます。
デフォルトで一意のIDが設定されますが、ソシャゲであればおそらくユーザーを一意に識別するIDが存在するかと思います。
ゲーム内でのユーザーIDを設定しておけば、対象のユーザーに起きた事象を調査することができます。

Bugsnag.User.Id = "userId";

最後に

Bugsnagいかがでしたでしょうか?
自分は実装してみてなんて簡単なんだ!と驚きました。

SmartBeatより劣る点としてはスクリーンショット撮影機能がないことですね。
スマホのゲーム制作を開始する段階でPCでの配信も視野に入れている場合はBugsnagを検討してみても良いかと思います。

※説明を端折った部分もあるのでもっと詳しく知りたい方は公式ドキュメントを参考にしてみてください。

以上となります。
メリークリスマス&良いお年を!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3