UE4にSentryを入れてエラー監視を楽にする

# Sentry
[Sentry](https://sentry.io/welcome/)はエラー監視をやってくれるプラグインです。
UnityやWebアプリではよく使われてますがUE4、UE5に対応してるのに使ってる話をきかないので
「そんなもったいない！入れるだけでどこでクラッシュしてるかのQAとかはかどるのに！」
ってことでオイラが記事にしまーす（ΦωΦ）


# Sentryの準備
Sentryのプラグインは[こちらのGithub](https://github.com/getsentry/sentry-unreal/releases)からもってきます。
今回は4.27を使います。
5.0はUE5用なのでこのあと記事にします。
プロジェクトは好きなテンプレート使ってOKです。
ただ、Sentryを呼び出したり拡張したりがし易いようにクラスをやサブシステム作ったりできるように
C++で作っておくと楽でーす。

こんな感じにプラグインを入れておきます
```
-MyGame
  -MyGame.uproject
  -Config
  -Content
  -Plugins
    -Sentry
      -Sentry.uplugin
      - :
```

そして、プロジェクトのbuild.csにも追記しておきます
```
-MyGame
PublicDependencyModuleNames.AddRange(new string[] { ..., "Sentry" });
```

その後プラグインが読み込まれたことを確認して
DSNを登録する箇所があるのでそこに必要なURLを入れます
URLに関しては登録したときに発行されるのでそちらを確認してください

![sentry.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/282360cb-2198-65e5-f1de-4399324868d1.png)


■クラッシュポイント設定
クラッシュレポータエンドポイントの設定
クラッシュ レポーターとデバッグ ファイルが含まれるようになったので、UE4 はクラッシュをどこに送信するかを知る必要があります。
そのためには、"Client Keys" 設定ページにあります。
```
engine-dir\Engine\Programs\CrashReportClient\Config\DefaultEngine.ini
```
ここの
DataRouterUrl　を変更します

それではそのへんの対応ができた
ってところでいきなりやると大変なので

サンプルプロジェクトがあるのでそれを使ってから
移植していくのが良いと思います。

それでは、[サンプルプロジェクト](https://github.com/getsentry/sentry-unreal/tree/main/sample)からイベントとクラッシュをさせてみましょう

起動するとこんな画面になりメッセージやイベント、クラッシュが出ます
では
イベントの押してみますー
![sentry4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/dfa6f3e3-9b22-0b18-1132-60405e07ff87.png)

Sentyの管理画面のissuesにイベントやクラッシュ報告が出ます

![sentry5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/637f4470-84bc-9160-4987-3b101ac66da1.png)

イベント通知が来てますね！

イベントの中身を見るとどこで呼ばれたのか
何かしらの問題などの情報が見れます。
![sentry6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/881a348f-e092-4bfc-175f-9cb228cd05e2.png)

さらに、登録者の情報や
ゲームのIDやバージョンなども登録できるので
ユーザー情報を保持するタイプのゲームの場合
どんなユーザーがどんなイベント、エラーを踏んだのかを追いかけることができます。
さらに、アプリのバージョンやエンジンのバージョンものせられるので
開発中のデバッグでもう修正されてるエラーの報告があっても無駄な調査をしなくて済みます。
![sentry7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/743b3855-a301-16d3-3827-64755b61c4ee.png)


次はクラッシュさせてみます。

クラッシュのボタンを押すと
クラッシュレポートが出てきてー

![sentry8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/8f37f3a6-92c8-9224-32fc-7071f511b97e.png)


管理画面にクラッシュの報告が来てます。
![sentry9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/2abf6ae5-a9a1-286b-b1e6-8d05a22e1d98.png)

まず、クラッシュした端末の情報とどんなクラッシュなのか
GPUの情報も飛んできます

![sentry10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/a7b7e546-630c-17e1-e59e-06dd173e3954.png)

次にエラー箇所なのですが
今回はぬるぽですねー。

![sentry11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/2b00d9cf-377e-5a1a-87a0-233283e22479.png)

ちなみに、場所はコードにあるのですがここです

![sentry12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/a25766ee-bec5-975d-2be5-0a09b543e636.png)

コールスタックもちゃんと出てます！
![sentry5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62400/f4fbf78a-0a46-2c33-0aa7-9d693cdb89e0.jpeg)



他にもAssertにも対応してますので、開発中のデバッグで
「どこで起きたかわからないバグ」を調査や
「どのプラットフォームで起きたのかわかりにくい」なども
この管理画面で絞ることができるので便利です。

UE5でも使えるのでぜひ簡単にエラー監視を導入したい方や会社さんで使ってみてください（ΦωΦ）