Unityクライアントだってオブザーバビリティを実現したい！

ゲームなどでよく使われるUnityクライアント
サーバサイドはAPMでみていたとしても、オブザーバビリティの観点からユーザの状況も把握してサービス提供したいと思いますよね？
New RelicでもUnityクライアントを見ることができるようになりました！
これでサーバサイドと合わせてUnityクライアントを使ったサービスでもオブザーバビリティを実現しましょう

:::note info
このアップデートの詳細はこちら。
[New Relic アップデート(2024年1月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202401)
[New Relic アップデート](https://newrelic.com/jp/blog/nerdlog/new-relic-update "New Relic アップデート")
:::

:::note info
ゲーム運用におけるオブザーバビリティについて知りたい方はこちら。
[ゲーム運用におけるオブザーバビリティとは？](https://qiita.com/ume67026265/items/dcdf8e79f2f90f8e8093)
:::


## Unity エージェントの要件
Unity エージェントをインストールする前に、Unity アプリが次のバージョン要件を満たしていることを確認してください。

Android API 24 以上([ドキュメント](https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile-android/get-started/new-relic-android-compatibility-requirements/))
iOS 10 以上([ドキュメント](https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile-ios/get-started/new-relic-ios-compatibility-requirements/))

詳しいドキュメントは[こちら](https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile-unity/monitor-your-unity-application/)をご参照ください

## Unity エージェントでできること
下記のような情報を取得し、可視化することが可能になります（2024年３月２５日現在)
最新情報はこちらの[github](https://github.com/ndesai-newrelic/newrelic-unity-agent)をご参照ください

・C#エラーの記録とキャプチャ
・ネットワーク計測
・分散トレース
・UnityEngineデバッグログ、Assert、エラーの追跡
・処理された例外
・インタラクションとその作成順序のキャプチャ
・ユーザーセッションを追跡するためにユーザー情報をNew Relicに渡す
・インタラクションとしてのシーンナビゲーション
・ネイティブ C++ エラーのキャプチャ

## 導入方法
実際にUnityのサンプルプロジェクトにSDKを導入してみます(詳しいドキュメントは[こちら](https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile-unity/monitor-your-unity-application/))

(1)Package Managerを開き、「Add package from git URL...」をクリック
![unitysdk01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/44d81687-79ac-d9f5-a6d2-8e4c17382497.jpeg)

(2)git URL　を追加し「Add」をクリック
![unitysdk02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/938bd864-a51e-77d9-3791-dd4d27d9a698.jpeg)

(3)インストールされると下図のように追加される
![unitysdk04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/ec4589e4-b113-13c3-9abd-351f01c7b0ff.png)

(4)New RelicからMobile -> Unity をクリック
![unitysdk03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/ae7ff205-e2c5-7065-6f7b-af73b5160b87.jpeg)

(5)Android、iOSを選択できます。今回は例としてiOSを選択した場合で進めます
![unitysdk05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/b478dbc2-035f-77fc-12e8-ef78bb8e19e8.png)

(6)ウィザードに従いすすめ、iOS用のAppTokenを取得する
![unitysdk06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/51076919-cdd1-39cc-621c-857c797d8831.png)

（７）UnityIDEの Tool -> New Relic をクリックし　(6)で取得したAppTokenを入力し、「Add Token」をクリック
![unitysdk07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/a4f685e6-f86a-8044-1f3a-872c06418c81.jpeg)

(8)iOSの場合は以下の手順を実施します(Androidの場合は[ドキュメント](https://docs.newrelic.com/jp/docs/mobile-monitoring/new-relic-mobile-unity/monitor-your-unity-application/)をご参照ください)
Assets ->  External Dependency Manager -> Settings をクリック
![unitysdk08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/202ad636-164a-5251-e77a-b2035286f172.jpeg)

(9)Podfile Configurations」セクションで、次の設定を確認し「OK」をクリック
・Add use_frameworks! to Podfileが「無効」
・Always add the main target to Podfileが「有効」
![unitysdk09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/83fd2f68-86f4-4edd-1e44-63ce6af06d6a.jpeg)

(10)iOS の依存関係管理に Podfile を使用していない場合は、次の手順を実施してください
New Relic XCFramework SDK (iOS エージェント) を[こちら](https://docs.newrelic.com/jp/docs/release-notes/mobile-release-notes/ios-release-notes/)から最新版をダウンロード
![unitysdk11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/7494414c-f680-e16d-5be4-40e63426e494.jpeg)
SDKを解凍し、Finder から、 NewRelicAgent.xcframeworkフォルダを Xcode プロジェクトにドラッグし、Targets Frameworks ペインに配置

この後通信を行うことでNew Relicからデータが見えるようになります！

## データを見てみる
他のMobile Agentと同様にNew Relicの「Mobile」からデータを見ることができます
例えばC#のエラーを確認したい場合、ERRORS ->  Handled exceptions から確認することが可能です。
![unitysdk10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/69f7eae1-aef2-b46d-38d8-8269f4e48054.jpeg)

他にもHTTPリクエストだけでなく、カスタムでユーザIDやBreadcrumbを追加することも可能です。

## まとめ
Unityのゲームアプリのユーザ体験を可視化することで、クライアントエンジニアとバックエンドエンジニアが1チームとしてゲームの運用をより効率的に行うことができるようになります。
問題点の切り分けを迅速に行うことで、ユーザ体験が向上し、よりユーザ満足度の高いゲーム開発に注力することが可能になります。
是非Unityを使ったゲーム開発を行なっている方は、Unity SDKを活用しオブザーバビリティを実現してください！！

:::note info
ゲーム運用におけるオブザーバビリティについて知りたい方はこちら。
[ゲーム運用におけるオブザーバビリティとは？](https://qiita.com/ume67026265/items/dcdf8e79f2f90f8e8093)
:::

:::note info
このアップデートの詳細はこちら。
[New Relic アップデート(2024年1月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202401)
:::
:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::
:::note info
[New Relic株式会社のQiita Organization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::