Amazon Q Developer CLI + spec-kit による仕様駆動開発のデモプロジェクト
注意: このプロジェクトは講演用のデモです。本番環境での使用は想定していません。
このプロジェクトで体験できること:
- 自然言語から仕様書を自動生成
- 仕様から実装タスクを自動分解
- タレントマネジメントシステム(社員検索・スキル管理)の段階的な実装
- Spring Boot + React によるフルスタック開発
このプロジェクトは以下の環境で動作を確認しています:
- OS: Windows 10/11
- WSL 2: インストール済み
- インストール手順:
wsl --install(PowerShellを管理者権限で実行)
- インストール手順:
注意: 他のOS(macOS、Linux)での動作確認は行っていません。
- Git: インストール済み
- Visual Studio Code: 最新版
- VS Code拡張機能: Dev Containers (ms-vscode-remote.remote-containers)
- AWS Builder ID: 発行済み
- Amazon Q Developerを利用するために必要
- 未取得の場合: https://docs.aws.amazon.com/ja_jp/signin/latest/userguide/sign-in-builder-id.html を参照
- Docker Engine: Dev Container起動時、「開発コンテナーでは、Dockerを実行する必要があります。WSLにDockerをインストールしますか?」という確認ダイアログが表示されます。インストールを選択すれば自動的にインストールされます。
- Java 17 + Gradle: Dev Container起動時に自動インストールされます。
- Node.js 20 LTS: Dev Container起動時に自動インストールされます。
- Amazon Q Developer CLI v1.19.7: Dev Container起動時に自動インストールされます。
- spec-kit (specify-cli): Dev Container起動時に自動インストールされます。
- AWS CLI: Dev Container起動時に自動インストールされます。
以下のいずれかの方法でリポジトリを取得してください:
自分のアカウントで改変・実験したい場合:
- https://github.com/mamezou-tech/aidd-demo にアクセス
- 右上の「Fork」ボタンをクリック
- 自分のForkをクローン:
git clone https://github.com/<your-username>/aidd-demo
cd aidd-demo変更をプッシュしない場合:
git clone https://github.com/mamezou-tech/aidd-demo
cd aidd-demoVisual Studio Codeで開く:
code .コマンドパレット(Ctrl+Shift+P)から:
- Dev Containers: Reopen in Container を選択
注意: Docker Engineがインストールされていない場合、確認ダイアログが表示されます。インストールを選択してください。
初回起動時はコンテナのビルドとツールのインストールに時間がかかります(筆者環境では30分程度)。
Dev Container内のターミナルで:
docker compose up -dこのコマンドで以下が起動します:
- MySQLデータベース(ポート3306)
- Spring Bootアプリケーション(ポート8080)
確認: コンテナが起動していることを確認
docker compose ps期待される出力: mysqldbとappコンテナのSTATUSがUp (healthy)
別のターミナルで:
cd frontend
npm run dev注: 依存パッケージは Dev Container 起動時に自動インストールされます。
フロントエンドは http://localhost:3000 で起動します。
本番環境では、フロントエンドもDockerコンテナとして起動できます。
docker compose --profile production up -dこのコマンドで以下がすべて起動します:
- MySQLデータベース(ポート3306)
- Spring Bootアプリケーション(ポート8080)
- Reactフロントエンド(ポート3000、Nginx経由)
- フロントエンドはNginxで静的ファイルとして配信
/api/*へのリクエストは自動的にバックエンド(ポート8080)にプロキシ- ブラウザから
http://<サーバーIP>:3000でアクセス可能
重要: ローカル開発時は --profile production を指定しないでください。
- ローカル開発:
docker compose up -d(frontendコンテナは起動しない) - 本番デプロイ:
docker compose --profile production up -d(frontendコンテナも起動)
ローカル開発では引き続き npm run dev でVite開発サーバーを使用してください。
Q Developer CLIで以下を指示:
EC2インスタンスを作成してください。
要件:
- 名前: aidd-demo
- AMI: Amazon Linux 2023 (最新版)
- インスタンスタイプ: t3.small
- vCPU: 2
- メモリ: 2GB
- ストレージ: 20GB (gp3)
- リージョン: ap-northeast-1 (東京)
- キーペア: 新規作成して ~/.ssh/aidd-demo-key.pem に保存
- セキュリティグループ: 新規作成
- SSH (ポート22): マイIPのみ許可
- カスタムTCP (ポート3000): マイIPのみ許可
- パブリックIPアドレス: 自動割り当て有効
作成後、キーペアのパーミッション設定:
chmod 400 ~/.ssh/aidd-demo-key.pem注意: t3.small (2GB RAM) を推奨。t2.micro/t3.micro (1GB) ではメモリ不足の可能性あり。
curl http://localhost:8080/actuator/healthまたは、ブラウザで http://localhost:8080/actuator/health にアクセス
期待される結果:
{"status":"UP"}ブラウザで http://localhost:3000 にアクセス
ログイン情報:
- メールアドレス:
[email protected] - パスワード:
aiddTest
- 社員検索: 名前、組織、役職、スキルで検索
- 社員詳細: 社員情報とスキル一覧の表示
- 顔写真表示: 社員の顔写真(サンプル画像)
症状: コンテナビルド中にエラー
確認手順:
- Docker Engineが起動しているか確認
- WSL 2が正しくインストールされているか確認(
wsl --status) - VS Code Dev Containers拡張機能がインストールされているか確認
対処法:
- コマンドパレット > Dev Containers: Rebuild Container を実行
- WSL 2が未インストールの場合: PowerShellを管理者権限で開き
wsl --installを実行
症状: Cannot connect to the Docker daemon
確認手順:
docker version対処法:
- Docker Engineを起動
- Windows環境でDocker Desktopを使用している場合は起動
- WSL 2統合が有効になっているか確認(Docker Desktop > Settings > Resources > WSL Integration)
症状: docker compose up -d でエラー
確認手順:
# ログの確認
docker compose logs
# 特定のサービスのログ
docker compose logs mysqldb
docker compose logs app対処法:
# コンテナを停止してクリーンアップ
docker compose down -v
# 再ビルドして起動
docker compose up -d --build症状: appコンテナがヘルスチェックに失敗
確認手順:
# アプリケーションログの確認
docker compose logs app
# MySQLの接続確認
docker compose exec mysqldb mysql -uappuser -papppass appdb -e "SELECT 1"対処法:
- MySQLが完全に起動するまで待つ(初回は時間がかかる場合があります)
docker compose restart appでアプリケーションを再起動
症状: port is already allocated
確認手順:
# ホストOS(Windows)で確認
netstat -ano | findstr :8080
netstat -ano | findstr :3306
netstat -ano | findstr :5173対処法:
docker-compose.ymlのポート設定を変更- または、ホストOSでポートを使用中のプロセスを終了
症状: npm run dev でエラー
確認手順:
cd frontend
npm install対処法:
node_modulesを削除して再インストール:rm -rf node_modules && npm install- バックエンドが起動しているか確認
症状: [email protected] / aiddTest でログインできない
確認手順:
# バックエンドのログを確認
docker compose logs app | grep "Password match"
# データベースのパスワードハッシュを確認
docker compose exec mysqldb mysql -uappuser -papppass appdb -e "SELECT email, LEFT(password_hash, 20) FROM users WHERE email='[email protected]';"対処法:
- データベースを再作成:
docker compose down -v && docker compose up -d --build - パスワードハッシュが正しいか確認(
$2a$10$ZoJ2Q3xPC...で始まるべき)
# コンテナの停止と削除(データベースボリュームは保持)
docker compose down
# データベースボリュームも含めて完全削除
docker compose down -v
# フロントエンドのビルド成果物削除
cd frontend
rm -rf node_modules dist test-results- AmazonQ.md: Amazon Q Developer運用規範
- .specify/memory/constitution.md: プロジェクトの原則とルール
- specs/001-employee-search-system/: 社員検索システムの仕様書
- Java 17
- Spring Boot 3.5.7
- Spring Security (JWT認証)
- Spring Data JPA
- MySQL 8.4
- Gradle 8.10.2
- Testcontainers 1.20.4
- React 18
- TypeScript 5
- Vite 6
- Playwright (E2Eテスト)
- Docker + Docker Compose V2
- MySQL 8.4
このプロジェクトは以下のオープンソースソフトウェアを使用しています:
- Spring Boot 3.5.7 - Apache License 2.0
- spring-boot-starter-web
- spring-boot-starter-security
- spring-boot-starter-data-jpa
- spring-boot-starter-actuator
- spring-boot-starter-validation
- MySQL Connector/J - GPL v2 with FOSS Exception
- Lombok - MIT License
- JJWT (Java JWT) 0.12.3 - Apache License 2.0
- SpringDoc OpenAPI 2.8.4 - Apache License 2.0
- JUnit 5 - Eclipse Public License 2.0
- Spring Security Test - Apache License 2.0
- Testcontainers 1.20.4 - MIT License
- React 18 - MIT License
- TypeScript 5 - Apache License 2.0
- Vite 6 - MIT License
- Playwright - Apache License 2.0
- MySQL 8.4 - GPL v2 with FOSS Exception
- Docker - Apache License 2.0
- Amazon Q Developer CLI v1.19.7 - MIT License / Apache License 2.0(デュアルライセンス)
- spec-kit - MIT License
詳細な依存関係は build.gradle と frontend/package.json を参照してください。
このプロジェクトは仕様駆動開発 (Specification-Driven Development) を採用しています。
- テストファースト: すべての機能実装前にテストコードを作成
- 統合優先テスト: 実データベース(MySQL)を使用した統合テスト
- ライブラリ優先の原則: ビジネスロジックをUIから分離
- シンプルさのゲート: 不要な抽象化を排除
詳細は AmazonQ.md を参照してください。
このプロジェクトはMITライセンスの下で公開されています。 詳細は LICENSE ファイルを参照してください。
注記: このプロジェクトは講演用のデモです。本番環境での使用は想定していません。