【iOS, Realm】3分で完了！Realmファイル取得方法を解説

# Realmに保存されたデータを確認したい！


iOSアプリ開発でRealmを使用している際、シミュレーター上のRealmファイルを直接確認したいことがあります。この記事では、以下の手順を通してシミュレーター内のRealmファイルを取得する方法を解説します。

---

## **手順概要**

1. **`xcrun simctl list` でデバイスを特定**
2. **該当デバイスのディレクトリに移動し、アプリケーションを特定**
3. **Realmファイルを特定して取得**

---

## **手順 1: `xcrun simctl list` でデバイスを特定**

まず、シミュレーターで実行中のデバイス情報を確認します。

### **コマンド実行**

以下のコマンドをターミナルで実行します。

```bash
xcrun simctl list
```

### **出力例**

```
== Devices ==
-- iOS 16.4 --
    iPhone 14 (A1B2C3D4-5678-9101-1121-314151617181) (Booted)
    iPhone 14 Pro (E1F2G3H4-9101-1121-3141-516171819202) (Shutdown)
```

`(Booted)` と表示されているものが現在起動中のシミュレーターです。

この例では、iPhone 14 が起動しており、デバイスIDは `A1B2C3D4-5678-9101-1121-314151617181` です。このデバイスIDをメモしておきます。

---

## **手順 2: 該当デバイスのディレクトリに移動**

次に、該当デバイスのディレクトリにアクセスして、アプリケーションを特定します。

### **ディレクトリパス**

シミュレーターのデバイスデータは以下の場所に保存されています。

```bash
~/Library/Developer/CoreSimulator/Devices/{デバイスID}/data/Containers/Data/Application
```

### **移動方法**

以下のコマンドを使用して、該当するデバイスのアプリケーションデータディレクトリに移動します。

```bash
cd ~/Library/Developer/CoreSimulator/Devices/A1B2C3D4-5678-9101-1121-314151617181/data/Containers/Data/Application
```

### **アプリケーションの特定方法**

`Application` ディレクトリ内には、アプリごとに割り当てられたフォルダが並んでいます。それぞれのフォルダにはアプリのデータが保存されています。

```bash
ls
```

#### **出力例**

```
F2G3H4I5J6K7L8M9N0OPQRSTUVWX
G1H2I3J4K5L6M7N8O9PQRSTUVWXY
```

これらのフォルダがそれぞれアプリを指します。どのフォルダが目的のアプリかを確認するには、以下の方法を試してください。

1. **フォルダ内を直接確認する方法**
   各フォルダ内にはアプリのデータが保存されており、`Documents` ディレクトリや他の保存ファイルが含まれています。以下のコマンドで中身を確認し、目的のファイルがあるか確認してください。

   ```bash
   cd F2G3H4I5J6K7L8M9N0OPQRSTUVWX
   ls
   ```

2. **`info.plist` を確認する方法**
   各フォルダ内にはアプリに関連する `info.plist` ファイルが存在します。このファイルを参照して、アプリのバンドルIDや名前を確認できます。以下のコマンドで内容を確認してください。

   ```bash
   cat ./info.plist
   ```

3. **バンドルIDで特定する方法**
   アプリのバンドルIDが分かっている場合、以下の手順で特定することが可能です。

   - **バンドルIDを利用した検索**
     アプリのバンドルID（例: `com.example.app`）を使用して、`info.plist` を検索します。

     ```bash
     grep -r "com.example.app" .
     ```

     このコマンドは、現在のディレクトリ内のすべてのファイルを検索し、バンドルIDが一致するフォルダを特定します。

   - **検索結果を利用する**
     検索結果からバンドルIDが含まれるフォルダを特定し、そのフォルダに移動して内容を確認します。

     ```bash
     cd フォルダ名
     ls
     ```

目的のアプリケーションフォルダが特定できたら、次の手順に進みます。

---

## **手順 3: Realmファイルを特定して取得**

アプリのデータフォルダを特定したら、次にRealmファイルを探します。

### **Realmファイルのデフォルト保存場所**

通常、Realmファイルは `Documents` フォルダに保存されています。`default.realm` という名前で保存されているのが一般的です。

### **特定方法**

アプリケーションのディレクトリ内で以下のコマンドを実行して、Realmファイルを検索します。

```bash
find . -name "*.realm"
```

#### **出力例**

```
./Documents/default.realm
```

この結果で、Realmファイルの保存場所が特定できます。

### **Finderで開く**

ファイルをFinderで開きたい場合、以下のコマンドを実行します。

```bash
open ./Documents/default.realm
```

これにより、Finderが起動して指定の場所が表示されます。

---

## **補足: ファイルパスをアプリでログ出力する**

アプリ内から直接Realmファイルの保存場所を確認したい場合は、以下のコードを利用してログに出力する方法もあります。

```swift
import RealmSwift

func logRealmPath() {
    if let realmPath = Realm.Configuration.defaultConfiguration.fileURL {
        print("Realm file path: \(realmPath.path)")
    } else {
        print("Realm file path not found.")
    }
}
```

---

## **まとめ**

これで、シミュレーター上のRealmファイルを取得する手順は完了です。以下のポイントを確認して作業を進めてください。

- デバイスIDを正確に特定する
- アプリケーションディレクトリに移動してデータを確認する
- Realmファイルを検索・取得する

データ確認には **Realm Studio** を使用すると、データ構造が視覚的に確認できるのでおすすめです！

---

## **参考リンク**

- [Realm公式ドキュメント](https://www.mongodb.com/docs/realm/)
- [simctl コマンドの公式リファレンス](https://developer.apple.com/documentation/xcode/simctl)