データを保存する|SwiftData で、アプリを閉じても消えない記録を作る
このレッスンの要点
- SwiftData は、アプリのデータを保存して、次に開いたときも残しておくための Apple のしくみです
- 保存したいものの形を
@Modelで書き、画面には@Queryで出します。書くのは Claude Code にまかせられます - 配信したあとでデータの形を変えるときは、使っている人のデータを消さないように、版を分けて移す計画を立てます
SwiftData とは
何も用意しないと、アプリに入れた記録は、アプリを終了すると消えてしまいます。Apple の、アプリのデータを保存するためのしくみ。アプリを閉じても、入れたデータが残るようにします。
くわしく見る は、データを保存して、次に開いたときも残しておくための Apple のしくみです。保存先は、はじめは端末の中です(設定すれば iCloud で同じ人のほかの端末と同期することもできますが、このコースでは使いません)。
シミュレーターで確かめるときは、記録を入れたら少し待ってから Xcode の Stop で止めて、もう1回 Run します。SwiftData は変えたものをときどき自動で保存するしくみなので、入れた直後に止めると、まだ保存されていないことがあります。すぐに保存したいときは、保存のボタンを押したときにすぐ保存するよう、Claude Code に頼めます。
4つの役目
SwiftData のコードは、4つの役目に分かれています。自分で書く必要はありませんが、Claude Code が何をしたかを読むときの目印になります。
| コードの目印 | 役目 | たとえると |
|---|---|---|
| @Model | 保存するものの形を決める | 記録カードの欄(日付・内容・時間) |
| modelContainer | 保存の置き場所をアプリにつける | カードをしまう引き出し |
| modelContext | 足す・直す・消す | 引き出しを開け閉めする手 |
| @Query | 保存したものを画面に出す | 引き出しの中を、新しい順にならべて見せる |
Claude Code への頼み方
「何を保存するか」を項目で伝えれば、4つの役目のコードは Claude Code が書きます。iCloud の同期は、Apple のサービスの設定も必要になるので、最初の版では「まだしないで」と伝えておきます。
データを端末の中だけに保存し、インターネットに送らないアプリなら、レッスン6で答える App Store のプライバシーの質問も答えやすくなります。Apple の説明では、データを端末の外に送ることを「収集」と呼ぶからです。
あとから形を変えるときは慎重に
配信したあとに「メモの欄も足したい」となることがあります。そのとき、使っている人の iPhone には、前の形で保存された記録がもう入っています。形を変えるときは、その記録を消さないように気をつけます。
変える前に ファイルの変更を「記録(コミット)」として残しておく道具。いつでも前の状態を見たり、戻したりできます。
くわしく見る で記録を残しておくと、うまくいかなかったときに戻せます(コース3のレッスン8)。
「画面に出ていれば、保存もできている」わけではありません
やってみよう
- レッスン3で作った一覧の画面に、何を保存したいか(例:日付・内容・時間)を書き出します
- 下の依頼文を Claude Code に送って、SwiftData で保存できるようにしてもらいます
- Xcode でシミュレーターに記録を2〜3件入れ、少し待ってから Xcode の Stop で止め、もう1回 Run して、残っているかを確かめます
- 記録を消す・直すもできるようにしてもらい、同じように確かめます
確認問題
自分のアプリで保存したいものを「日付・内容・時間」のように、3つまでの項目で書いてみましょう。
この記事の用語
コース5 iPhoneアプリ編の目次
- 1iPhoneアプリができるまでの全体図✓ できた
- 2Xcode と SwiftUI のはじめ方✓ できた
- 3画面を作る✓ できた
- 4データを保存する✓ できた
- 5TestFlight で試してもらう✓ できた
- 6審査に出して配信する✓ できた