AI時代のハインリッヒの法則と「静かなるミス」
先日、少しざわついたニュースが流れていた。 AIコーディング支援ツールとして話題の Anthropic の「Claude Code」関連で、ソースコード流出騒ぎが起きたという話だ。
もちろん、真相や影響範囲については慎重に見る必要がある。でも、この件で改めて思った。
「AIを作っている側ですら、普通に事故る」。
しかも、それは「無能だから」ではない。むしろ逆だ。 世界トップクラスのエンジニアと、最先端のセキュリティ体制を持っている企業ですら、ミスや漏れを完全には防げない。
これが現実なんだと思う。
「1:29:300」
失敗学や安全管理の世界でよく語られる「ハインリッヒの法則」の数字だ。 1つの重大事故の背後には29の軽微な事故があり、そのさらに下には300の「ヒヤリハット」が存在する。
長くシステム開発をやっていると、この考え方は嫌というほど理解できる。
本番障害って、だいたい突然発生したように見えて、実際には小さな違和感の積み重ねだったりする。
ログに一瞬だけ出ていた警告。 「まあ大丈夫だろ」で放置された例外。 誰も読まないテスト結果。 属人化した手順書。
そういう「小さいノイズ」が、最後に大事故へ繋がる。
だからこそ、我々はCI/CDを導入し、テストを自動化し、レビューを仕組み化し、人間の注意力に依存しない世界を作ろうとしてきた。
でも最近、そこに新しい問題が入り込んできた。
AIだ。
AIは便利だ。 これはもう否定しようがない。
コードを書く速度は上がる。 ドキュメント作成も速い。 調査も早い。
でも、その裏で恐ろしいほど大量の「小さなミス」を同時生成している。
しかも、そのミスが厄介だ。
完全なデタラメならすぐ気づける。 問題は、「95点ぐらいに見える間違い」を大量に作ることだ。
変数名も自然。 コードも動きそう。 設計もそれっぽい。 ドキュメントも流暢。
だが、よく見ると境界条件が抜けている。 認証が甘い。 例外処理が壊れている。 仕様の解釈が微妙にズレている。
人間が書いた雑なコードより、むしろ発見しづらい。
これまでのハインリッヒの法則では、「300のヒヤリハット」は人間の不注意や設備老朽化から発生していた。
でもAI時代のヒヤリハットは違う。
効率化の副作用として、自動生成される。
しかも高速・大量に。
つまり、AIによって生産性が10倍になるということは、雑なアウトプットも10倍の速度で流れ込んでくるということでもある。
ここが怖い。
最近、この問題に対しては「ハーネス設計」という考え方がかなり重要視され始めている。
単純に「AIにコードを書かせる」のではなく、
- どういう制約条件で動かすか
- 何を禁止するか
- どこまで自動実行を許可するか
- どうレビュー工程へ流すか
まで含めて、AIを囲い込む。
つまり、AIを「賢い開発者」として扱うのではなく、暴走する可能性がある高速自動化装置として扱うという発想だ。
さらに、最近のAI開発では、
- AIにレビューさせる
- AIにセキュリティチェックさせる
- AIに差分解析させる
みたいな、「AIをAIで監視する」流れも普通になってきている。
ただ、結局一番重要なのは、その外側のルール設計だと思う。
どんな権限を与えるのか。 どのディレクトリを触らせるのか。 本番系コマンドを禁止するのか。 承認フローをどう通すのか。
結局、最後はガードレール設計の話になる。
あと、AI時代になって逆に重要性が増しているのが、テスト設計とレビューしやすい設計だ。
昔は「実装が主役」で、テストやモジュール設計は補助扱いだった。
でもAI時代は逆転し始めている気がする。
実装はAIが大量生成できる。1000行の差分が一晩で降ってくる。
そうなると価値が出るのは、
- 何を保証したいのか
- どこが壊れると危険か
- 境界条件をどう定義するか
- 差分を小さく保てるか
- 責務が分離されているか
- 危険箇所が局所化されているか
の方だ。
Property-Based Testingみたいな「予想外入力を大量生成する系」の発想や、God Objectを避ける昔ながらのモジュール分割は、AI時代とむしろ相性がいい。
要は、AI以前から言われていた設計原則が、今になって価値を再発見されているという話だ。新しい原則が生まれているのではなく、古い教科書がもう一度開かれている感じに近い。
昔は、
「人間がミスするから自動化しよう」
だった。
でも今後は、
「自動化が大量にミスするから、それを制御する仕組みを設計しよう」
という世界になるらしい。
我ながら、ちょっと笑える話だ。
AIに任せれば早く帰れるはずだったのに、気がついたらAIの保護者会みたいなものに出席している。 コードを書かせるはずだったのに、いつの間にかAI監視員としての勤務時間のほうが伸びている。
でも、たぶんこれが次の時代のインフラなんだろう。
10年前、CI/CDや自動テストが「意識高い人の文化」だった頃があった。 でも今では、まともな開発ではほぼ必須になった。
たぶん数年後には、
- AIハーネス
- LLM監査
- 自動ガードレール
- AI出力の検疫プロセス
みたいなものが当たり前の開発基盤になっていて、若手に「えっ、昔ってこれ無しでやってたんですか?」と真顔で驚かれるんだと思う。
便利になった、と手放しで喜ぶ時期はもう終わった。 代わりに、強力なAIエンジンを積んだ車のハンドルを誰がどう握るか、という別の遊びが始まった感じだ。
ハインリッヒのピラミッドを平坦に保ったまま、いかに前に進むか。
最近は、そんなことをぼんやり考えている。