はじめに
Claude Codeと**MCP(Model Context Protocol)**を使って、ゼロからmacOSアプリを開発し、App Store申請までの実体験を記載。
開発したアプリ
GlassTimer(旧:HiTimer) - macOS用カウントダウンタイマーアプリ
| 項目 | 内容 |
|---|---|
| プラットフォーム | macOS 13.0以降 |
| 開発言語 | SwiftUI |
| 開発期間 | 約3時間 |
| ステータス | App Store審査中(2025/11/04時点) |
時間が経過したら作業画面を覆ってタイムアップを通知してくれるもの。

必要なもの
- App Developerに登録する勇気(年99ドル)
- Claude Code
これだけです。Claude Codeがあれば、開発経験がなくてもApp Store申請まで進められます。
Claude CodeとMCPとは?
Claude Code
Anthropic社のAIコーディングアシスタント(VS Code拡張機能を使用)
セットアップ方法:https://note.com/npaka/n/n3d754c78f439
MCP(Model Context Protocol)
LLMがツールと連携するためのオープンスタンダード
使用したMCPサーバー:
- XcodeBuildMCP: Xcodeプロジェクト操作・ビルド・テスト
- Obsidian MCP: 開発ログの記録
- VOICEVOX MCP: 音声通知
今回のMVP:XcodeBuildMCP:
「プロジェクトを作って」と依頼するだけで、Xcodeプロジェクトの準備、ビルド設定し、特に、自分でビルドしてテストするのが凄まじいです。 - このMCPを設定しておくだけで、ビルドエラーが皆無になります。(エラーがあったら自分で治すので)。
URL: XcodeBuildMCP
開発フロー
| ステージ | 期間 | 内容 | Claude Codeの活用 |
|---|---|---|---|
| Stage 1: プロトタイプ | 1時間 | 基本UI実装、タイマーロジック、円形プログレスバー | 「円形プログレスバーを作って」→ 即座にSwiftUIコード生成 |
| Stage 2: 機能拡張 | 1時間 | マウススクロール設定、99:59:59対応、色変化、通知 | 段階的な要求追加に柔軟対応 |
| Stage 3: Xcode移行 | 1時間 | SPM→Xcodeプロジェクト移行 | 自動移行・設定完了 |
| Stage 4: App Store準備 | 2時間 | アイコン生成、ビルド設定、証明書設定、Privacy Policy作成 | アイコン生成スクリプト自動生成 |
| Stage 5: App Store審査、リジェクト対応 | ←イマココ | 審査対応、リジェクト理由の修正 | リジェクト理由の分析と対応文の作成支援 |
具体例
Stage 1: プロトタイプ
依頼: 「円形のプログレスバーで残り時間を表示するタイマーを作って」
結果: Claude Codeが即座にSwiftUIコードを生成
Circle()
.trim(from: 0, to: progress)
.stroke(LinearGradient(...), style: StrokeStyle(lineWidth: 8))
.rotationEffect(.degrees(-90))
.animation(.linear, value: progress)
追加依頼: 「もう少し太くして」「色を変えて」→ 即座に反映
Stage 2: 機能拡張
依頼1: 「マウスホイールで時間を増減できるようにして」
結果: .onScrollWheel イベントハンドラを即座に生成
依頼2: 「スクロール量に応じて増減量を変えたい」
結果: ロジックを改善(速いスクロールは5分単位、普通は1分単位)
let amount = abs(delta) > 5 ? 300 : 60
Stage 3: Xcode移行
依頼: 「App Store申請できるようにXcodeプロジェクトに移行して」
結果:
- Workspace + SPM Package構成を自動セットアップ
- XCConfig、Hardened Runtime、App Sandbox設定を自動適用
Stage 4: App Store準備
依頼: 「App Store申請に必要なアイコンサイズを全部作って」
結果: アイコン生成スクリプトを自動生成(全10サイズ対応)
依頼: 「App Store申請に必要な設定を追加して」
結果: XCConfigにHardened Runtime、dSYM生成、カテゴリ設定などを自動追加
Stage 5: App Store審査対応
現在、App Store審査中です。リジェクトされた場合は、Claude Codeにリジェクト理由を見せて対応方法を相談し、修正・再提出します。
遭遇したトラブルと解決
| トラブル | 問題 | Claude Codeの対応 | 結果 |
|---|---|---|---|
| 警告地獄 | Xcode推奨設定の警告20項目 | 「警告を全部消して」→ Shared.xcconfigに自動追加 | ✅ 警告完全解消 |
| ビルドエラー | アプリ名変更でHiTimer.app not found
|
PRODUCT_NAMEとPRODUCT_DISPLAY_NAMEの違いを即座に診断・修正 |
✅ 即座に解決 |
トラブル1の詳細
問題: Xcode推奨設定の警告が大量発生
対応: Shared.xcconfigに以下を自動追加
ALWAYS_SEARCH_USER_PATHS = NO
USE_HEADERMAP = YES
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES
// ... 計15項目
トラブル2の詳細
問題: アプリ名をHiTimer→GlassTimerに変更したらビルド失敗
修正:
PRODUCT_NAME = HiTimer # ビルド時のファイル名
PRODUCT_DISPLAY_NAME = GlassTimer # ユーザーに表示される名前
Claude Codeの実践的なコツ
1. 明確に伝える
| 悪い例 | 良い例 |
|---|---|
| 「タイマーを作って」 | 「macOS向けのカウントダウンタイマー。圧倒的に美しく、時間の儚さを表現。SwiftUIで実装、線形プログレスバー、常に最前面表示」 |
| → 誰にも刺さらないアプリができる | → macOS特有の設定含む美しいタイマーができる |
2. 段階的に要求を追加
- 「基本的なカウントダウンタイマーを実装」
- 「マウススクロールで時間調整」
- 「残り時間が少なくなったら色を赤く」
メリット: 各ステップで動作確認、文脈理解しやすい、問題特定が容易
3. UIが意図しない状況になったらキャプチャして指示
Claude Codeは画像も認識するので、「なんか違う」と思ったらキャプチャして画像で指示する
4. MCPサーバーを積極活用
- XcodeBuildMCP: 「プロジェクトを作って」→ Xcodeプロジェクト自動生成、ビルド・テスト実行
- VOICEVOX MCP: 作業の都度都度で音声で報告してくれる & 癒される
- Obsidian MCP: 「今日の作業をまとめて」→ 自動で開発ログ生成
メリット: 作業の区切りが明確、自動ドキュメント化、開発の流れが記録される
App Store申請の補足
Privacy Policyページの作成
-
App Store申請にはPrivacy Policyページが必須です。STUDIOを使ってPrivacy Policyページを作成しました。
-
STUDIOを使えば、テンプレートから必要な情報を入力するだけで、App Store審査に通るPrivacy Policyページが簡単に作成できます。
-
- 今回作成したHP: GlassTimer Privacy Policy
