【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で感想をお聞かせください😊

動画で学ぶiOSアプリ開発講座を公開!
「体験しながら学ぶ」最短での脱初心者カリキュラムiPhoneアプリ開発集中講座[オンライン版]Mac・Xcode12・iOS14・Swift5.3・SwiftUI完全対応
「体験しながら学ぶ」ことで、最短での脱初心者を目指すアプリ開発講座です。

【本講座に含まれているもの】
・全額返金保証
・Swift文法解説
・SwiftUI完全対応
・サンプルアプリ6本作成
・チャットサポート(Slack)

執筆陣が徹底解説、サポートをします💪
 【先行ユーザー特典!先着10名様40,000円OFF】 iPhoneアプリ開発集中講座[オンライン版]