02
単一TargetのコードとPreviewデータ
Cannot preview in this file の切り分け
Cannot preview in this file が表示された場合、最初にそのSwiftファイルが現在のTargetに含まれているか確認します。Previewマクロが有効な構文になっているか、対象プラットフォームがSchemeと一致しているかも確認します。
本体アプリが起動することだけでは、Previewが正常とは判断できません。Previewでは、Viewの生成時に実行される初期化処理やサンプルデータの作成が、通常起動時と異なる条件で失敗する場合があります。
まず画面を次のように縮小します。
- 固定文字列だけを表示するViewにする
- Environmentの注入を一時的に減らす
- Observableな状態を固定値に置き換える
- ネットワーク、ファイル、データベースの初期化を外す
- 成功した状態から依存関係を1つずつ戻す
最初に失敗した依存関係が分かれば、Canvas全体の問題ではなく、Preview用データまたは初期化処理の問題です。実際のAPI、ログイン状態、端末固有の保存データを読み込むPreviewは、再現性が低く、チームで共有する診断材料にもなりません。
SwiftDataと外部サービスの分離
データ駆動型の画面では、Preview専用のインメモリデータ、固定されたサンプル、差し替え可能なサービスを用意します。プロダクション用データベースへ直接接続したり、ログイン済みのシングルトンを前提にしたりすると、オブジェクト生成失敗、空データ、View描画失敗を区別できなくなります。
確認は一度に全部行わず、次の順で分けます。
- Modelまたはコンテナの生成だけを確認する
- 固定データが存在するか確認する
- データを使わないViewが描画できるか確認する
- 非同期処理を外した状態でCanvasを更新する
- 外部サービスをモックへ戻し、最初に壊れた層を記録する
SwiftDataの特定バージョンに関する挙動は、Appleの公式文書や該当するXcode 26リリースノートで確認します。開発者フォーラムの個別報告だけを根拠に、OSやXcode全体の不具合と断定するのは避けてください。