展覧会情報作成中 ChatGPT & Codex

少し前にTwitterで盛岡の展覧会情報を集約した掲示板とかがあったらという話しになりまして。 その程度なら作ってしまおうかと。 久しぶりに仕事外でVPS借りたりドメイン取得しなおしたり。 個人的なサービスを作成するときに昔と大幅に変わったのはAIの存在。 今回は chatGPT & Codex の組み合わせで実装しています。 ドメイン取得からVPSの候補選定、VPSの立ち上げまで実に素早くできたのはchatGPTのおかげ。 こちらの前提条件を元に候補をすばやく出してくれるのでこちらも素早く対応ができる。

現在の展覧会情報は仕様駆動開発っぽいことしてます。Space-kitやdifyなんて使っておりませんが。 で、実際にやっている概要とフローをchatGPTに書かせたのが下記になります。

概要

今回の開発では、いきなりAIに「この機能を作って」と実装させるのではなく、まず人間とChatGPTで要件・設計・判断事項を整理し、その内容を docs/ に現在仕様として残します。

そのうえで、実装したい変更を plans/issue-xxx.md という小さな単位に分け、Codexにはまず「実装計画だけ」を作らせます。計画の中に人間判断が必要な項目があれば、そこで一度止めて、人間が方針を決めてから実装へ進みます。

実装後は、テスト・回帰確認・実環境確認を行い、仕様と実装が一致していることを確認してからplanを完了にします。実環境で新しい事実が分かった場合は、コードを無理に合わせるのではなく、仕様・実環境・実装のどこが間違っているかを切り分けるのも重要なポイントです。

今回でいうと、microCMSへの登録テストで400エラーが出た際、コードをすぐ修正せず調査だけ行い、結果として specialHours のmicroCMS側フィールド型が仕様と違っていたことを発見できました。仕様駆動にしていたため、「正しいのはdocsで、実スキーマ側がずれている」と判断できました。

簡単なフロー

やりたいことを考える
        ↓
ChatGPTと要件・仕様を整理
        ↓
docs/ に「現在の正解」を記録
        ↓
変更を小さなissueに分割
        ↓
Codexにplanだけ作らせる
        ↓
人間判断が必要?
   ┌────┴────┐
   │           │
  Yes          No
   │           │
人間が判断     │
   └────┬────┘
        ↓
Codexが実装
        ↓
関連テスト・全回帰テスト
        ↓
必要なら実環境で確認
        ↓
問題あり?
   ┌────┴────┐
   │           │
  Yes          No
   │           │
原因調査       │
仕様 / 実装 /  │
外部設定を切分け
   └────┬────┘
        ↓
docs・planへ結果反映
        ↓
コミット
        ↓
次のissueへ

もう少し役割で表すと、こんな分担です。

人間
  └─ 目的・最終判断・承認

ChatGPT
  └─ 要件整理・仕様整理・Codexへの指示作成

docs/
  └─ 現在の正しい仕様

plans/
  └─ 今回変更する内容と実装計画

Codex
  └─ 調査・計画・実装・テスト

実環境
  └─ 最終的な事実確認