Xcode vs VS Code
Apple公式のIDEであるXcodeと、Microsoftの人気エディタVS CodeがiOS開発で対決。あなたにとってより効率的なツールはどちらか。
構造化されたブランチ戦略 — main、develop、feature、release、hotfix
単一のメインブランチ、頻繁なコミット、フィーチャーフラグによる安全なデプロイ
| カテゴリー | Git Flow | Trunk-Based Development |
|---|---|---|
| パフォーマンス | 6/10 | 9/10 |
| 学習のしやすさ | 5/10 | 7/10 |
| エコシステム | 8/10 | 9/10 |
| コミュニティ | 8/10 | 9/10 |
| 求人市場 | 8/10 | 9/10 |
| 将来性 | 5/10 | 10/10 |
# Git Flow - 完全なワークフロー例
# 初期セットアップ
git flow init -d
# ブランチ: main, develop, feature/, release/, hotfix/
# 新機能の開発
git flow feature start user-profile-redesign
# → feature/user-profile-redesign ブランチが作成された
# 開発プロセス
git add src/views/ProfileView.swift
git commit -m "feat(profile): redesign user profile card"
git add src/viewmodels/ProfileViewModel.swift
git commit -m "feat(profile): add avatar lazy loading"
# 機能完成 — developにマージ
git flow feature finish user-profile-redesign
# → featureブランチが削除され、developにマージされた
# リリース準備
git flow release start 2.4.0
# → release/2.4.0 ブランチが作成された
# releaseブランチではバグ修正のみ!
git commit -m "fix: avatar cache invalidation on logout"
git commit -m "chore: bump version to 2.4.0"
# リリース完了
git flow release finish 2.4.0
# → mainにマージ、タグ作成(v2.4.0)、developへ再マージ
# 本番障害の検出
git flow hotfix start fix-crash-on-launch
git commit -m "fix: nil pointer in AppDelegate startup"
git flow hotfix finish fix-crash-on-launch
# → mainとdevelopにマージ、v2.4.1タグ# Trunk-Based Development - 日々のワークフロー
# 毎朝: 最新の状態から始める
git pull origin main
# 短命なfeatureブランチ(最大1〜2日!)
git checkout -b feat/quick-login-improvement
# 小さく原子的なコミット
git add src/views/LoginView.swift
git commit -m "feat: add biometric login button"
git add tests/LoginTests.swift
git commit -m "test: biometric auth unit tests"
# 即座にtrunkへマージ(未完成でもフィーチャーフラグで!)
git checkout main
git pull origin main
git merge feat/quick-login-improvement
git push origin main
git branch -d feat/quick-login-improvement
# フィーチャーフラグで未完成の機能を隠す(Swift)
# FeatureFlags.swift
enum FeatureFlag: String {
case newLoginUI = "new_login_ui"
case profileV2 = "profile_v2"
case darkModeV3 = "dark_mode_v3"
}
class FeatureFlagService {
static func isEnabled(_ flag: FeatureFlag) -> Bool {
// リモートコンフィグまたはローカルオーバーライドから読み取る
return RemoteConfig.shared.bool(forKey: flag.rawValue)
}
}
// Viewでの使用
if FeatureFlagService.isEnabled(.newLoginUI) {
NewLoginView()
} else {
LegacyLoginView()
}
# CI/CDパイプライン(GitHub Actions)
# .github/workflows/ci.yml:
# on: push (branches: [main])
# → lint → test → build → deploy staging → smoke test → deploy productionウェブサービスやSaaS製品にとってTrunk-Based Developmentはモダンな標準です — CI/CDとの完璧な親和性、高速なイテレーションが特徴です。iOSアプリケーションにおいては、簡略化されたGit Flow(mainとfeatureブランチのみ)が実用的です:App Storeの審査プロセスとリリースサイクルにより適しています。GitHub Flow(main + 短命なfeatureブランチ)は良い中間案です。
無料相談を受けるGitHub Flowは簡略化されたバージョンです:mainとfeatureブランチのみが存在します。releaseブランチやdevelopブランチはありません。小規模〜中規模チームに最適な中間案です。