Swift Academy · レッスン

アプリのサンドボックスディレクトリ

Documents、Caches、一時保存場所を使用します。

レッスン 4/413 ステップ

「アプリのサンドボックスディレクトリ」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

アプリのサンドボックスディレクトリ

アプリはサンドボックス内で実行されるため、自身のコンテナ内にしか書き込めません。ドキュメント、キャッシュ、一時ファイル用の標準フォルダが用意されています。

Documentsディレクトリの取得

FileManager.urls(for:in:)は、既知のディレクトリのURLを返します。.documentDirectoryには、バックアップ対象にするユーザーデータを保存します。

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
print("Documents path ends correctly: \(docs.lastPathComponent)")

ファイルURLの構築

ディレクトリURLにファイル名を追加すると、自分のファイルの完全なパスを取得できます。

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
let file = docs.appendingPathComponent("profile.json")
print(file.lastPathComponent)

Cachesディレクトリ

.cachesDirectoryには再生成できるデータを保存します。ディスク容量が不足するとシステムによって削除される可能性があるため、ここにかけがえのないデータを保存してはいけません。

import Foundation

let fm = FileManager.default
let caches = fm.urls(for: .cachesDirectory, in: .userDomainMask).first!
print("Caches dir name: \(caches.lastPathComponent)")

一時ディレクトリ

FileManager.default.temporaryDirectoryは、短期間だけ使うファイル用の作業領域を提供します。使用後は自分で削除してください。

import Foundation

let tmp = FileManager.default.temporaryDirectory
let scratch = tmp.appendingPathComponent("work.tmp")
print("Temp file path ready: \(scratch.lastPathComponent)")

DocumentsとCachesとTempの違い

ユーザーが作成したデータ(バックアップ対象)にはDocuments、再生成可能なデータにはCaches、使い捨てのファイルにはtmpを使用します。

import Foundation

// Choose the right folder for the data's lifetime.
print("Documents = backed up, Caches = purgeable, tmp = transient")

Application Support

.applicationSupportDirectoryには、データベースなど、ユーザーが直接操作しないアプリ管理データを保存します。通常は初回起動時に作成します。

import Foundation

let fm = FileManager.default
let support = fm.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
try? fm.createDirectory(at: support, withIntermediateDirectories: true)
print("Ensured Application Support exists")

Documentsへの保存

ディレクトリURLと書き込み処理を組み合わせると、サンドボックス内にユーザーデータを永続化できます。

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
let url = docs.appendingPathComponent("note.txt")
try? "hello".write(to: url, atomically: true, encoding: .utf8)
print("Saved into Documents")

読み戻し

サンドボックス内のファイルは、パスがコンテナ内で完全に有効なため、他のファイルURLと同じ方法で読み取れます。

import Foundation

let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
let url = docs.appendingPathComponent("note.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
    print(text)
}

バックアップからの除外

再生成可能な大容量ファイルにはisExcludedFromBackupリソース値を設定し、iCloudバックアップが不要に大きくならないようにします。

import Foundation

var url = URL(fileURLWithPath: "/tmp/big.cache")
var values = URLResourceValues()
values.isExcludedFromBackup = true
try? url.setResourceValues(values)
print("Marked excluded from backup")

サンドボックスが重要な理由

サンドボックスのパスはインストールごと、デバイスごとに異なるため、ハードコードしてはいけません。必ず実行時にFileManagerでディレクトリを解決してください。

import Foundation

// Never hardcode /var/mobile/... — resolve at runtime instead.
let fm = FileManager.default
let docs = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
print("Resolved Documents dynamically: \(!docs.path.isEmpty)")

確認問題

バックアップが必要なユーザーデータは、どのディレクトリに保存すべきですか。

まとめ

アプリはFileManager.urls(for:in:)で解決したサンドボックスフォルダにファイルを保存します。バックアップ対象のユーザーデータにはDocuments、再生成可能なデータにはCaches、一時的なファイルにはtmpを使用し、さらにApplication Supportも利用します。パスは実行時に解決し、決してハードコードしないでください。これでFile I/Oコースは完了です。

無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
122
レッスン
409

よくある質問

「アプリのサンドボックスディレクトリ」レッスンは無料ですか?

はい。「アプリのサンドボックスディレクトリ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「アプリのサンドボックスディレクトリ」で何を学びますか?

Documents、Caches、一時保存場所を使用します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「アプリのサンドボックスディレクトリ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. URLとファイルパス
  2. データの読み書き
  3. ディレクトリの管理
  4. アプリのサンドボックスディレクトリ
← Swift Academyに戻る