GitHub SpecKitを使ってみた! ~AWSサーバーレスAPIを「自然言語」と「CLI」だけで構築する~ PART1

記事タイトルとURLをコピーする

はじめに

皆様はAIを活用し開発を効率化されているでしょうか?
今回は最近注目されている「GitHub SpecKit」を触ってみました。
学習記録として、SpecKitを使ってAWSサーバーレス構成(Lambda + DynamoDB)の書籍管理APIを構築する過程をまとめます。

本記事では「Part 1」として、プロジェクトのセットアップから、Create(登録)/ Read(参照)機能の実装・デプロイまでを行ったので備忘録として解説します。

1. SpecKitとは?

SpecKitはGitHubが提供する仕様駆動開発のAI開発エージェントツールキットです。 通常のGitHub Copilot Chatが「対話形式でコードの断片を生成する」のが得意なのに対し、SpecKitは「自然言語で書かれた仕様書(Spec)を起点に、計画・実装・検証までを構造的に進める」ことに特化しています。

github.com

2. SpecKitのインストール

まずはインストールを行います。uvツールを使用しインストールを行います。

uv tool install specify-cli --from git+https://github.com/github/spec-kit.git

インストール後、下記コマンドを実行しプロジェクトディレクトリを作成します。今回はspeckit-crud-demoという名前で進めます。

speckit init <PRJECT_NAME>

その後ウィザードが表示されるので、指示に従って - AIアシスタント(今回は Github Copilot を選択) - シェルのタイプ(今回は sh を選択) を選択します。

3. 従わせる「憲法」を定義する

SpecKitの面白い特徴が、プロジェクトの「憲法(Constitution)」を定義できる点です。
/speckit.constitutionコマンドを使用し、ここでAIに対してルールを指示します。
ここからはVS Code上のGitHub Copilot Chat(AIエージェント)と対話しながら進めていきます。

今回は下記の内容を自然言語で伝えました。

指示した主な内容:
  技術スタック: AWS Lambda (Python), DynamoDB, API Gateway
  絶対的制約: AWS CLIコマンドのみを使用すること(Terraform/CDK/GUI操作の禁止)。
  開発プロセス: 実装前に必ず実行可能なCLIコマンドを提示すること。
  ドキュメンテーション: 初心者にもわかるように日本語で丁寧に記述すること。

プロンプトを投げるとCopilotがconstitution.md, plan-template.md, tasks-template.mdなどのファイルを自動的に編集しプロジェクトの管理原則と開発ガイドラインを作成してくれます。

実際に実行したプロンプト、生成されたファイルは以下の私のレポジトリから確認できます。

4. 仕様を作成する

次に「何を作りたいか」を伝えます。 /speckit.specifyコマンドを使用し先ほどと同様にプロンプトを投げる形式で仕様を作成していきます。

以下の要件を自然言語で伝えました。

概要: 書籍管理API(CreateとReadのみ先行実装)
DB: DynamoDB (BooksTable)
API: REST API (POST /books, GET /books/{id})
データモデル: ID, Title, Author, Status

プロンプトを実行後、いくつかのコマンド実行許可を求められるので問題なさそうであれば「Allow」をクリックし実行する。

その後自動的に品質チェックリスト、ブランチ作成、品質チェックまで実行してくれた。 次の提案として”/speckit.plan”コマンドで技術スタックなど技術実装計画 の作成をするべきという点までガイドしてくれている👍。

実際に実行したプロンプト、生成されたファイル

5. 実装計画を作成する

仕様が固まったら次は「どう作るか」を決めます。 /speckit.planコマンドを使用して実装計画を作成します。 ここでは、以下のポイントを重視して計画を立てるよう自然言語で指示しました。

依存関係の順守: IAMロール作成 → DB作成 → Lambda作成 のような順序を守ること。
構成要素の分離: ステップごとにファイルを分けること。

いざ指示を投げてみると、実装計画書(plan.md)と必要なファイル構成の雛形を生成してくれました。
きちんと指示通り「DynamoDBを作って、IAM設定して、Lambda書いて、API Gatewayで公開する。OpenAPIスペックはこうで、データモデルはこう」という詳細なエンジニアリング設計図を書き上げ提案された点には驚き🤯

実際に実行したプロンプト、生成されたファイル

6. タスクへの落とし込み

次に実装計画をタスクリストに変換する作業を行います。 /speckit.tasksコマンドを実行するとAIは計画書を読み込み、具体的なToDoリスト(tasks.md)を生成しました。 このコマンドは自然言語等で説明する必要はなくそのまま実行すればタスク化してくれます。

実際に生成されたファイル

7. 実装の実行

いよいよ実装です。 /speckit.implementコマンドを叩くとAIがタスクリストを上から順番に消化し始めます!

実際に叩いてみると、AIは勝手に全てを実行して終わるのではなく、重要なコマンド実行(AWSリソースの作成など)のたびに、ユーザーに許可(Allow)を求めてきます

許可を求められるアクション例

  • コード生成: PythonのハンドラコードやIAMポリシーJSONを作成。
  • リソース構築: AWS CLIを実行してDynamoDBやLambdaをデプロイ。
  • Git操作: ある程度進むと、自動でコミット&プッシュまで提案。

私は基本的に生成された内容を確認し、「Allow」をクリックしていくだけで、/speckit.constitution, /speckit.specifyで定義したリソースがAWS上に構築されていきました。

実際に生成されたlambda関数やawsリソース定義ファイル

8. 実際にAPIを叩いてみる

/speckit.implementコマンドの中で実装~デプロイまで行ってくれました。デプロイまで行ってくれるのは非常に優秀! いざAPIがきちんと動作するかをcurlで確認してみます。

実行結果:「成功!」

問題なくGETできていました!

Part 1 のまとめと感想

ここまでで、GitHub SpecKitを使ってサーバーレスAPIの土台(Create/Read)が完成しました。 使ってみた感じたこととしては、まさに「AIをペアプログラミングの相手(というより実装担当者)にして、自分がディレクターになる」感覚です。

次回(Part 2)は、残りのCRUD機能である Update(更新) と Delete(削除) 機能を追加し、このAPIを完成させていきたいと思います。

横山拓海(執筆記事の一覧)

2025年11月入社

新しいもの好き。