ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
典型的なディレクトリ構成
MyApp/
├── MyApp.xcodeproj/ # プロジェクトファイル
│ ├── project.pbxproj # 実体 (テキスト、Git 管理対象)
│ ├── xcuserdata/ # ユーザ別設定 (Git 除外)
│ └── project.xcworkspace/
├── MyApp.xcworkspace/ # ワークスペース (Pod 利用時)
├── MyApp/
│ ├── AppDelegate.swift # アプリエントリポイント (UIKit)
│ ├── SceneDelegate.swift # シーン管理 (iOS 13+)
│ ├── MyAppApp.swift # SwiftUI のエントリポイント
│ ├── ContentView.swift # SwiftUI ビュー
│ ├── ViewController.swift # UIKit のビュー
│ ├── Main.storyboard # UI レイアウト (UIKit)
│ ├── LaunchScreen.storyboard # 起動画面
│ ├── Assets.xcassets/ # 画像 / カラー / アイコン
│ ├── Info.plist # アプリ設定
│ └── MyApp.entitlements # 権限設定
├── MyAppTests/ # 単体テスト
│ └── MyAppTests.swift
├── MyAppUITests/ # UI テスト
│ └── MyAppUITests.swift
├── Package.swift # SwiftPM パッケージ定義
├── Package.resolved # 依存バージョンロック
├── Podfile # CocoaPods 定義
├── Podfile.lock # CocoaPods バージョン
├── Pods/ # CocoaPods 依存ライブラリ
├── .gitignore
└── README.md
1. プロジェクト / ワークスペース
| ファイル / ディレクトリ | 役割 | Git |
|---|---|---|
.xcodeproj | プロジェクト本体 (バンドル形式) | ○ |
.xcodeproj/project.pbxproj | プロジェクト構造の実体 (テキスト) | ○ (コンフリクト多発) |
.xcodeproj/xcuserdata/ | ユーザ固有の UI 状態 | × (gitignore) |
.xcodeproj/xcshareddata/ | 共有スキーム | ○ |
.xcworkspace | 複数プロジェクトの入れ物 | △ (Pod 等) |
重要: CocoaPods を使うプロジェクトでは .xcworkspace のほうを開く。.xcodeproj を開くと Pod ライブラリがリンクされません。
2. アプリエントリポイント
| ファイル | UI フレームワーク | 役割 |
|---|---|---|
AppDelegate.swift | UIKit | アプリのライフサイクル (起動 / 終了 / 通知) |
SceneDelegate.swift | UIKit (iOS 13+) | シーン (Window 単位) のライフサイクル |
MyAppApp.swift | SwiftUI | @main 付きのエントリ |
main.swift | macOS | 従来の main 関数 (任意) |
// AppDelegate.swift (UIKit)
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: ...) -> Bool {
return true
}
}
// MyAppApp.swift (SwiftUI)
import SwiftUI
@main
struct MyAppApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
3. Info.plist — アプリ設定
アプリのメタ情報をすべて持つ XML ファイル:
| キー | 意味 |
|---|---|
CFBundleIdentifier | Bundle ID (com.example.myapp) |
CFBundleVersion | ビルド番号 |
CFBundleShortVersionString | 表示バージョン (1.0.0) |
UILaunchStoryboardName | 起動画面の Storyboard |
UISupportedInterfaceOrientations | 対応する画面向き |
NSCameraUsageDescription | カメラ利用の説明 (権限ダイアログ) |
NSLocationWhenInUseUsageDescription | 位置情報利用の説明 |
NSAppTransportSecurity | HTTPS 強制設定 |
LSApplicationQueriesSchemes | 外部アプリ起動の許可リスト |
CFBundleIdentifier
com.example.myapp
CFBundleVersion
1
CFBundleShortVersionString
1.0.0
NSCameraUsageDescription
QR コード読み取りに使用します
4. UI 関連
| ファイル | 役割 |
|---|---|
Main.storyboard | UIKit の UI レイアウト (ビジュアルエディタ) |
LaunchScreen.storyboard | 起動画面 (静止画推奨) |
ContentView.swift | SwiftUI のビュー |
ViewController.swift | UIKit のビューコントローラ |
*.xib | 個別 View レイアウト (古い) |
5. リソース
| ファイル | 役割 |
|---|---|
Assets.xcassets | 画像 / アプリアイコン / カラー / シンボル |
AppIcon.appiconset | アプリアイコン (各サイズ) |
AccentColor.colorset | アクセントカラー |
Localizable.strings | 多言語化文字列 |
InfoPlist.strings | Info.plist の多言語化 |
6. パッケージ管理
| ツール | 主要ファイル | 説明 |
|---|---|---|
| Swift Package Manager | Package.swift / Package.resolved | Apple 純正、Xcode 統合 |
| CocoaPods | Podfile / Podfile.lock / Pods/ | 古参、依然多数のライブラリ対応 |
| Carthage | Cartfile / Cartfile.resolved | Apple 純正でないが軽量 |
# Podfile の例
platform :ios, '15.0'
use_frameworks!
target 'MyApp' do
pod 'Alamofire', '~> 5.6'
pod 'SnapKit'
pod 'RxSwift', '~> 6.0'
end// Package.swift の例
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MyLib",
products: [
.library(name: "MyLib", targets: ["MyLib"]),
],
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.6.0"),
],
targets: [
.target(name: "MyLib", dependencies: ["Alamofire"]),
]
)
7. 配布・署名
| ファイル | 役割 |
|---|---|
*.entitlements | App Sandbox / Push / iCloud 等の権限 |
*.mobileprovision | プロビジョニングプロファイル |
*.cer / *.p12 | 署名証明書 |
*.xcconfig | ビルド設定 (Debug / Release 別) |
8. テスト
| ディレクトリ | 役割 |
|---|---|
MyAppTests/ | 単体テスト (XCTest) |
MyAppUITests/ | UI テスト (XCUITest) |
9. .gitignore の典型
# Xcode
*.xcuserstate
*.xcuserdata/
xcuserdata/
DerivedData/
# CocoaPods (チームによっては Pods/ をコミットする派閥もある)
# Pods/
# Carthage
Carthage/Build/
# SwiftPM
.swiftpm/
.build/
# macOS
.DS_Store
# Fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/
fastlane/test_output/
FAQ
Q: project.pbxproj のマージコンフリクト多発
A: git config merge.union 設定や XcodeGen / Tuist でプロジェクトをテキスト定義から生成するアプローチで回避。
Q: Info.plist がプロジェクトに無い
A: Xcode 13+ は Info.plist をビルド設定に統合。「Build Settings → Info.plist Values」で編集。
Q: Pods/ をコミットするべき?
A: チームポリシー次第。コミット派 = CI が速い / 確実。非コミット派 = リポジトリが軽い。Podfile.lock は必ずコミット。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?