【Spatial.ioメタバース】Debug.Logの確認方法



[**Spatial.io**](https://www.spatial.io/) で開発を行っていく際に、動作確認や不具合の原因究明のために Debug.Log を出力し、その内容を確認したい場面があるかと思います。この記事では、Spatial.io のメタバース環境で Debug.Log を確認する方法について解説します。


# 1. 動作環境

- Windows 11
- Unity 2021.3.44f1
- **Spatial Creator Toolkit**
- Web ブラウザ（今回はChrome）

# 2. 実際のコードとUnityエディタでの確認

UnityでC#スクリプトを作成し、`Debug.Log()`, `Debug.LogWarning()`, `Debug.LogError()` を使用してメッセージを出力する簡単な例を以下に示します。

```csharp
using UnityEngine;

public class DebugLogExample : MonoBehaviour
{
    void Start()
    {
        // 通常のデバッグメッセージを出力
        Debug.Log($"[DebugLogExample] これは通常のデバッグメッセージです。");

        // 警告メッセージを出力
        Debug.LogWarning($"[DebugLogExample] これは警告メッセージです。");

        // エラーメッセージを出力
        Debug.LogError($"[DebugLogExample] これはエラーメッセージです。");
    }
}
```

### 解説：

- 上記のスクリプト（ `DebugLogExample.cs` ）を作成しUnityゲーム内のGameObjectにアタッチします。
- `Start()` メソッドは、シーン開始時に一度だけ呼び出され、それぞれのログメッセージを出力します。

### Unityエディタ内での確認：

Unityエディタでシーンを再生すると、コンソールウィンドウ（メニュー: Window > General > Console）に以下のようにログが表示されます。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4047011/7df54d5d-dc91-4d27-b8d4-5e9c1ff5e279.png)

# 3. Spatial.io環境でのログ確認方法

Unityエディタでログが確認できたら、次はSpatial.io環境での確認です。主なアプローチは以下の通りです。

1. `F12` で開発者ツール起動
2. `Console` タブを選択
3. フィルタに `[DebugLogExample]` を追加して関連ログのみを表示

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4047011/e57cc139-bc33-45c1-9462-13c6373cfc03.png)

# 4. Spaital ILoggingService の解説

**`ILoggingService`** は Spatial Creator Toolkit で提供されるロギングサービスで、エラーログの管理と表示を行います。
現在はコンソールにエラーを記録するだけですが、将来的には開発者が確認できるリモート サーバーにログを記録するサービスを提供する予定です。
2つのオーバーロッドがあり、用途に応じて使い分けます。

## **1. LogError(string, Exception, Dictionary<string, object>)**

### **概要：**

- エラーメッセージを主に指定し、必要に応じて例外や追加データも付加できます。

### **シグネチャ：**

```csharp
void LogError(
	string message,
	Exception exception = null,
	Dictionary<string, object> data = null
)
```

### 使用例：

```csharp
using System;
using System.Collections.Generic;
using SpatialSys.UnitySDK;

public class LoggingExample : MonoBehaviour
{
    void Start()
    {
        try
        {
            // 例外を発生させるコード
            throw new InvalidOperationException("無効な操作が行われました。");
        }
        catch (Exception ex)
        {
            // エラーメッセージと例外をログに記録
            SpatialBridge.loggingService.LogError(
                "エラーが発生しました。",
                ex,
                new Dictionary<string, object>
                {
                    { "詳細", "追加のデータやコンテキスト情報" }
                }
            );
        }
    }
}
```

## **2.LogError(Exception, Dictionary<string, object>)**

### 概要：

- Exception オブジェクトを主に指定し、必要に応じて追加データを付加できます。

### シグネチャ：

```csharp
void LogError(
	Exception exception,
	Dictionary<string, object> data = null
)
```

### 使用例：

```csharp
using System;
using System.Collections.Generic;
using SpatialSys.UnitySDK;

public class LoggingExample : MonoBehaviour
{
    void Start()
    {
        try
        {
            // 例外を発生させるコード
            throw new NullReferenceException("オブジェクト参照が設定されていません。");
        }
        catch (Exception ex)
        {
            // 例外と追加データをログに記録
            SpatialBridge.loggingService.LogError(
                ex,
                new Dictionary<string, object>
                {
                    { "操作", "データの読み込み" },
                    { "ユーザーID", 12345 }
                }
            );
        }
    }
}
```

## まとめ

Spatial.io環境でのデバッグログ確認は、まずUnityエディタ内で Debug.Log 系を使い徹底的に行い、その後ブラウザの開発者コンソールを補助的に使用するのが基本的な流れとなります。

より詳細なエラー情報や将来的なプラットフォーム連携を考慮する場合は、SpatialBridge.loggingService.LogError の活用を検討しましょう。

ログを効果的に活用して、より快適なメタバース開発を進めましょう。