バイブコーディングの限界──壊れる日は突然やってくる|内科医のAI開発記
前回(#32)では、有料の音声認識サービスを自作で置き換えた話を書いた。今回は、もう少し正直な話を書く。
ツールが壊れた。
朝、いつものように診察室でPCを開いたら、昨日まで動いていた紹介状ツールが動かない。ボタンを押しても反応しない。コンソールを開くとエラーが赤く並んでいる。
昨夜、別のツールを直していたときに、共通部分を触ったらしい。らしい、というのは、自分でも何を変えたか正確に把握できていないからだ。
バイブコーディングの最大の弱点
コードを「書いて」いないから、何がどう繋がっているかの全体像が頭に入っていない。
AIに「ここを直して」と言う。AIが直す。動く。次に行く。この繰り返しで35個のツールが動いている。
でも「ここを直して」のひとつが、別の場所を壊すことがある。いわゆるデグレーション。
エンジニアなら当たり前に知っている概念だが、僕はこれを体で覚えた。
壊れたことに気づかない
もっと困るのは、壊れたことに気づかないケースだ。
あるツールの表示レイアウトが崩れていたことがあった。ある日、印刷プレビューを開いて「あれ、前と違うな」と気づいて調べたら、共通CSSの変更が波及していた。
いつから崩れていたかはわからない。数日かもしれないし、もっとかもしれない。
テストを書いていないから、壊れたことを検知する仕組みがない。気づくのは、自分が使ったときだけだ。
テストを書けばいい、のか
「テストを書けばいいじゃないか」と言われると思う。
その通りだ。
ただ、バイブコーディングの世界では、テストを書くのもAIに頼むことになる。テスト自体が正しいかどうかを、自分では判断しきれない。
テストが通っているのに壊れている、ということが起きうる。実際に起きた。
肥大化の問題
ツールが増えるたびに、共通部分が太くなっていく。最初は1つのHTMLファイルで完結していたものが、共通モジュールを参照し、プロキシサーバーを経由し、設定ファイルを読み込む構成になる。
これは自然な進化だが、非エンジニアにとっては「いつの間にか、全体が見えなくなる」ということでもある。
AIに「全体の構成を説明して」と聞けば説明してくれる。でもその説明を鵜呑みにしていいのか、自分では検証できない。
3つの対策──どれも完璧ではない
ひとつ目は、壊れたらすぐ直すこと。朝の診療前に全ツールを一通り触って、動作確認する習慣をつけた。5分もかからない。でもこの5分がなければ、壊れたまま使い続けるリスクがある。
ふたつ目は、触る範囲を限定すること。「Aを直すついでにBも直しておいて」は事故の元だと学んだ。ひとつ直したら、他は触らない。
みっつ目は、引き返せる状態を保つこと。変更前のファイルをコピーしておく。動いている状態を壊さないように、別ファイルで試す。地味だが、これで何度も救われた。
それでも壊れる
先週も壊れた。来週も壊れると思う。
バイブコーディングは万能ではない。プログラミングを知らない人間がAIに頼ってソフトウェアを作るという行為には、構造的な限界がある。
でも、やめようとは思わない。
壊れるたびに、ツールの構造への理解が少しだけ深くなる。デグレを経験するたびに、「変更の影響範囲」という概念が体に入ってくる。
それはプログラミングの勉強とは違う。でも、ソフトウェアとの付き合い方を学んでいる、という感覚はある。
たぶん、エンジニアから見たら笑われる話だと思う。
テストも書かず、CIも組まず、手動で動作確認して「壊れたら直す」と言っている。それはソフトウェア開発じゃないだろう、と。
でも、35個のツールが毎日の診療で動いているのは事実だ。壊れても直る。直せる。それは1年前にはできなかったことだ。
バイブコーディングの限界を知ったうえで、続ける。壊れることを前提に、壊れても大丈夫な運用を組む。
それが、今の僕のやり方だ。
ひろつ内科クリニック(福岡市博多区)
開業1年3ヶ月 / ツール数35個 / AI: AWS Bedrock Claude ZDR + ローカルWhisper
この記事は hirotsu.clinic/blog/ にも掲載しています。