【プログラミング】AIのコードが本番で通用しない理由、失敗したことがないからだった

1 : 2026/02/27(金) 01:43:55.12 ID:Fqm+1N+O0

AIが書いた「完璧な」コード、シニアエンジニアに却下される
https://capsaicin.site/blog/2026-02-27

金曜日の午後4時47分
プルリクエストの準備が整った。
Claudeを使って認証ミドルウェアを書いた。プロンプトを2回打っただけ。テストはパス、リンターも文句なし。あとはマージして週末を楽しむだけだ。
そこにSlackの通知が届いた。
「PR却下。月曜日に話しましょう」
意味がわからなかった。コードは完璧に動いているのに。
月曜の朝、自分のAIコードに対する考え方が根本から変わる出来事が起きた。

月曜日の朝、Marcusとの会話
シニアエンジニアのMarcusがコーヒーを片手に話しかけてきた。
Marcus:「このミドルウェア、説明してみて。何をするコードなの?」
自分:「ユーザーを認証します。JWTトークンを確認して、検証して、ユーザーを読み込む処理です」
Marcus:「なるほど。じゃあ、データベースが落ちたらどうなる?」
自分:「えっと……エラーが発生します?」
Marcus:「何行目で?」
コードを見つめる。「……10行目です。await User.findById のところ」
Marcus:「それで、次はどうなる?」
自分:「catchブロックが捕まえて、401を返します」
Marcus:「つまり、データベースが落ちているとき、ユーザーには『認証失敗』が返るわけだ」
自分:(まずい)「……はい」
Marcus:「それって正確な情報?」
自分:(冷や汗が出てくる)「いいえ。認証自体は成功しています。データベースが落ちているだけで」
Marcus:「そのとおり。では、データベースが落ちているときに1000人のユーザーがログインしようとしたら、何が起きる?」

AIが見えていなかった問題
データベースが落ちると、ログインのたびにこんなことが起きる。
1. トークンの検証は成功する(DBは不要)
2. User.findById がエラーを投げる
3. catchブロックが「認証失敗」を返す
4. ユーザーはパスワードが間違っていると思い込む
5. もう一度ログインを試みる
6. これが1000人規模で繰り返される
結果として、すでに苦しんでいるデータベースが大量のリトライでさらに追い詰められる。
Marcus:「8ヶ月前に全く同じことが起きた。AWSの請求が1万2400ドル跳ね上がって、4時間ダウンした」
自分:「でも……テストはパスしていたのに」
Marcus:「君のテストは、『物事がうまくいかないとき』を試していなかった」

つずきはソースで

レス1番のリンク先のサムネイル画像
2 : 2026/02/27(金) 01:44:43.24 ID:Fqm+1N+O0
>>1のつずき

AIとシニアエンジニアの本質的な違い
AIが書くコードは、
・想定された入力を処理できる
・テストをパスする
・きれいに見える
・ローカル環境で動く
シニアエンジニアが書くコードは、
・本番障害を生き延びる
・障害時に優雅に失敗する
・下流のサービスを守る
・「すべては壊れる」前提で設計されている
AIは深夜3時にデータベースのサーキットブレーカーがないせいで叩き起こされたことがない。
Marcusにはある。
それが違いだ。

「動く」だけでは足りない理由
昔の自分は言っただろう。「でも、コードは動いているじゃないですか」と。
Marcusの答えはこうだ。
「君のラップトップではね。データベースがlocalhostにあって、ネットワーク遅延がゼロで、何も壊れない世界では」
本番環境はlocalhostではない。本番環境とは、
・データベースが落ちる場所
・ネットワークがタイムアウトする場所
・キャッシュが古くなる場所
・負荷が突然スパイクする場所
・サービスが劣化する場所
・ユーザーが何度もリトライする場所
ローカルで「動く」コードは出発点にすぎない。本番で生き残るコードが、本当のゴールだ。
AIは出発点を与えてくれる。経験がゴールを教えてくれる。

5 : 2026/02/27(金) 01:45:06.73 ID:Fqm+1N+O0
>>2のつずき

自分が変えたこと
今もAIは使っている。ただし、「タイピングが異常に速いけど本番障害を見たことがない新人エンジニア」として扱うようにした。
AIの役割: 最初のドラフトを書く
自分の役割: AIには見えないものをすべて加える
AIで書いたコードに対して、今は必ずこう問いかける。
・外部サービスが落ちたらどうなる?
・毎秒1000回呼ばれたらどうなる?
・ネットワークが遅いときはどうなる?
・データが古かったらどうなる?
・ユーザーが何度もリトライしたらどうなる?
・深夜3時のデバッグに役立つエラーメッセージになっているか?
・本番で状況を把握するためのメトリクスは十分か?

1年後
先週、データベースのフェイルオーバーが起きた。
あのとき書き直した認証ミドルウェアは、完璧に動いた。
リトライの嵐も、ユーザー向けエラーも、インシデントも、何も起きなかった。ユーザーには「サービスが一時的に混雑しています。60秒後にお試しください」と表示されただけで、ほとんどの人は気づきもしなかった。
それはAIが良いコードを書いたからじゃない。
Marcusが「良いコード」の本当の意味を教えてくれたからだ。

3 : 2026/02/27(金) 01:45:03.43 ID:ci7LJaQcM
抜け道探しが好きなケンモメン
4 : 2026/02/27(金) 01:45:06.28 ID:9UJ8FWP20
(ヽ´ん`)AIは社会経験が無いって事か…俺か?
6 : 2026/02/27(金) 01:46:09.40 ID:2cobkgKN0
そういうのも全部AIがやってくれるようになるんやろ
7 : 2026/02/27(金) 01:49:07.85 ID:P0q3Zxxo0
こういう記事が増えればAIが勝手にコードも進化させていくやろ
8 : 2026/02/27(金) 01:51:00.58 ID:g0kwgFBE0
つまり新人天才エンジニアだから予想外のことは対応してないってことやろ
ただのノウハウの問題やろそれ
9 : 2026/02/27(金) 01:51:48.12 ID:fEuy8gdS0
エラーハンドリングが足りないってだけの話じゃん
AIが進歩すれば解決する話
10 : 2026/02/27(金) 01:54:23.13 ID:9lAbGJRt0
🤖「ちゃんと指示せえや」
11 : 2026/02/27(金) 01:54:29.05 ID:GrlnYQog0
すぐにテストケースもAIのほうがたくさん考えてくれるよ
12 : 2026/02/27(金) 01:54:44.39 ID:FP0YDgyjH
使う側が意識的にそれをプロンプトに書き上げなければそりゃそうよ
本番環境のリスクヘッジを織り込みながら確実な答えを求める道具なんだから
ゴールは見えたけれどそこに何が考えられるかまでを引き出す道具ですよ
22 : 2026/02/27(金) 02:00:44.30 ID:ItauWUuy0
>>12
折り込み済みなら問題ない?
経験が必要?
13 : 2026/02/27(金) 01:54:45.46 ID:S1mIlRR40
今のところ誰がやっても同じことはAI最強なんだけど
新規開発の分野だとAIは話半分程度に見ないとダメだなあとは思う
14 : 2026/02/27(金) 01:56:21.60 ID:NFElYTA10
こういう1/nタイプのツイート大っ嫌いだけど
>タイピングが早いけど本番障害を見たことがないエンジニア
で笑ってしまった
15 : 2026/02/27(金) 01:57:10.29 ID:Acjkhl1q0
そりゃ何も書かれなきゃAIも可読性優先で余計な処理の無い簡潔なコードを書くでしょ
16 : 2026/02/27(金) 01:57:11.61 ID:TgZdXMpm0
さすがきよーけん君だな
17 : 2026/02/27(金) 01:57:46.60 ID:VdWGh+4TH
嘘っぽいな
AIは実際に使用されてるwordpressとかのオープンソースのコードで訓練されてるんだろ?
そのままのサンプルが有りまくりだろ
18 : 2026/02/27(金) 01:58:16.67 ID:DcCFAyoH0
だから人間はどういうテストをしてどんなテスト結果になったのかをチェックする仕事がある
19 : 2026/02/27(金) 01:59:41.50 ID:ct9t4WaE0
追加でいろんな条件考慮したコードの提案してたけどエンジニアが無視してたんじゃないの?
20 : 2026/02/27(金) 02:00:22.57 ID:zH45hgGj0
LLMはガチャ要素ありの統計モデルだからちゃんと読まなきゃダメよ
たまにウ●コが混じってるから
23 : 2026/02/27(金) 02:00:52.03 ID:bJDX3p3c0
(ヽ´ん`) 「AIがコーディングを失敗する話を体験談風に書いてください…っと」
🤖「金曜日の午後4時47分…」
25 : 2026/02/27(金) 02:03:50.43 ID:p9Eb5UsM0
AIが吐き出したコードを
理解して使ってるの?

動いてるっぽいからヨシ!になってるのが怖い

26 : 2026/02/27(金) 02:04:37.18 ID:ZNrOKAAl0
要するにAIは馬鹿
27 : 2026/02/27(金) 02:06:56.27 ID:p9Eb5UsM0
嫌儲を監視するスクリプト書かせようかな

北海道とか札幌とかでスレ立ったら
通知送るやつ

28 : 2026/02/27(金) 02:07:03.50 ID:vszqLqwO0
んなモンAIに考えさせりゃいーべ?
全部の行でエラー起きた想定で正しく動く?ってね
何のための指示書よ
29 : 2026/02/27(金) 02:07:11.47 ID:FP0YDgyjH
曖昧な記憶でマウントかましてくる奴と何度も指示だしてわかりやすく説明するAIなら
AIにコードに注釈入れさせながら試験する方がまだ効率がいいよ人間に頼りたくないわ
30 : 2026/02/27(金) 02:07:56.33 ID:kPbRkR3K0
個人用ソフトならどうでもいい話だわな。
33 : 2026/02/27(金) 02:15:38.43 ID:jpI9yMKG0
学習元のコードにはエラー処理まで詳細には書かれてないからな
AIで自律的にシニアエンジニアと同等の事ができて学習すれば
いつかは解決できるかもしれんけど

コメント

タイトルとURLをコピーしました