SwiftUIでアプリを開発する際、アプリのシーンを定義するWindowGroupとDocumentGroupが重要な役割を果たします。これらはアプリの構造を定義する際に使用されるSceneの種類で、それぞれ異なる目的に合わせて設計されています。
この記事では、これら二つのシーンタイプの特徴と使い分けについて解説します。

WindowGroupとは?
WindowGroupは、SwiftUIアプリの最も一般的なシーンタイプで、単一のウィンドウまたはビュー階層を表します。
一般的なシングルウィンドウアプリ、マルチプラットフォームアプリ、またはタブを持つアプリなど、様々なタイプのアプリケーションに使用されます。
特徴と使用例
- 多目的性: 様々なタイプのアプリケーションに適用可能。
- シンプルなUI: 主に単一のビューまたはナビゲーションを持つビュー階層の構築に使用。
- プラットフォーム間の共通性: iOS、macOS、watchOS、tvOSなど、複数のプラットフォームで共通の構造を持つアプリに適しています。
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
DocumentGroup
DocumentGroupは、ドキュメント中心のアプリケーション向けに設計されたシーンタイプです。
ユーザーがドキュメントを作成、開く、編集するためのUIを提供します。
主にテキストエディタ、画像編集ソフトウェア、その他のファイルベースのアプリケーションに使用されます。
特徴と使用例
- ドキュメント指向: ドキュメントを中心にしたアプリケーションの設計に適しています。
- ファイル管理: ドキュメントの新規作成、保存、開封などの操作を簡単に行えるUIが提供されます。
- マルチドキュメントUI: macOSなどで複数のウィンドウをサポートするアプリケーションに適しています。
@main
struct MyDocumentApp: App {
var body: some Scene {
DocumentGroup(newDocument: MyDocument()) { file in
ContentView(document: file.$document)
}
}
}
使い分けのポイント
- 一般的なアプリ:
WindowGroupは最も汎用的で、特定のドキュメントを扱わないアプリに適しています。 - ドキュメント中心のアプリ:
DocumentGroupはドキュメント操作を中心としたアプリに特化しており、ファイルベースのインタラクションが必要な場合に使用します。
各アプリの目的とニーズに応じて、これらのSceneを適切に選択することが重要です。
目的に応じたアプリの構造を適用することで、効率的に開発を進めることができるようになります。


