OpenAI Codexで簡単なWebアプリを作成してみる

OpenAI Codexで簡単なWebアプリを作成してみる
Photo by Dima Solomin / Unsplash

概要

今回は ChatGPT5 Codex を使って、コードを書かずに Web アプリを作成してみたいと思います。
テーマは、娘が高校受験を控えているので、英単語クイズアプリにしました。
勉強に役立ててもらえたらうれしいです。

手順

(1) VSCodeに「Codex - OpenAI's coding agent」拡張をインストールします。

(2) Next.jsを使うことにしたので、環境を整えます。

$ nvm install --lts
$ nvm use --lts
Now using node v22.19.0 (npm v10.9.3)
$ node -v
v22.19.0
$ npm -v
10.9.3

(3) codexを使う準備をします。

$ sudo npm install -g @openai/codex
$ sudo npm install -g yarn

$ codex

初回実行時は、codexを有料版のChatGPIユーザーで利用するか、従量課金のResponses APIを利用するかを選択する画面が出てきます。ここでは、有料版のChatGPIユーザーを選択しました。
ブラウザが起動してOpenAIのログイン画面が出てくるので、ログインをしたらブラウザを閉じます。

You are running Codex in /mnt/data/Study/nextjs/eng-word-quiz

Since this folder is version controlled, you may wish to allow Codex
to work in this folder without asking for approval.

  1. Yes, allow Codex to work in this folder without asking for approval
  1. No, ask me to approve edits and commands

Press Enter to continue

╭─────────────────────────────────╮
│ >_ OpenAI Codex (v0.40.0) │
│ │
│ model: gpt-5-codex /model to change │
│ directory: /mnt/data/…/nextjs/eng-word-quiz │
╰─────────────────────────────────╯

To get started, describe a task or try one of these commands:

/init - create an AGENTS.md file with instructions for Codex
/status - show current session configuration
/approvals - choose what Codex can do without approval
/model - choose what model and reasoning effort to use

▌ Improve documentation in @filename

⏎ send Ctrl+J newline Ctrl+T transcript Ctrl+C quit

(4) 上記と違うターミナルで、eng-word-quizという名前のプロジェクトを作成します。

$ npx create-next-app@latest eng-word-quiz --use-yarn
✔ Would you like to use TypeScript? … No / **Yes**
✔ Which linter would you like to use? › **ESLint**
✔ Would you like to use Tailwind CSS? … No / **Yes**
✔ Would you like your code inside a `src/` directory? … **No** / Yes
✔ Would you like to use App Router? (recommended) … No / **Yes**
✔ Would you like to use Turbopack? (recommended) … **No** / Yes
✔ Would you like to customize the import alias (`@/*` by default)? … **No** / Yes
Creating a new Next.js app in /mnt/data/Study/nextjs/eng-word-quiz/eng-word-quiz.

(5) 動作確認をします。

$ cd eng-word-quiz/
$ npm run dev

(6) さて、準備は完了です。さっそくcodexを使っていきましょう。codexコマンドを実行したターミナルで/initを実行します。

(7) Codexに指示を出すには、ターミナル上で行う方法(CLI版)と、下図のマークからCodexパネルを開いて、指示を入力する方法があります。

ここでは、ターミナル(CLI版)から次の指示を送信してみました。

スマートフォンからのアクセスを前提にしたWebアプリケーションを作成してください。英単語クイズのアプリで、英単語を表示し、その意味を5つの選択肢から選ぶというものです。

ディレクトリ内のファイルを読み込んで、いろいろ書き加えています。
しばらくすると、ブラウザが起動し実行結果が表示されました。

凄い! 良い感じです。
次の図は、正解をクリックしたときのレスポンスで、正しく動作しています。「次の問題へ」もきちんと動作し、プログレスバーも動いていました。

15問解いたあとは、正答率等の結果もきちんと表示され、「もう一度チャレンジ」を押せば、1問目から開始されます。

スマホから表示しても問題ありません。


次にcodexに、 問題の英単語を含む中学レベルの英文を表示し、問題対象の英単語には下線を引くようにしたいです。という指示を飛ばしてみました。

upload in progress, 0

このように少しずつ指示を出して、アプリを作成していくのが良いようです。
ある程度会話が続いたら、トークンを節約するために/compactを実行して、会話を要約します。

/compact

> Compact task completed

最終的には、下記の機能を持ったアプリができあがりました。

  • 認証機能
  • ユーザーごとの学習履歴を管理
  • 単語と例文の音声再生。正解・不正解時に音を出す。
  • 1回の学習中に、間違えた問題を繰り返し出題
  • 忘却曲線を考慮し、間違えた問題を後日、複数回出題
  • 高校入試用の英単語からの出題
問題出題画面

娘にアプリを紹介したところ、ハマったみたいで高校受験の範囲の30%くらいを一気にやってしまったようです。

この調子で、勉強を続けてくれたらいいな(笑)