CodexでCSV点検を自動化する:検査コードを作り、毎回同じ基準で確かめる
売上一覧の欠損や重複を検出する小さな検査から開始。Codexへの依頼、テストデータ、定期実行時の停止条件を整理します。

毎月の確認作業を、同じルールで実行できるようにする
CSVの必須列や重複IDは、ルールをコードにすると毎回同じ基準で調べられます。Codexには検査プログラムの作成や修正を依頼し、完成後の定期点検はそのプログラムで実行する構成を考えます。AIを毎回呼ぶ必要があるかも、業務ごとに判断できます。この記事の売上データとコード依頼は練習用です。
入力の約束を、具体的な検査項目にする
「おかしな数字を見つける」だけでは、返品によるマイナス値を誤りと判断することがあります。どの列が必須か、空欄や返品をどう扱うかを担当者が決めます。値を自動修正するかどうかも、別の要件として扱います。
表は横にスクロールできます
| 項目 | 今回のルール | 違反したとき |
|---|---|---|
| 必須列 | order_id、sale_date、amount | ファイル全体をエラーにする |
| 注文ID | 空欄不可・同一ファイル内で一意 | 行番号を報告する |
| 日付 | YYYY-MM-DDの実在日 | 行番号と値を報告する |
| 金額 | 円単位の整数・負数可 | 整数でなければ報告する |
| 元ファイル | 読み取りのみ | 自動修正しない |
- 仕様を書く
例外の扱いを決める
- コードを作る
テストと一緒に依頼
- 既知データで試す
検出漏れを確認
- 定期実行
失敗時は担当者が確認
テスト例を添えてコード作成を依頼する
架空のCSVを使い、期待する判定を先に決めます。正常なファイルだけでは、エラー時の動作を確認できません。担当者が正解を知っている小さな入力から始めると、Codexの生成物をレビューしやすくなります。
Python標準ライブラリで、売上一覧CSVを読み取り専用で検査するCLIを作ってください。 必須列:order_id,sale_date,amount。UTF-8とUTF-8 BOM付きに対応。注文IDは空欄不可・一意。日付はYYYY-MM-DDの実在日。金額は円単位の整数、負数は返品として許可。 入力を書き換えず、検査結果を別ファイルのJSONに出してください。結果には行番号、列名、エラー種別を含め、正常・入力不正・実行失敗を終了コードで区別してください。 テスト:正常、ID重複、必須列不足、存在しない日付、空ファイル、負数の正常値、BOM付き。外部APIは不要です。依存パッケージを追加する前に理由を示してください。
表は横にスクロールできます
| 入力例 | 期待結果 |
|---|---|
| 2026-10-14/1200円の整数値 | 正常 |
| 2026-02-30 | 日付エラー |
| 同じorder_idが二行 | 重複を検出 |
| amountが空欄 | 金額エラー |
| amountが-500 | 返品として正常 |
| ヘッダーしかない | 空データの扱いを仕様で決める |
非対話実行を使うなら、読み取り範囲と出力を限定する
コードを作る対話と、検査仕様をレビューする処理は分けて考えます。次の例は、すでに用意した仕様書を読み取り専用で確認するコマンドです。Git管理された練習用フォルダで使い、秘密情報のあるディレクトリや外部サービスを接続しない構成にします。
codex exec --sandbox read-only --output-last-message review.txt "csv-spec.mdを読み、欠けている検査条件を指摘してください。ファイル変更や外部送信はしないでください。"
生成コードの確認順序
差分を読む
入出力先と外部通信の有無を確認
テストを実行
決めた期待結果と照合
コピーで試す
元データを残して実行
運用に登録
上限時間と失敗時の扱いを決める
定期実行は、AIの起動と切り離して管理できる
固定ルールのCSV点検なら、検査プログラムをタスクスケジューラ等で起動できます。仕様変更時にCodexへ修正を依頼する構成なら、点検のたびにAIへデータを送る必要がありません。一方、自由記述の分類などを追加するなら、モデルの変更による結果の違いも確認します。
実行環境のCLIに対応したオプションを確認できます。



