【Xcodeシミュレータ】Unable to boot device due to insufficient system resourcesメッセージへの対応

【Xcodeシミュレータ】Unable to boot device due to insufficient system resourcesメッセージへの対応

こんにちは、こばやしよしのり @yoshiii514 です。

Xcodeでシミュレータを実行したときに「Unable to boot device due to insufficient system resources」メッセージが表示され、実行が停止することがあります。その対応方法を解説します。

「Unable to boot device …」メッセージの意味

【Xcodeシミュレータ】Unable to boot device due to insufficient system resourcesメッセージへの対応

メッセージの内容
Unable to boot device due to insufficient system resources.
The current system settings are not sufficient to allow booting additional simulators: maxFiles:12288,openFiles:10790,enforceFilesBuffer:1868
Please see Simulator Help for information on adjusting resource limits.
日本語訳
システムリソースが不足しているため、デバイスを起動できません。
maxFiles:12288,openFiles:10790,enforceFilesBuffer:1868 現在のシステム設定では、追加のシミュレータを起動するのに十分ではありません。
リソースの制限を調整する方法については、シミュレータのヘルプを参照してください。

シミュレータを起動したいのですが、実行するためにはリソースが足りていないです。足りていないリソースはファイルのオープン数です。

「insufficient system resources.(システムリソース不足)」への対策

シミュレータのヘルプページに対策が記載されています。そのヘルプページには次の手順でたどり着けます。

手順1.[Simulatorメニュー]->[Help]->[Simulator Help]

【Xcodeシミュレータ】Unable to boot device due to insufficient system resourcesメッセージへの対応

手順2.[目次]を出して->[Troubleshoot Simulator]->[Insufficient resources]

【Xcodeシミュレータ】Unable to boot device due to insufficient system resourcesメッセージへの対応

ヘルプページに書いてある対策をまとめると次のとおり。

  • 起動しているムダなアプリケーションや実行しているプロセス(処理)を終了する
  • シミュレータが複数起動している場合は終了する
  • Macを再起動するまでシステムの制限値を上げる

動いているムダなアプリを終了するのが、一番簡単にシミュレータを動かす方法です。
「システムの制限値」については、次で解説します。

Macのシステムの制限値

「launchctl limit」というコマンドを叩くと、macOSの制限値の一覧が出力されます。

~ % launchctl limit
    cpu         unlimited      unlimited
    filesize    unlimited      unlimited
    data        unlimited      unlimited
    stack       8388608        67104768
    core        0              unlimited
    rss         unlimited      unlimited
    memlock     unlimited      unlimited
    maxproc     11136          16704
    maxfiles    256            unlimited

僕のOSでは「maxfiles 256 unlimited」なので、soft(ソフト制限)が256ファイルオープン数、hard(ハード制限)がunlimited(無制限)という意味です。softとhardの違いは、softが一般ユーザが変更できる上限値で、hardはrootが変更できる上限値を意味します。

この上限値を次のコマンドで一時的に変更します。今回はファイルオープン数の上限値を無制限にします。「sudo」をつけて、root権限で変更します。

~ % sudo launchctl limit maxfiles unlimited unlimited
~ % launchctl limit maxfiles
    maxfiles    10240          10240

これは一時的なので、OSを再起動するともとの上限値に戻ります。
これでシミュレータが起動できます。

この記事がお役に立てましたら、ぜひTwitterで感想をお聞かせください😊

たった3ヶ月でマスタできるiPhoneアプリ開発集中オンライン講座開講!
たった3ヶ月でマスタできるiPhoneアプリ開発集中オンライン講座開講!
本書「iPhoneアプリ開発集中講座」を執筆している現役エンジニア講師陣が直接に指導!
基礎、課題実習で実践力を鍛えて、オリジナルアプリ公開までチャレンジ!
充実した転職支援もあるので、エンジニアへ転職したい人にもおすすめです!
現役エンジニアに相談できる無料相談会を開催中!