Data Container を実機からシミュレータへ

はじめに

WWDC 2026 で発表された Device Hub では、シミュレータの色々なデバイス設定を GUI から触れるようになっています。その中に Data Container を GUI で交換できる機能があって、これをきっかけに Data Container まわりを改めて整理してみました。

Device Hub とは

Xcode 27 に同梱されるスタンドアロンアプリで、実機もシミュレータも同じ UI から Data Container を扱えるのが特徴です。WWDC 2026 で出たばかりなので、ここでは細かい解説は控えます。気になる方は WWDC のセッション動画を覗いてみてください。

WWDC26: Get the most out of Device Hub

引き継げるもの

アプリのサンドボックス (Data Container) がまるごと引き継げます。UserDefaults や Core Data、ユーザー生成のファイルなど、アプリが書き込んだ状態は基本的にそのまま再現されます。

Xcode 26 までのやりかた

Device Hub が登場する前から、実は Xcode の Window → Devices and Simulators (Shift + Cmd + 2) で Data Container の Download / Replace は可能でした。実機を選んで Installed Apps のアプリを選択し、省略記号ボタン () をクリックすると Download Container / Replace Container が並びます。実機の状態を .xcappdata で抜いて別の端末に戻す、といった運用はずっと前からできていました。

Devices and Simulators ウィンドウの Installed Apps から Download Container を選んでいる様子

シミュレータは GUI からは触れませんでしたが、CLI や Finder からなら差し替えることはできました。xcrun simctl get_app_container <device> <bundle-id> data でアプリの Data Container の絶対パスを取れるので、open $(xcrun simctl get_app_container ...) で Finder を開いてドラッグで差し替える運用です。<device>booted を渡すと起動中のシミュレータを自動で選んでくれます (例: xcrun simctl get_app_container booted <bundle-id> data)。

上記の手順で実機の Data Container をシミュレータに流し込むと、検索履歴などのサンドボックス内のデータがそのまま復元されます。

Before
実機の Data Container 適用前のシミュレータ。最近の検索は空
After
実機の Data Container 適用後のシミュレータ。最近の検索に Swift が復元されている

まとめ

普段の手触りで操作する実機でこそ発生する不具合がある中、サンドボックスの状態をそのままシミュレータに持ち込めるのは開発体験の向上と言えそうです。Xcode 27 が使えるようになったら積極的に活用していきたいと思います。

参考リンク