こんにちは!AIサービス開発室の鈴木生雄です。今回は久しぶりにプログラミングのネタをお届けいたします。
以前にこのブログでvibe-coding(目的をざっくり伝え、AIにコードを書かせながら雰囲気で進めるコーディングスタイル)を実践した件について、投稿させていただきました。
ショート動画生成ツールをバイブコーディングで開発し始めました(前編)
ショート動画生成ツールをバイブコーディングで開発し始めました(後編)
私にとって、vibe-codingはとても手軽で楽しい体験でした。しかし一方で、SNSでは、個人利用や一時的なツールを作るのにはよいが、業務アプリケーションの開発には向いていないという意見をよく見ました。
Vibe Coding は「自分だけが使う、自分がいちばん欲しいソフトウェアをだれでも作れるようになった」ことが革命的かつ真骨頂なのであって、他の人が使うソフトウェアを作ることには(少なくともまだ)向いてないと思います
出所:https://x.com/t_wada/status/1948590698762305714
例えば、上のXの投稿もその一つです。vibe-codingでは、ユースケースを網羅的に洗い出してそれに対する仕様を作ることなくコーディングをしているため、ビジネス要件に対して十分な機能・品質を備えているかを保証できないという点が課題だというふうに私も思いました。
こうした経緯から「AIに任せるなら、最初に仕様をちゃんと文章化し、AIと人間の共通の拠り所にしよう」という反動が生まれます。そこで生まれたのが「仕様駆動開発(Spec Driven Development:SDD)」という開発スタイルです。SDDはAIエージェントとの協働を前提に、まず仕様(What/Why)→計画(How)→タスク化→AI実装という流れで随時文書を作成(あるいは更新)しながら開発を行います。
SDDを最初に提唱したのが誰かはわかりませんが、GitHubがspec-kitというSDDを実践するためのツールキットを公開した前後から一気に普及した印象があります。spec-kitの文書(spec-driven.md)には、SDDが重要となる背景が以下のように説明されています。
次の 3 つのトレンドにより、SDD は可能になるだけでなく必要になります。
まず、AIの能力は、自然言語仕様から確実に動作するコードを生成できる閾値に達しています。これは開発者を置き換えることではなく、仕様から実装への機械的な翻訳を自動化することで、開発者の効率性を高めることです。AIは、探索と創造性を高め、「やり直し」を容易にし、加算、減算、そして批判的思考をサポートします。
第二に、ソフトウェアの複雑さは指数関数的に増大し続けています。現代のシステムは、数十ものサービス、フレームワーク、そして依存関係を統合しています。これらすべてを手作業で元の意図に沿って維持することは、ますます困難になっています。SDDは、仕様主導の生成を通じて体系的な整合性を実現します。フレームワークは、人間中心のサポートではなくAI中心のサポートを提供するように進化したり、再利用可能なコンポーネントを中心に構築されたりする可能性があります。
第三に、変化のペースが加速しています。今日では、要件の変化はかつてないほど急速に進んでいます。ピボットはもはや例外的なものではなく、当然のこととなっています。現代の製品開発では、ユーザーからのフィードバック、市場状況、そして競争圧力に基づいた迅速なイテレーションが求められます。従来の開発では、こうした変化は混乱と捉えられがちです。ピボットのたびに、ドキュメント、設計、コードを通じて変更を手作業で反映させる必要があります。その結果、速度を制限するゆっくりとした慎重なアップデートか、技術的負債を蓄積する急速で無謀な変更のどちらかが生まれます。
私はこのうち特に一つ目の影響が大きいと考えています。「仕様を中心に据える」という流れは、2010年代のテスト駆動開発(Test Driven Development:TDD)など、他にもあったのですが、手作業による書き直しではなく、AIエージェントによる体系的な再生成が可能になったからこそ、今改めてSDDとして再注目されているというふうに考えるからです。
作りたいもの
このようにAIエージェントの精度向上やspec-kitのようなツールキットがでてきてSDDを実践する土壌が整ってきたので、せっかくならSDDで何かアプリを作ってみたいと思いました。
というわけで題材を探していたのですが、先日、YouTubeでAndrej Karpathy氏の「Deep Dive into LLMs like ChatGPT」をオンライン同時翻訳の日本語字幕を見ながら視聴していたところ、同時翻訳だからだと思いますが、翻訳の精度がよくないことに気づきました。対談系のYouTubeは以前にvibe-codingで作ったPodcast化ツールで聴けばよいのですが、プレゼン資料や画面操作を含む動画については、「聴く」だけでなく「見る」必要があります。これはちょうどよいと思ったので、より精度の高い日本語字幕を表示しつつYouTubeを視聴できる、以下のようなクライアントツールを作ることにしました。
- 字幕のソースとして、YouTubeが提供するタイムスタンプ付きの英語の文字起こしを利用
- 事前に文字起こしの文をLLMのAPIで日本語に翻訳
- 画面にはYouTubeを埋め込み、翻訳した日本語をタイムスタンプで同期させてオーバーレイ表示
利用技術
利用技術は以下のとおりです。なお、言語はTypeScriptです。
- Codex CLI … OpenAIのコーディング専用のAIエージェント
- spec-kit … SDDのためのツールキット
- Electron … HTML、CSS、JavaScriptといったWeb技術を使ってデスクトップアプリケーションを開発できるオープンソースのフレームワーク
- Gemini 2.5 Flash API … GeminiのAPI(翻訳に利用。ChatGPTよりもコンテキストウィンドウが大きいため、一度に多くの文を翻訳できる。)
- GraphAI … 非同期データフロー実行エンジン
いつもながら趣味半分(残りの半分は当社の技術者とテックトークする目的)の開発なので、少し時間をかけて気づきをメモしながら開発してみようと思います。折に触れてこのブログでも開発過程を投稿しようと思いますので、楽しみにしていてください。
参考文献
最後に、この投稿をする際に読んだ文章のURLを参考文献として載せておきます。
Specification-Driven Development (SDD) – spec-kit (2025.8.23)
Spec-driven development with AI: Get started with a new open source toolkit – Github Blog (2025.9.2)
Diving Into Spec-Driven Development With GitHub Spec Kit – Microsoft Dev Blog (2025.9.15)
