AI に丸投げして作ったシステムが直せなくなるのは、コードの出来が悪いからではなく、誰が何を決めたのかがどこにも残っていないからです。動くかどうかは画面を触れば確かめられますが、直せるかどうかは、決めたことの一覧が残っているかで決まります。

「動く」と「直せる」は別のものです

業務システムを任された方が最初に確かめるのは、たいてい「動くかどうか」です。ところが半年後に困るのは、動かないことよりも「なぜこう動くのか」を誰も答えられないことです。

たとえば、締め日の翌日に入力された伝票を前の月に入れるか、次の月に入れるか。動いているシステムの中には、必ずどちらかの答えが入っています。人が決めた答えなら、決めた人に聞けば直す方向がわかります。AI がその場で選んだ答えだと、それが意図なのか偶然なのかを誰も説明できません。直すたびに、ほかの場所で何が崩れるかを手探りで確かめることになります。

丸投げすると、判断が黙って埋まります

当社のサイトにある問い合わせフォームを例にします。作る前に決めて AI に渡したのは7項目でした。送信の受け口を1本にすること、入力を確かめること、結果を画面に出し分けることなどです。

作り終えた AI には、作業の途中で自分で決めたことを一覧にして返させています。このフォームでは14件ありました。いくつか挙げます。

  • 本文が字数の上限を超えたとき、黙って切るか、送信を止めて知らせるか。送信を止めて知らせることにしました。貼り付けた文章が黙って切れてしまうと、送った側は気づけないからです。
  • 入力の確認と、ロボットでないことの確認(自動送信を防ぐ仕組み)のどちらを先に行うか。入力の確認を先にしました。ロボット判定の結果は1回しか使えないため、入力の誤りで使い切ると、直して送り直すときに判定からやり直しになるからです。
  • ロボット判定のサービスに届かなかったとき、送った方の誤りとして扱うか、こちらの失敗として扱うか。こちらの失敗として扱い、メールの窓口を案内することにしました。

どれも間違いではありません。けれども、どれもプログラムの問題ではなく、業務の判断です。丸投げすると、この14件が一覧にならないままコードの中に埋もれてしまいます。そして「長い問い合わせが届いていなかった」と言われたとき、それが仕様なのか不具合なのかを、誰も答えられなくなります。

当社も一度、判断ごと渡してしまいました

このサイトを作っている途中で、仕上がりについて「全体はよいが、AI が作った既製品らしさがある」と伝えて、直しを頼んだことがあります。AI は原因を自分で12項目に分けました。順序関係のない項目に振られた通し番号、日本語の読者には不要な英語の小見出し、情報を持たない飾り文字などです。そして約850行を削って作り直しました。

分析はおおむね的を射ていました。それでも、結果としては作り直したものを丸ごと元に戻しました。12の判断が1つの変更に混ざっていて、どれを採ってどれを捨てるかを切り分けられなかったからです。

原因は AI ではなく、頼み方にありました。「既製品らしさを消す」は設計の判断なのに、それを決めないまま渡していました。その後は、通し番号を外す、ロゴを置く、といった項目を人が1つずつ決め、決めたものだけを反映し直しています。

難しさには2種類あります

ソフトウェアの難しさには、何を作るかを決める本質的な難しさと、決めたことを形にするまでに付いてくる偶有的な難しさがある ── フレデリック・ブルックスが1986年の論文「銀の弾丸はない」で示した区別です。

AI が得意なのは後者です。部品のつなぎ方、定型の書き物、決まった形への落とし込み。丸投げをすると、この後者と一緒に、前者まで AI に渡してしまいます。当社が理念の1つめに「設計の偶有的な難しさを取り除く」と掲げているのは、この線を引くためです。

捨てた2つの案

直せないシステムを避ける方法として、当社は次の2つを採りませんでした。

1つめは、AI を使わないことです。本質的な難しさは、人がコードを書いても残ります。AI を外したからといって設計が決まるわけではなく、速さだけを失います。

2つめは、AI が書いたコードを人が全部読んで承認することです。業務システムを任された方の多くはコードを読みませんし、読めたとしても AI の速さには追いつけません。何より、コードには「なぜそうしたか」が書かれていません。

採ったのは、判断を文章に残すことです。人は何を作るかを決めて書き、AI には自分で決めたことを一覧で返させる。採否は、その一覧と、実際の画面と、テストの結果で決めます。

任された方が確かめられる3つの問い

外注先に頼む場合も、社内で AI を使う場合も、次の3つはコードを読まずに確かめられます。

  1. 決めたことの一覧はありますか。それぞれ、誰が決めたかがわかりますか。
  2. 一覧に載っていない判断が、実装に入っていませんか。入っていたら、一覧に戻せますか。
  3. 業務が変わったとき、どの判断を変えればよいかを言えますか。

この3つに答えられるシステムは、作った人がいなくなっても直せます。答えられないシステムは、動いているうちは便利でも、直すときに作り直しになります。

当社のAI 導入支援も、この考え方に沿って進めています。