🐢

期間限定無料(終了)のGPT-5でSpec駆動開発をしてみた

に公開

びーぐるです🐶

8/8、OpenAIからGPT-5がとうとう発表されました。

https://openai.com/ja-JP/index/introducing-gpt-5/

GPT-5の具体的な内容に関しては、ぬこぬこさんが日本最速クラスでまとめてくださっているのでそちらをご覧になるのが良いかと思います。
いつもありがとうございます🙇

https://zenn.dev/schroneko/articles/introducing-gpt-5

GPT-5はプロモーションの一環として、期間限定で無料もしくはかなり安く使えるようになっています。
特にCursorでは新規アカウントでも無料でGPT-5がエージェントモードで使える~~ようです。~~ました(現在は終了)。

更新履歴

2025/08/13 GPT-5の無料期間を追記しました

今回の目的・具体的に利用するもの

せっかくのGPT-5無料期間ですので、今回はほぼ無料のものを組み合わせてSpec駆動開発を行ってみます。

色々な組み合わせが考えられますが、今回は無料枠があるものを組み合わせて
Kiro + Jules + Cursor + GPT-5
を利用したいと思います。

  • Kiro IDE, Specsを作成します
  • Jules Webサービス, Specsの妥当性を評価します
  • Cursor IDE, Specsを参照してコーディングエージェントモデルに指示を出します
  • GPT-5 LLM, Cursorのモデルとして利用します

Kiroとは?Spec駆動開発とは?

私の記事で申し訳ないのですが、こちらをご参照ください。
https://zenn.dev/beagle/articles/1dea6ff60b1143

簡単には

  • Kiro AWS製AIコーディングIDE
  • Spec駆動開発 仕様書を作成してからコーディングを行う

Julesとは?

Julesは、Webサービス上で動くGoogleの自律型AIコーディングエージェントです。
GitHubと統合して、リポジトリ単位で動作します。
コーディング力は高くないので新規の開発には向きませんが、メンテナンス、テスト、ドキュメント検証やコードレビューなどの分野に強いとのことです。
今回は、Specの妥当性を評価するために使用します。

https://jules.google/

Julesに関しては、後日記事を作成したいと思っています。

Cursorとは?

Cursorとは、VSCodeベースのAIコーディングIDEで、この分野では最も先行している製品と言えるでしょう。
基本的には有料プランに加入して使うものですが、加入していなくても期間限定でGPT-5を無料で利用できるとのことなので、採用します。

https://cursor.com/ja

実際の流れ

1. KiroでSpecsを作成

私は前回の記事で作成したSpecsを改良して利用します。
Sonnetの悪癖を窘め、t-wada氏のTDDを導入しました。

  • TypeScriptの利用を明示
  • クラスの利用を極力避ける
  • t-wada氏が推奨する方法でテスト駆動開発を行い、タスクリストも合わせて変更する
  • テストが通らないとき、テスト側を改竄するのを禁止する
  • Steeringファイルを作成し、上記内容を記載する

「t-wada氏が推奨する方法でテスト駆動開発」という文言が何かというのは、以下の記事が参考になります
https://blog.lai.so/t-wada-vs-tesuto-daisuki-rou/

その和田卓人氏のテスト駆動開発についてはこちらの記事が参考になります
https://t-wada.hatenablog.jp/entry/canon-tdd-by-kent-beck

2025/08/09追記
Kiroの招待が来た!という話がちらほら聞こえてきたので、順調に招待を拡大しているようです。

2. (オプション)JulesでSpecsの妥当性を評価

(やらなくても良いと思いますが、今回はTDDの妥当性も評価したかったので、このプロセスを挟みます)

作成されたSpecsは読みやすくはあるのですが、人間の目で妥当性を検証するのは結構大変です。
Julesを使って検証してみます。

GitHubのリポジトリにSpecsとSteeringを投入してJulesにアクセス権を与え、以下のプロンプトを投げます。

このプロダクトはSpec駆動開発用の仕様書が含まれており .kiro/specs/browser-tetrisディレクトリにあるドキュメントが仕様書です。
それぞれrequirements.mdが要件定義書、design.mdが設計書、tasks.mdがタスクリストです。
.kiro/steeringディレクトリにはコーディングの際に守るべきルールが記載されています。
ここで

1. design.mdがrequirements.mdに基づいているか
2. tasks.mdはdesign.mdを網羅しているか
3. design.mdやtasks.mdがt-wada氏の推奨するTDDに従っているか

の3点を検証してください。

結果は問題なさそうですので、次に行きます。

Julesからの回答はこちら(長いです)

<!-- textlint-disable
仕様書および運営方針に関するドキュメントの徹底的なレビューが完了しました。ご提示いただいた3つの質問に基づく包括的な分析結果を以下に報告します。

最終検証レポート
以下のドキュメントを分析しました:

.kiro/specs/browser-tetris/requirements.md (要件定義書)
.kiro/specs/browser-tetris/design.md (設計書)
.kiro/specs/browser-tetris/tasks.md (タスクリスト / 実装計画)
.kiro/steering/guide.md (開発方針)
以下が私の分析結果です:

  1. design.mdはrequirements.mdに基づいていますか?
    結論:いいえ、design.mdはrequirements.mdに厳密には基づいていません。 要件を基礎としていますが、プロジェクトのスコープを大幅に拡大しています。

詳細: design.mdは、元のrequirements.mdには存在しないいくつかの主要な機能や変更を導入しています。

ブロックタイプの拡張: requirements.mdが標準的な7種類のテトリミノを指定しているのに対し、design.mdは4種類の新しい小さなブロック(Monomino, Domino, Trio_L, Trio_I)を追加しています。
新しい「スキップ」機能: design.mdは、次のブロックをスキップするための新しいゲームプレイメカニクスを追加しており、その使用を管理するための「スキップスタック」というリソースも含まれています。これは要件には全く存在しません。
新しい「ポーズ」機能: ゲームを一時停止する機能(PまたはEscキー)が設計書で定義されていますが、要件書にはありません。
レベリングシステム: 設計書では、10ライン消去するごとにゲーム速度が上がるレベリングシステムが導入されており、これは要件書の基本的なスコア管理機能への追加仕様です。
操作の矛盾: 操作方法に直接的な矛盾があります。requirements.mdではスペースキーは「ハードドロップ」とされていますが、design.mdではスペースまたは上矢印キーが「回転」とされています。
要約すると、design.mdはrequirements.mdで概説されているものよりも複雑で機能豊富なゲームを記述しています。

  1. tasks.mdはdesign.mdを網羅していますか?
    結論:はい、tasks.mdはdesign.mdを完全に網羅する、包括的かつ綿密な計画です。

詳細: tasks.mdファイルは単なるチェックリストではなく、詳細なステップバイステップの実装計画です。

直接的なマッピング: design.mdのすべての機能とユーザーストーリーが、一連の具体的で実行可能なタスクに分解されています。例えば、設計書の「要件5」(プレビューとスキップ)は、タスクリストの「タスク10」(プレビューとスキップ機能の実装)でカバーされています。
粒度: タスクは、型の作成、個々の関数の実装、そしてそれらの統合を含む、非常に細かいレベルまで分解されています。
完全性: この計画は、初期のプロジェクト設定から、コアロジック、UI、高度な機能(スキップ機能など)、最終的な統合テストの実装まで、すべてをカバーしています。
tasks.mdファイルは、design.mdで指定されたゲームを構築するための、優れたTDDベースのロードマップとして機能します。

  1. design.mdやtasks.mdはt-wada氏の推奨するTDDに従っていますか?
    結論:はい、概説されている開発プロセスは、t-wada氏のTDD方法論に完全に準拠し、明示的に従っています。

詳細: この特定の開発手法に対するプロジェクトのコミットメントは明確で、非常によく実行されています。

明示的なガイドライン: .kiro/steering/guide.mdの開発方針には、「t-wada氏が推奨する方法でテスト駆動開発を行う」と明記されています。
TDDに基づいたタスク構造: tasks.mdは、このルールを完璧に具現化したものです。すべての機能がRed-Green-Refactorのサイクルに従って実装されます。各タスクには明示的に以下のプレフィックスが付いています:
RED: 「失敗テストを作成」
GREEN: 「最小限で作成/実装」
REFACTOR: 「改善/リファクタリング」
全体的なアプローチ: このTDDアプローチは、tasks.mdにおいて、データモデルや純粋関数からUIコンポーネント、最終的な統合まで、すべての開発段階で一貫して適用されています。
これらのドキュメントは、ご質問いただいたTDDの原則に対する深く、規律ある順守を示しています。

これで検証は終了です。他に質問があればお知らせください。
-->

3. Cursorで実装

Cursorを起動し、該当ディレクトリを開きます。
AgentモードでモデルをGPT-5に指定して、以下のように開始します。

このプロジェクトはSpec駆動開発で進めてください。
具体的には
.kiro/specs/browser-tetris ディレクトリに仕様書が入っており
- 要件定義はrequirements.md
- 設計書はdesign.md
- タスクリストはtasks.md

となっています。.kiro/steering ディレクトリはコーディングの際守るべきルールが記載されています。

tasks.mdを参照し、タスクの1番から順に開発を開始してください

Kiroのように1番から順に実装を進めてくれます。IDEの洗練度の差なのかわかりませんが、KiroよりもSteeringを遵守してくれて、かっちりSpec駆動開発になっている印象があります。
コーディング速度も速いです。

4. コーディング完了→バグフィックス→完成

他のこともしながら進めていたので、正確な時間はわかりませんがほぼ数時間でタスクが完了したと思います。

最初の時点で動作するものができてました。すごい!
ただし

  • ブロックの回転が表示に反映されない(着地したときに初めて反映される)
  • ゲームオーバーの判定がおかしいため、ゲームオーバーにならない

というバグがあったあったため、修正を指示して完成。
(修正依頼の際にTDDで修正させる指示をわすれました…)

完成したもののデモサイト
https://beagleworks.github.io/Browser-Tetris-Plus/public/

リポジトリ
https://github.com/beagleworks/Browser-Tetris-Plus

問題なく動作しています。

まとめ

SpecsやSteeringの細かな修正や、デプロイ前のテンプレートの修正は自身で行いましたが、95%くらいをAIに任せてアプリケーションが完成しました。
実際にKiro(Sonnet 4.0)で試しに実装させたところ、実装できずに放棄してしまったタスクがあるのですが、GPT-5は特に迷うことなく遂行してくれました。
Cursorの完成度の高さの影響も大きく、単純にGPT-5の性能とは断言できませんが…
Spec駆動開発 + t-wada氏のテスト駆動開発 で Cursor + GPT-5
という組み合わせは、かなりのレベルに達していると感じました。
これが期間限定ながらも無料で提供されているのは、革命的~~です。~~でした。

GitHubで編集を提案

Discussion