Amazon Q Developer CLIで英単語アプリを作ってもらってみた

Amazon Q Developer CLIで英単語アプリを作ってもらってみた

Clock Icon2025.07.11

製造ビジネステクノロジー部の新澤です。

はじめに

「Amazon Q Developer CLIでゲームを作ろうTシャツキャンペーン」が先月末まで実施されていましたが、皆さん応募されましたか?

私はとりあえず「テトリス作って」をやってみたものの、それ以上作ることなく期間が終わってしまいました。。。

気を取り直しまして、今回はAmazon Q Developer CLIを使ったVibe CodingでNext.jsアプリケーション制作をやってみましたのでその制作過程をご紹介したいと思います。

前提条件

  • AWS Builders IDの登録
  • Amazon Q CLIのインストール・ログイン

開発するアプリケーション

今回は英単語を学習する際に使う「単語帳アプリ」を作ってもらうことにしました。

基本的には、「単語が次から次に表示されるだけのアプリ」になる気はしていますが、どんなアプリができ上がるでしょうか。

制作記録

まずはチャットモードに入ります。

$ q chat       

    ⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
 ⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆
 ⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿
 ⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿
 ⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃
 ⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀
 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧

╭─────────────────────────────── Did you know? ────────────────────────────────╮
│                                                                              │
│    If you want to file an issue to the Q CLI team, just tell me, or run q    │
│                                    issue                                     │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

/help all commands  •  ctrl + j new lines  •  ctrl + s fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 You are chatting with claude-4-sonnet

> 

最初のプロンプトはごくごくシンプルに与えてみましょう。

> 英単語を勉強するための単語帳アプリケーションをNext.jsで作ってください

> Next.jsで英単語学習用の単語帳アプリケーションを作成します。現在のディレクトリ(/home/workspaces/nextjsapp)に作成しますね。

まず、プロジェクトの構造を確認してから、必要なファイルを作成していきます。

🛠️  Using tool: fs_read (trusted)
 ⋮ 
 ● Reading directory: /home/workspaces/nextjsapp with maximum depth of 0
 ⋮ 
 ● Completed in 0.0s
🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: 
ls -la /home/workspaces/blog/nextjsapp
 ⋮ 
 ↳ Purpose: Check current directory contents

total 0
drwxr-xr-x@ 2 niizawa.tadashi  staff   64  7 10 16:23 .
drwxr-xr-x@ 7 niizawa.tadashi  staff  224  7 10 16:23 ..

 ⋮ 
 ● Completed in 0.57s

> 空のディレクトリですね。新しいNext.jsプロジェクトを作成して、英単語学習アプリを構築します。

🛠️  Using tool: execute_bash
 ⋮ 
 ● I will run the following shell command: 
cd /home/workspaces/blog/nextjsapp && npx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
 ⋮ 
 ↳ Purpose: Initialize Next.js project

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
> t

アクションの実行許可は、今回はtを選択しました。

すると、その後まったく処理が進行しなくなってしまいました。

いったいどうしたんでしょう?

実はターミナルには表示されていませんが、npx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"を実行すると、下記のように入力待ちで止まってしまうのです。

$ npx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
? Would you like to use Turbopack for `next dev`?
 › No / Yes

入力待ち表示が出力されていなかったため、しばらく待ってしまったのですが、もしやと思いy[return]を入力すると、表示されていなかったプロンプトと共に処理の続きが表示されはじめました。

✔ Would you like to use Turbopack for `next dev`? … No / Yes
Creating a new Next.js app in /home/workspaces/blog/nextjsapp.

Using npm.

Initializing project with template: app-tw 

Installing dependencies:
- react
- react-dom
- next

Installing devDependencies:
- typescript
- @types/node
- @types/react
- @types/react-dom
- @tailwindcss/postcss
- tailwindcss
- eslint
- eslint-config-next
- @eslint/eslintrc

その後も何度か以下の許可の確認が出るので、今回はすべてtで答えていきます。

Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
> 最後に、アプリケーションを起動して動作確認をしましょう:

🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: 
cd /home/workspaces/blog/nextjsapp && npm run dev
 ⋮ 
 ↳ Purpose: Start the development server

> nextjsapp@0.1.0 dev
> next dev

   ▲ Next.js 15.3.5
   - Local:        http://localhost:3000
   - Network:      http://192.168.34.17:3000

 ✓ Starting...
 ✓ Ready in 1088ms

数分待つと、アプリケーションが作成されて動作確認を促されました。

さっそく表示してみます。

2025-07-10-16-36-15

お!シンプルながらもちゃんと単語帳アプリができていますね!

指示はしていませんでしたが、難易度の設定まで出来るようになっています。

でも、「簡単」とか「難しい」では抽象的で難易度がよくわかりませんね。

もっと具体的な表現に変更してもらいましょう。

機能追加 その1

ターミナルに戻り、CTRL-Cを押してNext.jsを停止し、以下の内容を指示してみました。

難易度を以下の設定としてください。
- 全て
- 英検3級
- 英検準2級
- 英検2級

さて、どうなるでしょうか。。。

> 英検の級に合わせて難易度設定を変更します。まず、型定義を更新してから、単語データと表示部分を修正します。

🛠️  Using tool: fs_write (trusted)
 ⋮ 
 ● Path: src/types/word.ts

  1, 1: export interface Word {
  2, 2:   id: number;
  3, 3:   english: string;
  4, 4:   japanese: string;
  5, 5:   pronunciation?: string;
  6, 6:   example?: string;
- 7   :   difficulty: 'easy' | 'medium' | 'hard';
+    7:   difficulty: 'eiken3' | 'eiken-pre2' | 'eiken2';
  8, 8:   category: string;
  9, 9: }

 ⋮ 
 ↳ Purpose: Update word type definitions for Eiken levels
Updating: src/types/word.ts

 ⋮ 
 ● Completed in 0.0s

 ⠹ Thinking...

しばらく待つと回答が返ってきました。

> 英検の級に合わせた難易度設定への変更が完了しました。変更内容は以下の通りです:

## 変更点

1. 難易度レベルの変更
   • easy/medium/hard → eiken3/eiken-pre2/eiken2

2. 単語データの更新
   • 英検3級レベル: beautiful, important, understand, different
   • 英検準2級レベル: environment, experience, communicate, technology
   • 英検2級レベル: comprehensive, demonstrate, significant, establish, consequence, fundamental

3. 表示の更新
   • フィルターボタン: 「全て」「英検3級」「英検準2級」「英検2級」
   • 単語カードの難易度表示も英検の級で表示

4. 色分け
   • 英検3級: 緑色(簡単)
   • 英検準2級: 黄色(中級)
   • 英検2級: 赤色(上級)

これで英検の級に応じた単語学習ができるようになりました。開発サーバーを起動して確認してみてください:

bash
npm run dev

ブラウザで http://localhost:3000 にアクセスすると、英検の級別に単語を学習できるアプリが表示されます。

別なターミナルを起動して、アプリケーションを実行してみます。

2025-07-10-16-48-41

ちゃんと指定した英検レベル設定に変わりました!(表示される単語が実際の級に対応しているか確認していませんので正しさは判りません…)

機能追加 その2

「学習統計」を見てみると、「総単語数」が14と少ないですね。

もっと増やせるようにデータベースに対応させてみましょう。

シンプルなものでいいので、組み込みRDBMSのSQLiteに対応させてみましょう。

英単語をSQLiteで管理できるようにしてください

指示すると、必要なパッケージのインストールが始まりました。

> SQLiteで英単語を管理できるように、データベース機能を追加します。Next.jsアプリにSQLiteとPrismaを統合して、単語の追加・編集・削除機能を実装します。

まず、必要なパッケージをインストールします:

🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: 

(しばし待ちます。。。)

> SQLiteデータベースの統合が完了しました!以下の機能が追加されました:

## 追加された機能

### 1. データベース機能
• **SQLite**: 軽量なデータベースでローカルに単語データを保存
• **Prisma ORM**: データベース操作を簡単にするORM
• **自動マイグレーション**: スキーマ変更の自動適用

### 2. API Routes
• GET /api/words: 単語一覧取得(難易度フィルター対応)
• POST /api/words: 新しい単語追加
• PUT /api/words/[id]: 単語更新
• DELETE /api/words/[id]: 単語削除
• POST /api/study-sessions: 学習記録保存

### 3. 単語管理機能
• **単語管理画面**: 「📝 単語管理」ボタンから開ける
• **CRUD操作**: 単語の追加・編集・削除
• **リアルタイム更新**: 変更が即座に学習画面に反映

### 4. 学習記録
• **学習セッション記録**: 正解・不正解の履歴をデータベースに保存
• **統計データ**: 将来的に学習進捗の分析が可能

## 使用方法

1. 開発サーバー起動:
  bash
   npm run dev

2. 単語管理:
   • 「📝 単語管理」ボタンをクリック
   • 新しい単語を追加、既存の単語を編集・削除

3. データベース操作:

bash
   # データベースの状態確認
   npx prisma studio

   # 新しいシードデータ投入
   npm run db:seed

## データベースファイル
• SQLiteデータベース: prisma/dev.db
• 学習データと単語データが永続化されます

これで英単語学習アプリがSQLiteデータベースで完全に管理されるようになりました。単語の追加・編集・削除が簡単にでき、学習記録も保存されます!

実装が終わったようです。確認してみましょう。

2025-07-10-17-01-07

なにやら「単語管理」というのが増えたようです。

2025-07-10-17-01-46

英単語を追加・削除・編集ができるようになったようです。

これで英単語を増やせるようになりましたね。

データ生成もやってもらう

では、各レベルごとに英単語を増やしてもらいましょう。

> レベルごとに英単語をそれぞれ50個追加してください。
> レベルごとに英単語を50個ずつ追加します。まず、シードファイルを更新して各レベルの単語を大幅に増やしま
す。
⠏ Thinking...

しばらく待っていると、級レベルごとにPrismaのシードファイルを作成した後にそれらを結合したファイルseed-all.tsが作成されました。

2025-07-10-17-13-48

さらに単語が追加された状態を確認するための確認用スクリプトも生成され、以下の結果が表示されました。

🛠️  Using tool: execute_bash (trusted)
 ⋮ 
 ● I will run the following shell command: 
cd /home/workspaces/blog/nextjsapp && npx tsx scripts/check-db.ts
 ⋮ 
 ↳ Purpose: Check database statistics

📊 データベース統計
==================
総単語数: 152
英検3級: 50単語
英検準2級: 52単語
英検2級: 50単語

📚 カテゴリ別統計
==================
名詞: 65単語
形容詞: 63単語
動詞: 19単語
名詞・動詞: 3単語
形容詞・名詞: 2単語

📈 学習セッション数: 0

 ⋮ 
 ● Completed in 0.746s

> 素晴らしい!レベルごとに英単語を50個ずつ(英検準2級は52個)追加することができました。

## 追加された単語数

### 📊 データベース統計
• **総単語数**: 152単語
• **英検3級**: 50単語
• **英検準2級**: 52単語  
• **英検2級**: 50単語

### 📚 カテゴリ別統計
• **名詞**: 65単語
• **形容詞**: 63単語
• **動詞**: 19単語
• **名詞・動詞**: 3単語
• **形容詞・名詞**: 2単語

## 追加された単語の特徴

### 英検3級レベル (50単語)
• 基本的な形容詞: beautiful, important, interesting, difficult
• 日常動詞: remember, forget, believe, decide, travel, visit
• 基本名詞: nature, culture, history, future, weather, season

### 英検準2級レベル (52単語)
• 社会・環境: environment, society, community, government
• 抽象概念: responsibility, independence, development, achievement
• 人間関係: relationship, cooperation, discussion, influence

### 英検2級レベル (50単語)
• 高度な形容詞: comprehensive, significant, substantial, remarkable
• 学術的語彙: fundamental, essential, crucial, vital, adequate
• 複雑な概念: contemporary, traditional, innovative, sophisticated

## 使用方法

1. 開発サーバー起動:
  bash
   npm run dev

2. データベース確認:
  bash
   npx tsx scripts/check-db.ts

3. 追加のシード実行(必要に応じて):
  bash
   npm run db:seed-all

これで各レベルに十分な数の英単語が追加され、より充実した学習体験が提供できるようになりました!

ちゃんと単語数を増やしてくれたようです。

2025-07-10-17-17-18

完成

今回はここまでで完成としました。あいまいな指示だけでここまで作れるのはすごいですね。

2025-07-10-17-24-24

最後に

今回は全くコードを書くことなく、Next.jsアプリケーションを作ることができました。

細かい作り込みとなってくるとなかなか難しいところもあると思いますが、プロトタイピングでさっと作れてしまうのは非常に気持ちいいですね。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.