🚀
Codex CLI:30分クッキング-AIチャットポッドDEMO-1
💡 Codex CLI でAIチャットポッドのDEMOを30分で実装
Codex CLI の実装DEMOとして、AIチャットポッドを30分クッキングで実装してみた。
🧠 ChatGPTにAIチャットポッドのおすすめ構成を聞く
最短で動くWebアプリ構成(ChatGPTのおすすめ)
- フロント/フルスタック: Next.js 15(App Router, TypeScript)
- UI: Tailwind CSS + shadcn/ui(Radix UI)
- ストリーミング: Vercel AI SDK(React Server Components/Edge対応)
- モデル接続: プラガブル(OpenAI / Azure OpenAI / Anthropic / AWS Bedrock を切替)
- ベクトルDB: 開発中は SQLite + pgvector(Postgres) or Chroma、社内向けは OpenSearch Serverless
- 認証: NextAuth.js(GitHub OAuth or Azure AD / Cognito)
- 運用: Vercel or Netlify(まずはVercelが楽)
「PoC速度重視。まずはサーバーレス(Edge)でストリーミングがサクッと動く体験を作り、RAGなどは最小構成で後付け。」だそうです。
なので、ChatGPTに上記を元にして、人手で行った方が良い作業と、codexに任せる作業を切り分けてもらう。
⚙️ 人手で行った方が良い作業
nvm、Node LTS、pnpmはインストールされている前提(githubとNetlifyのアカウントもあり)
(1) プロジェクトの作成(雛形)
- Next.jsの雛形をTypeScript/ESLint/Tailwind込みで作成し、プロジェクトへ移動します。
pnpm create next-app@latest ai-chat-poc --ts --eslint --app --tailwind
cd ai-chat-poc
(2) APIキーの準備
- Google AI Studio からAPIキーを取得(無料枠)geminiが無料枠を一番使えそう。。。
- 作成したキーを .env.local に記入
GEMINI_API_KEY = <APIキー>
GEMINI_MODEL = gemini-2.0-flash
GEMINI_API_BASE_URL = https://generativelanguage.googleapis.com/v1beta
(3) ローカル起動の確認
pnpm dev
# http://localhost:3000 にアクセス
- 開発サーバを起動(デフォルト http://localhost:3000)。
- ブラウザでアクセスして動作確認します。
(4) Gitリポジトリ初期化と最初のコミット
git init -b main
echo -e ".env*\n.next\nnode_modules" >> .gitignore
git add -A
git commit -m "chore: init"
- 新しいGitリポジトリを作成し、デフォルトブランチ名をmainにします。
- 機密(.env*)と巨大ディレクトリ(ビルド成果物.next、依存node_modules)をコミット対象外にします。
- すべての変更をステージング&最初のコミットを作成します。
GitHubで空のリポジトリ<repo>を作成後、pushします。
git remote add origin https://github.com/<your-account>/<repo>.git
git push -u origin main
(5) Netlifyでビルド
フリーのホスティングサイトであるNetlifyでGitHub連携してビルドします
- NetlifyのWeb管理画面で「Add new site → Import an existing project → GitHub」を選択
- 対象リポジトリを選ぶ
- 「Build command」→ pnpm build、「Publish directory」→ .next に設定(自動検出でも可)
- 「Deploy site」をクリック
以下の Hello World 的な画面が表示される

ここからCodex CLI に調理してもらいます。
🤖 Codex CLIでの作業
作成した"ai-chat-poc"ディレクトリでcodexを起動
Codexへの指示
ここにTypeScript + ESLint + App Router + Tailwind CSSを使った
Next.jsプロジェクトの雛形があります
AIチャットボットのデモを作成したいです。
APIはgoogleを使用します。.env.localにAPIキーがあります。
Codexの回答
### 想定プランです。
- 既存構成と依存関係を確認し、必要パッケージ(Vercel AI SDK等)を整理
- チャットUI(履歴・入力欄・ローディング表示)を実装し、Tailwindで調整
- Google APIを使った会話ロジックとエラーハンドリングを実装・検証
この流れで進めてよいかご確認ください。
- 依存追加のため npm install ai @ai-sdk/google を実行してよいでしょうか?
- npm install が失敗しました。代わりに pnpm add ai @ai-sdk/google を試してよいでしょうか?
Vercel AI SDKライブラリ と Google Geminiモデル用のプロバイダ をインストールした模様
### 以下の編集を行ってよいかご確認ください。
- src/app/api/chat/route.ts を新規作成し、Vercel AI SDK + Google(Gemini)でストリーミング応答するAPIエンドポイントを実装
- src/app/page.tsx をチャットUI(履歴表示・入力フォーム・ローディング/エラー表示)へ差し替え、useChat を利用
- 必要に応じて src/app/layout.tsx のメタデータをチャットデモ向けに更新
実装完了
こんな感じで実装完了。(15分くらいですかね)
### 実装内容
- src/app/api/chat/route.ts に Gemini を利用したストリーミング API を追加し、GEMINI_API_KEY を参照するようにしました(未設定時のエラー応答も実装)。
- src/app/page.tsx を @ai-sdk/react の useChat ベースのチャット UI に置き換え、履歴表示・ステータス表示・停止ボタン・エラーハンドリングを実装しました。
- src/app/layout.tsx のメタデータをチャットデモ向けの内容に更新しました。
- package.json / pnpm-lock.yaml に ai, @ai-sdk/google, @ai-sdk/react を追加しました。
検証
- pnpm lint
次のステップ
- pnpm dev を実行してブラウザでチャットの動作を確認してください。
💬 チャット画面
エラー解消して無事に起動完了

こんな感じでチャット画面が表示され
チャットを打つとGemini先生から俊速で回答が返ってくる。

ということで本日の30分クッキングは終了。
Discussion