7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コードを1行も書かずに25,000行のiOSアプリを作った話 ― Claude Codeで完全Vibe Coding

7
Last updated at Posted at 2026-02-26

あらまし

  • Claude Codeだけで155ファイル・25,000行超のiOSアプリを開発した
  • 自分でコードは1行も書いていない
  • 開発期間は約11日間(2026/2/15〜2/26)
  • コミット数136、すべてClaude Codeが生成したコード
  • SwiftUI + SwiftData + FoundationModels (Apple On-Device LLM) + AVFoundation を駆使した本格的なアプリ

かぷりとーく

アナリティクス:(リリースから7日)
500 ダウンロード

はじめに

「Vibe Coding」という言葉を聞いたことがあるだろうか。AIに自然言語で指示を出し、コードを書かせるスタイルの開発手法だ。Andrej Karpathy氏が提唱したこの概念を、今回は極限まで突き詰めてみた。

自分でコードを1行も書かず、Claude Codeだけでフル機能のiOSアプリを完成させる。

結果から言うと、できた。しかも思った以上にちゃんとしたアプリが。

作ったアプリ:かぷりとーく

LINEやカカオトークのトーク履歴を読み込んで、恋人・友達・家族などの関係性をAIで多角的に分析するiOSアプリだ。

主な機能

機能 概要
トーク分析 メッセージ頻度・返信速度・reciprocity(相互性)など多次元メトリクス
AI診断 Apple FoundationModels (On-Device LLM) によるセンチメント分析・要約・アドバイス
相性診断 6種類の関係性モード(恋人・友達・家族など)に応じたスコアリング
リハーサルチャット 相手の会話スタイルを学習したAIと模擬会話ができる
動画生成 分析結果をアニメーション付き動画(1080x1920)として書き出し
弾幕ビデオ ニコ生風の弾幕コメントが流れる動画を生成
通知 AIが相手っぽいメッセージを生成して通知として送信


技術スタック

UI:           SwiftUI
永続化:        SwiftData
AI/LLM:       FoundationModels (iOS 26+ On-Device LLM)
動画:          AVFoundation + CoreGraphics
分析:          カスタムスコアリングエンジン × 6モード
ベクトル検索:    自作VectorStore(リハーサル用)
広告:          Google Mobile Ads

開発の流れ

Claude Codeとの対話スタイル

基本的に自分がやったことは以下だけ:

  1. 日本語で機能を説明する(「LINEのトーク履歴をパースして分析する機能を作って」)
  2. 実機で動かしてフィードバックする(「ここの色が見づらい」「動画書き出しでフリーズする」)
  3. 方向性を決める(「恋人モードと友達モードでスコア基準を変えたい」)

コードは一切触っていない。Xcodeも基本的にはビルド&実行ボタンを押すだけ。

開発タイムライン(全136コミット・11日間)

Phase 1: 基盤構築(Day 1〜3)

  • トーク履歴パーサー(LINE対応)
  • メトリクスエンジン(返信速度・相互性・エンゲージメント)
  • SwiftDataモデル設計
  • FoundationModelsとの連携(LLMService)

Phase 2: AI分析パイプライン(Day 3〜5)

  • MapReduce方式のチャンク分析(大量のトークをLLMのトークン制限内に収める)
  • セッション単位ストリーミング分析
  • ヒューリスティック+LLMハイブリッド分類

Phase 3: 機能拡張(Day 5〜8)

  • 6モード対応スコアリング(恋人/片思い/友達/家族/知人/仕事)
  • リハーサルチャット(ベクトル類似度検索 + インテント分類)
  • 弾幕ビデオ・VibesVideo動画生成
  • カカオトーク対応
  • ローカル通知システム

Phase 4: 品質向上(Day 8〜11)

  • 動画書き出しのデッドロック修正(4回のイテレーション)
  • App Store Preview対応
  • UIテーマ刷新(ピンク×水色のかわいいデザイン)
  • サーマルスロットリング対応

Claude Codeが優秀だったポイント

1. アーキテクチャ設計が的確

155ファイルに及ぶプロジェクトだが、責務分離がきちんとしている。

Models/Domain/     → ドメインモデル
Models/LLM/        → LLM応答の型定義(@Generable)
Models/Persistence/ → SwiftDataエンティティ
Services/Parser/   → プラットフォーム別パーサー
Services/Analysis/ → 各種アナライザー
Services/Scoring/  → モード別スコアラー
Services/LLM/      → LLM連携サービス
ViewModels/        → 画面ごとのViewModel
Views/             → SwiftUI View

この構造は最初から完璧だったわけではなく、機能追加のたびにClaude Codeが自然とリファクタリングしていった結果だ。

2. 難しい問題を反復的に解決できる

動画書き出し機能では、AVFoundationの映像+音声同時書き込みでデッドロックが発生した。git logを見ると:

4ae4ddf 動画書き出しハング修正:映像完了後に音声書込みする順序に変更
a26c0fd 動画書き出しハング修正:映像と音声をインターリーブ書込みに変更
87ac261 書き出しデッドロック修正:音声を映像より先に書きライターの詰まりを解消
3d7ca9c 音声トラック方式を全面変更:映像レンダリング後にAVMutableCompositionで無音合成

4回のイテレーションで、最終的に「映像を先にレンダリングしてからAVMutableCompositionで無音トラックを合成する」というアプローチに辿り着いた。「動画書き出しでフリーズする」とだけ伝えて、あとはClaude Codeが試行錯誤して解決した。

3. iOS最新APIへの対応

iOS 26で導入されたFoundationModelsフレームワークを活用し、@Generableプロトコルによる構造化出力を実装。オンデバイスLLMならではの高速レスポンスとプライバシー保護を両立している。

// Claude Codeが生成したコードの例
@Generable
struct SentimentResult {
    @Guide(description: "Overall sentiment: positive, negative, or neutral")
    var sentiment: String
    @Guide(description: "Brief explanation of the sentiment")
    var explanation: String
}

苦労したポイント・限界

なし

実機でしかわからない問題

Claude Codeはシミュレータやビルドを実行できないので、UIの見た目や動画再生の挙動は自分で確認する必要がある。「この画面のこの部分がこうなってる」というのはスクショを貼ればおけ。

SafetyFilterとの戦い

Apple FoundationModelsにはSafety Filterがあり、恋愛関連のプロンプトが拒否されることがあった。これもClaude Codeがプロンプトの言い回しを調整して回避してくれたが、何度かイテレーションが必要だった。

数字で見る開発

項目 数値
開発期間 11日間
総コミット数 136
Swiftファイル数 155
総コード行数 25,372行
手書きコード 0行
使用ツール Claude Code (CLI)

Vibe Codingのコツ

実際にやってみてわかった、うまくいくためのポイントをいくつか。

1. 小さく始めて段階的に拡張する

「全機能を最初から説明」ではなく、「まずパーサーを作って」→「次に分析エンジンを」→「UIをつけて」と段階的に指示した方が品質が高い。

2. バグ報告は具体的に

「動かない」ではなく「動画書き出しボタンを押すと画面がフリーズして、30秒後にメモリ警告が出る」のように具体的に伝える。Claude Codeは原因推測が得意なので、症状を正確に伝えるだけで大体解決してくれる。

3. アーキテクチャの方向性は人間が決める

「恋人と友達でスコア基準を変えたい」「動画にLINE風チャットシーンを入れたい」といった方向性の判断は人間がする。Claude Codeは実装のプロだが、プロダクトのビジョンは自分で持つ必要がある。

4. gitを活用する

Claude Codeはgitを理解しているので、コミットを細かく切っておくと「さっきの変更を元に戻して別のアプローチで」という指示が通る。

まとめ

11日間・136コミット・25,000行超。コードを1行も書かずにここまでのアプリが作れたのは正直驚いた。

Vibe Codingは「プログラミングができなくてもアプリが作れる」という話ではない。むしろプログラミングの知識がある人が、実装の手間をゼロにして、プロダクト設計と品質管理に集中できる開発手法だと感じた。

バグが出たときに「多分ここが原因だと思う」と推測できること、「この設計だとスケールしないから変えよう」と判断できること。そういった知識があってこそ、AIとの協業が最大限に活きる。

Claude Codeは「もう一人の優秀なエンジニア」だ。ただし、プロダクトの方向性を決めるのは、まだ人間の仕事だ。


この記事自体もClaude Codeに書かせました。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?