xcrun simctl runtimeは、Xcodeにインストールされたシミュレータランタイム(各OSバージョンのディスクイメージ)を操作するサブコマンドである。
listオプションを使うと、インストール済みのランタイム一覧をコマンドラインから確認できる。
基本的な使い方
引数なしで実行すると、OS種別ごとにグループ化されたランタイムの一覧が表示される。
$ xcrun simctl runtime list
== Disk Images ==
-- iOS --
iOS 26.4.1 (23E254a) - 3406665B-D890-4FD9-8049-5CCEA3CE6C30 (Ready)
iOS 26.1 (23B86) - 64826868-DCBA-44BD-87E9-DB2B3493E5CC (Ready)
iOS 26.0 (23A343) - 260CDACB-4FDE-4256-88FE-6F28F65FC5F9 (Ready)
iOS 26.2 (23C54) - 979CE6D4-FEF5-4BCC-B422-8A260CF6E1BA (Ready)
iOS 26.5 (23F77) - 6AA84C51-722D-4002-B3AB-5EA021F23327 (Ready)
iOS 18.3.1 (22D8075) - C82AEB0B-3476-4364-B327-476E2B8A97A7 (Ready)
iOS 17.5 (21F79) - 88EADE1A-9246-4A89-85D2-99CF52F98EAB (Ready)
Total Disk Images: 7 (53.8G)
バージョン、ビルド番号、UUID、状態(Readyなど)に加えて、末尾に合計サイズも表示される。
詳細情報を表示する
-vオプションを付けると、各ランタイムのマウントパスやイメージの種類、サイズなどの詳細情報も表示される。
$ xcrun simctl runtime list -v
== Disk Images ==
-- iOS --
iOS 26.4.1 (23E254a) - 3406665B-D890-4FD9-8049-5CCEA3CE6C30
State: Ready
Image Kind: Patchable Cryptex Disk Image
Signature State: Verified
Deletable: YES
Mounting Mode: Disk Image Mount
Mount Policy: Automatic
Mount Path: /Library/Developer/CoreSimulator/Volumes/iOS_23E254a
Image Path: /System/Library/AssetsV2/...
Size: 7.9G
Bundle Path: /Library/Developer/CoreSimulator/Volumes/iOS_23E254a/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 26.4.simruntime
Supported Architectures: arm64
Parent Mount Path: /System/Library/AssetsV2/...
xcrun simctl runtime add/deleteでiOSシミュレータランタイムを追加・削除する で不要なランタイムを削除する際の判断材料として、個々のランタイムのサイズやマウントパスを確認したい場合に有用である。
JSON形式で出力する
-j(--json)オプションで、結果をJSON形式で標準出力に出力できる。
$ xcrun simctl runtime list -j
実際に出力を確認したところ、トップレベルの構造は配列ではなく、ランタイムのUUIDをキーとするオブジェクト(連想配列)になっていた。
{
"6AA84C51-722D-4002-B3AB-5EA021F23327" : {
"build" : "23F77",
"deletable" : true,
"identifier" : "6AA84C51-722D-4002-B3AB-5EA021F23327",
"kind" : "Patchable Cryptex Disk Image",
"state" : "Ready",
"version" : "26.5",
...
},
...
}
配列だと思ってjq '.[0]'のように数値インデックスでアクセスしようとすると、Cannot index object with numberというエラーになるため、UUIDをキーとしたオブジェクトである点に注意する。
jq '.[]'で全要素を列挙する分には、配列・オブジェクトのどちらでも同様に動作する。
JSONをファイルに出力する
--json-outputでJSONの出力先ファイルを指定できる。
ただし実際に試したところ、-jを付けずに--json-outputだけを指定すると、標準出力には通常のテキスト形式の一覧が表示され、指定したファイルは中身が空のまま作成されるだけだった。
$ xcrun simctl runtime list --json-output=runtimes.json
== Disk Images ==
...
-jと--json-outputを組み合わせて初めて、指定したファイルにJSONが書き出され、標準出力には何も表示されなくなる。
$ xcrun simctl runtime list -j --json-output=runtimes.json
同様に--json-fdでファイルディスクリプタを指定する場合も、-jとの併用が必要だった。
$ exec 3>runtimes.json
$ xcrun simctl runtime list -j --json-fd=3 3>&3
活用例: CIでのランタイム構成の確認
CI環境でどのランタイムがインストールされているかを確認したい場合、-jでJSON化してjqなどで加工すれば、特定のバージョンが存在するかのチェックや、サイズの大きいランタイムの洗い出しをスクリプトで自動化できる。
$ xcrun simctl runtime list -j | jq -r '.[].version'
インストール済みランタイムのバージョン一覧を機械的に取得できるため、想定外のランタイムが残っていないかをCIのステップに組み込んで継続的にチェックできる。
