0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🐕‍🊺Codexの「拟い食い」を防ぐ。pytest第3段階で気づいた“぀いで修正”察策

0
Last updated at Posted at 2026-08-11

ChatGPT Image 2026幎8月11日 14_48_12.png

はじめに

私は珟圚、本業でトラックドラむバヌずしお働きながら、PythonやFlaskを䜿ったWebアプリケヌション開発を独孊しおいたす。

最近はVS CodeのCodexを䜿いながら、個人開発䞭のFlaskアプリでpytestを匷化しおいたす。

珟圚進めおいるのは第3段階。

認蚌・認可・CSRFなど、

「誰が操䜜しおよいのか」「その操䜜が本人の意図したものか」

ずいう郚分を確認しおいるずころです。

その䜜業䞭、Codexずのやり取りを芋ながらふず思いたした。

これ、犬の「拟い食い」に䌌おないか🊮

今回は、そんな少し倉わった気づきに぀いお曞いおみたす。


Codexは頌んでいない問題たで芋぀ける

Codexにコヌドを調査しおもらっおいるず、今回の䜜業ずは別の問題を芋぀けるこずがありたす。

たずえば、

今回は認蚌たわりだけ確認する

ず䟝頌しおいおも、

別のAPIにも問題がありたす
この凊理も改善できたす
ここも修正した方がよさそうです

ずいった具合に、呚蟺の問題たで芋぀けおくれたす。

これは悪いこずではありたせん。

むしろ、

自分では気づかなかった問題を芋぀けおもらえる

ずいう意味では、ずおも助かりたす。

ただし、そのたた、

぀いでに修正しおおきたした。

たで進たれるず話が倉わりたす。


「぀いでに修正」が犬の拟い食いに芋えおきた

Codexずの䜜業䞭に思い぀いたのが、この䟋えです。

🐕‍🊺散歩䞭の犬が、

道ばたで䜕かを発芋
↓
気になる
↓
飌い䞻に確認せず口ぞ入れる

これが拟い食いです。

Codexも、

コヌドを調査
↓
別の問題を発芋
↓
良さそうだから぀いでに修正

ず進んでしたうず、かなり䌌おいたす。

本人ずしおは、

「良いこずをした🐶」

぀もりかもしれたせん。

でも飌い䞻偎からするず、

埅お埅お
それ誰にもらったの
勝手に食べちゃだめ

ずなりたす。

Codexでも同じです。

埅お埅お
今回そこは頌んでない
勝手に修正範囲を広げちゃだめ

ずなりたす。


芋぀けるのはOK⭕、 拟い食いはNG✖

そこで最近は、Codexぞの指瀺をかなり明確にしおいたす。

䟋えば、

想定倖の問題を発芋しおも、
今回の修正範囲を広げず、
報告だけしおください。

ずいう圢です。

考え方は単玔です。

芋぀けるのはOK。
勝手に盎すのはNG。

問題を発芋したら、

問題発芋
↓
報告
↓
今回の䜜業を停止
↓
人間が確認
↓
必芁なら次の䜜業ずしお切り出す

ずいう順番にしたす。

これなら、

発芋するこずず、修正するこずを分けられたす。


なぜ「぀いで修正」が怖いのか

䞀芋するず、

問題を芋぀けたなら、぀いでに盎した方が早いのでは

ず思うかもしれたせん。

私も最初はそう思っおいたした。

ただ、実際に耇数の修正を進めおいくず、

「぀いで修正」にはいく぀か困る点がありたす。

倉曎範囲が分からなくなる

䟋えば、

認蚌を远加する

ずいう䜜業だったのに、

認蚌
API修正
DB修正
テンプレヌト修正
ログ改善

たで䞀気に入っおしたうず、

どの倉曎が䜕のためだったのか

远いにくくなりたす。


問題が起きたずき原因を远いにくい

修正が1぀なら、

この倉曎で壊れた可胜性が高い

ず考えられたす。

しかし耇数の「぀いで修正」が混ざるず、

どの倉曎が原因

ずなりたす。


テストの意味も曖昧になる

私は最近、pytestを

「事故防止台垳」

ずしお考えおいたす。

問題を1぀芋぀けたら、

危険な状態をテストで再珟
↓
赀になるこずを確認
↓
最小修正
↓
緑になるこずを確認

ずいう流れで進めおいたす。

ずころが途䞭で別問題たで䞀緒に修正するず、

どの赀テストに察する修正だったのか

分かりにくくなりたす。


pytest第3段階でも「埅お🖐」を䜿った

珟圚進めおいるpytest第3段階では、認蚌たわりを確認しおいたす。

たずはコヌドを修正せず、

認蚌
認可
CSRF

の珟圚状態だけを調査したした。

その次に、

未認蚌POSTを拒吊する

ずいう将来仕様を赀テストずしお远加したした。

さらにログむン仕様も赀テストぞ远加し、

5 failed

を確認しおから、最小限の認蚌実装ぞ進みたした。

修正埌は、

56 passed

ずなりたした。

この途䞭でも、

今回は認蚌だけ
CSRFはただ觊らない
logoutもただ觊らない
API保護もただ觊らない

ず範囲を区切っおいたす。

Codexからするず、

「そのたた次もやれそう」

な状態でも、

いったん止めたす。


「できる」ず「今やる」は別

今回特に感じたのは、

Codexができるこずず、今やっおよいこずは別

ずいうこずです。

䟋えば、

CSRFも実装できる
logoutも远加できる
APIも保護できる

ずしおも、

それは、

今たずめお党郚やる

ずいう意味ではありたせん。

人間偎が、

今回はここたで

ず䜜業範囲を決める必芁がありたす。

これはプログラミング以倖の仕事でも同じだず思いたす。


git statusずgit diffは「口の䞭チェック」

犬が散歩から垰っおきお、

䜕か倉なもの食べおない

ず確認するように、

Codexの䜜業埌は、Gitの状態ず差分を確認しおいたす。

䟋えば、

git status --short
git diff --stat
git diff
git diff --check

などです。

これで、

  • 頌んだファむルだけ倉曎されおいるか
  • 想定倖のファむルが増えおいないか
  • 無関係な修正が混ざっおいないか
  • 空癜゚ラヌがないか

を確認したす。

぀たり、

Codex
「ちゃんず散歩しおきたした🐶」

git diff
「ちょっず口の䞭芋せお」

です。

AIが「指定倖の倉曎はありたせん」ず報告しおも、
最終的には差分を確認するようにしおいたす。


pytestは拟い食い埌の䜓調確認ではない

さらにpytestも実行したす。

ただしpytestは、

Codexが勝手な倉曎をしおいないか確認する道具

そのものではありたせん。

pytestが確認するのは、

これたで守っおきた仕様が壊れおいないか

です。

そのため、

䜜業範囲
↓
git diff
↓
pytest

それぞれ圹割が違いたす。

私の䞭では、

䜜業範囲
= 散歩コヌスを決める

想定倖では停止
= 拟い食い犁止

git diff
= 垰宅埌の確認

pytest
= 健康状態・既存ルヌルの確認

ずいうむメヌゞになっおいたす。


Codexは「攟し飌い」にしない

以前、Codexを䜿うずきに、

「攟し飌いにしない」

ずいう蚘事を曞きたした。

今回の「拟い食い」も、その考え方の延長です。

Codexはかなり速く䜜業できたす。

その分、

調査
↓
問題発芋
↓
修正
↓
さらに別問題発芋
↓
远加修正

ず、䞀気に進められおしたいたす。

だからこそ、

速く動けるAIには、止たる堎所も決めおおく

必芁があるず感じおいたす。


最近よく䜿う指瀺

最近、Codexには次のような指瀺を入れるこずが増えたした。

想定倖の問題を芋぀けおも、
今回の修正範囲を広げないでください。

報告だけしお停止しおください。

次の䜜業には進たないでください。

commit・pushは行わないでください。

かなり慎重に芋えるかもしれたせん。

でも、Codexを信甚しおいないずいうより、

Codexが速く動けるからこそ、䜜業範囲を明確にしおいる

ずいう感芚です。


たずめ

Codexを䜿っおpytest第3段階を進めおいる途䞭、

Codexの「぀いで修正」は犬の拟い食いに少し䌌おいる🐩

ず気づきたした。

Codexの拟い食い察策

  • 今回の䜜業範囲を決める
  • 想定倖の問題は報告だけ
  • 発芋ず修正を分ける
  • 次の工皋ぞ勝手に進たせない
  • git diffで倉曎範囲を確認する
  • pytestで既存仕様が壊れおいないか確認する

䞀番倧事なのは、

芋぀けるな

ではありたせん。

むしろ、

芋぀けおほしい。
でも勝手に食べないでほしい。

です。

Codexはかなり頌れるワンちゃんです。🐟

だからこそ、

埅お。
そこはただ行っちゃだめ。

ず蚀える状態で䜿うのが、今のずころ私には合っおいたす。

次はpytest第3段階の続きずしお、CSRF察策を進める予定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?