壊れたsimctlのフラストレーション
今日、React Nativeのビルド中にシミュレータを起動しようとしたところ、通常のデバイスリストの代わりに、ターミナルにこの厄介なエラーが表示されました。
xcrun: error: unable to find utility "simctl", not a developer tool or in PATH
このエラーは通常、Xcodeのアップデート後や、安定版とベータ版(Xcode 15からXcode 16への移行など)を切り替えた際によく発生します。これは典型的な設定の不一致です。コマンドラインでiOSのワークフローを行っている場合、このエラーは致命的です。シミュレータの起動、ビルドのインストール、さらには利用可能なデバイスのリスト表示さえもできなくなります。
なぜこれが発生するのか?
問題は、Macにsimctlがないことではありません。真の原因は、デベロッパーツールを探すヘルパーであるxcrunが、アクティブなXcodeディレクトリを見失っていることにあります。
ほとんどのシステムでは、デフォルトで/Library/Developer/CommandLineToolsにあるスタンドアロンのCommand Line Toolsパスが設定されています。これらは基本的なgitやC++のタスクには問題ありませんが、simctlは含まれていません。この特定のユーティリティは、フル版のXcode.appバンドルの中にのみ存在します。パスがスタンドアロンツールを指している場合、xcrunはそれを見つけられず、エラーをスローします。
クイック修正:Xcode.appを指定する
30秒でできる修正方法は、xcode-selectを手動でメインのXcodeインストール先に指定することです。ほとんどの開発者はXcodeをApplicationsフォルダに入れているため、次のコマンドを実行してください。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
プロンプトが表示されたらMacのパスワードを入力してください。完了したら、simctlが復旧したかテストします。
xcrun simctl list devices
シミュレータのリストが表示されれば解決です。
Xcode設定による恒久的な修正
マウスを使いたいですか?XcodeのUI内でこの設定を切り替えることもでき、再起動やシステムアップデート後も設定を維持できます。
- Xcodeを開く。
Cmd + ,を押してSettings(設定)を開く。- Locationsタブをクリックする。
- 下部にあるCommand Line Toolsドロップダウンを探す。
- 実際のXcodeバージョン(例:「Xcode 15.4 (15F31d)」)を選択する。
ここでバージョンを選択することは、sudoコマンドで行ったことと全く同じですが、Xcodeが実際にインストールを認識しているか確認する良い方法です。
複数のXcodeバージョンを使用する場合
モバイル開発者は、Xcode-16-Beta.appと安定版のXcode.appのように、複数のバージョンを使い分けることがよくあります。切り替えるたびに、コマンドラインのパスが分からなくなることがあります。これはよくある悩みです。
私は、これらのエイリアスを.zshrcファイルに追加することで時間を節約しています。新しいベータ版が出るたびに長いパスを入力する必要はもうありません。
alias use-xcode-stable='sudo xcode-select -s /Applications/Xcode.app/Contents/Developer'
alias use-xcode-beta='sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer'
これで、プロジェクトを切り替えるときにuse-xcode-stableと入力するだけで、ツールが即座に同期されます。
修正の確認
セットアップが確実であることを確認するために、次の3つのチェックを行ってください。
- パスの確認:
xcode-select -pを実行します。/Applications/Xcode.app/Contents/Developerが返されるはずです。 - simctlのテスト:
xcrun simctl helpを実行します。エラーではなく、ドキュメントが表示されるはずです。 - バージョンの確認:
xcodebuild -versionを実行して、期待通りのバージョンを使用しているか確認します。
まだ動作しませんか?
Xcode.appをサブフォルダに移動したり名前を変更したりした場合、xcrunがうまく動作しないことがあります。パスを一度完全にリセットしてから、再度設定してみてください。
sudo xcode-select --reset
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
最後に、環境変数DEVELOPER_DIRが設定を上書きしていないか確認してください。echo $DEVELOPER_DIRを実行します。もしパスが表示されたら、.zshrcまたは.bash_profileからその行を削除してください。xcode-selectに自然に任せるのが最善です。

