| この記事の要点 |
|
テンプレートとは
Xcode で新しいプロジェクトを作るとき、最初に選ぶ「ひな形」がテンプレートです。選んだテンプレートに応じて、起動に必要なソースファイル、画面の定義、設定ファイル(Info.plist 相当の設定やアセットカタログ)が自動で作られます。後からコードで何でも追加できるため、テンプレートの選択でできることが制限されるわけではありません。最初の雛形が違うだけです。
テンプレートの選択画面は「File」→「New」→「Project...」で開きます。画面上部で Multiplatform / iOS / macOS などのプラットフォームを選び、その下の Application 欄からテンプレートを選びます。新しい Xcode では、起動時の Welcome 画面から App をそのまま選んで作成することもできます。
現在の Xcode の主なテンプレート(iOS / Application)
| テンプレート | 用途 | 選ぶ場面 |
|---|---|---|
| App | 1 画面だけの最小構成のアプリ | ほとんどのアプリ。学習用もこれ |
| Document App | ファイルを開く・編集する・保存するアプリ | テキストエディタ、画像編集など「書類」を扱うアプリ |
| Game | ゲーム向け。SpriteKit などのゲーム用フレームワークを選んで作成 | 2D / 3D ゲーム |
| Augmented Reality App | カメラ映像に 3D コンテンツを重ねる AR アプリ | ARKit を使うアプリ |
| iMessage App | メッセージアプリの中で動く拡張 | メッセージ内で使うミニアプリ |
| Sticker Pack App | メッセージ用ステッカー(スタンプ)だけのアプリ | 画像を登録するだけでコード不要 |
表示されるテンプレートの種類や名前は Xcode のバージョンによって変わります。手元の Xcode で表示されるものを確認してください。Application 欄の下には、Framework や Static Library など、アプリ本体ではなく部品(ライブラリ)を作るためのテンプレートも並んでいます。
App を選んだ後のオプション
テンプレートを選ぶと、次の画面でプロジェクトのオプションを指定します。開発への影響はこちらの方が大きいので、意味を理解してから選びましょう。
| 項目 | 選択肢と目安 |
|---|---|
| Product Name | アプリ名(ホーム画面の表示名の初期値にもなる) |
| Team | 署名に使う Apple アカウント。シミュレータだけなら未設定でも可、実機で動かすときは必要 |
| Organization Identifier | com.example のような逆ドメイン形式。Product Name と合わせて Bundle Identifier になる |
| Interface | SwiftUI(現在の標準)か Storyboard(UIKit、従来方式) |
| Language | Swift か Objective-C。Objective-C は Storyboard を選んだ場合のみ |
| Storage など | Core Data や SwiftData を最初から組み込むかどうか(Xcode 15 以降。バージョンにより項目が異なる) |
新しく学ぶなら SwiftUI + Swift がおすすめです。既存の UIKit の解説書やサンプルに沿って学ぶ場合は、Storyboard を選ぶと手順が一致しやすくなります。
旧テンプレート一覧(Xcode 11 以前)
Xcode 11 までは、画面構成ごとに細かくテンプレートが分かれていました。古い書籍や記事に出てくる名前は次のとおりです。
| 旧テンプレート | 内容 | 現在の作り方 |
|---|---|---|
| Single View App | 1 つのビューのみ用意されている。最低限の機能のみ | App テンプレート |
| Game | ゲーム向け | Game テンプレート(存続) |
| Augmented Reality App | AR 向け | Augmented Reality App テンプレート(存続) |
| Document Based App | ドキュメントの閲覧 / 操作向け | Document App テンプレート |
| Master-Detail App | 項目リストからそれぞれの詳細に遷移するアプリ向け | App + SwiftUI の NavigationStack / NavigationSplitView(UIKit なら UINavigationController / UISplitViewController) |
| Page-Based App | ページング処理があるアプリ向け | App + SwiftUI の TabView に .tabViewStyle(.page)(UIKit なら UIPageViewController) |
| Tabbed App | 画面下部がタブボタン(アイコンボタン)で区切られるアプリ向け | App + SwiftUI の TabView(UIKit なら UITabBarController) |
| Sticker Pack App | iMessage のステッカー用アプリ | Sticker Pack App(存続) |
| iMessage App | iMessage 用アプリ | iMessage App(存続) |
古い記事の手順で「Tabbed App を選ぶ」と書かれていても、現在の Xcode にはその選択肢がありません。App で作成してから、タブなどの画面構成をコードで追加してください。
タブ画面を App テンプレートから作る例(SwiftUI)
import SwiftUI
struct ContentView: View {
var body: some View {
TabView {
Text("ホーム")
.tabItem { Label("ホーム", systemImage: "house") }
Text("設定")
.tabItem { Label("設定", systemImage: "gearshape") }
}
}
}
このように、旧テンプレートが自動で用意していた構成は数行のコードで再現できます。テンプレートを選び間違えたと思っても、作り直す必要はほとんどありません。
テンプレート選びでよくある疑問
学習用にはどれを選べばいい?
App を選び、Interface は SwiftUI にします。Apple 公式のチュートリアル(SwiftUI Tutorials など)もこの構成が前提です。
ゲームを作るなら Game テンプレートが必須?
必須ではありません。Game テンプレートはゲーム用フレームワークの初期設定とサンプル描画が入っているだけです。Unity など別のゲームエンジンを使う場合は Xcode のテンプレートは使わず、エンジン側から Xcode プロジェクトを書き出します。
AR アプリはシミュレータで動く?
カメラとモーションセンサーを使うため、AR 機能の確認には ARKit に対応した実機が必要です。
確認方法
作成したプロジェクトは、ツールバーで実行先のシミュレータ(iPhone の機種)を選び、Run ボタン(Command+R)を押すと起動できます。App テンプレートなら「Hello, world!」と地球のアイコンが表示されれば正常です(表示内容は Xcode のバージョンによって異なる場合があります)。
関連
- Swift入門|iOS・macOSアプリ開発言語の特徴とObjective-Cとの違い
- シミュレーターまとめ | Android / iOS / VM / API テスト用ツール一覧
- Unity でゲームをビルドする方法(Windows / Mac / Android / iOS / WebGL)
- Android Studio 完全ガイド (Hedgehog / Iguana / Compose / Profiler)
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38