AIに作らせたものを、どう点検したか
できたものを点検したら、間違いが12件見つかりました。自動チェックは全部合格していました。
うち9件は、一つひとつは正しいのに、組み合わせると答えが合わなくなるものでした。
1. なぜこの話を書くか
「AIにプログラムを書かせた」という話は、もう珍しくありません。珍しいのは、 できたものをどう疑い、どう確かめたかのほうです。
私は経理・財務を20年やってきました。決算書のチェックと、AIが作ったもののチェックは、驚くほど似ています。 数字は揃っている。計算も合っている。それでも実態と違う、ということが起きる。 経理ではそれを二重計上や区分の誤りと呼びます。 今回AIが出してきた間違いは、名前を付け替えると、ほとんどが経理で見慣れたものでした。
この文書は「AIは危ないから使うな」という話ではありません。逆です。 どこがどう危ないかを具体的に言えれば、使えるという話です。
2. 何を作らせたか
スーパーの惣菜に、閉店前に貼られる半額シール。あの判断を計算でやるとどうなるか、という試算ツールです。
いくらまで下げてよいのか。いつ下げるのか。
お店では「閉店2時間前に一律30%引き」のような決まりでやっています。それより儲かる判断はあるのか。
この問題には、経理の人間なら反応する論点がいくつも入っています。
- 「原価割れするから値引きしない」は、しばしば損を生みます。 仕入代金はもう払っています。捨てても戻ってきません。 「原価以上で売る」というお店のルールは、この場面では判断を狂わせます
- 捨てるのにお金がかかるなら、0円で配ったほうが得な瞬間があります。
この試算ツールは実際にマイナスの下限価格を出します。
(ただし全商品ではありません。捨てる費用が値引きシール代を上回る商品だけです) - 「その値引き、何%多く売れないと損しますか」に即答できる人は少ない。 利益率40%の商品を10%引きにすると、33%多く売れないと利益は減ります
サービス業も同じ考え方で扱えます。施術60分の空き枠も、時間が過ぎれば消えてしまう在庫だからです。 違うのはお金が出ていくタイミングだけ —— 惣菜の仕入代金はもう払い済み、施術者の人件費は予約が入ってから発生する。 この違いが、値引きしてよい下限をまるごと変えます。
正直に書いておくこと 使っているのは架空の店のデータです。実際のお店で試したものではありません。 したがって「捨てるロスが◯%減った」という言い方は一切していません。 言えるのは「同じ条件で3つのやり方を比べると、どちらが上か」だけです。
3. 見つかった12件を、経理の言葉に置き換える
以下が実際に見つかった間違いです。どれも自動チェックには合格していました。 右の列は、同じことが決算や監査で起きたら何と呼ぶかです。
| 何が起きていたか | 経理でいうと |
|---|---|
| 捨てるのにかかる費用を、2回引いていた。その結果、値引きしてよい下限価格が本来より16円低く表示されていた | 二重計上 |
| 売り切れて引き分けになった場面を、「ここから負け始める」と表示していた。負けていないのに負けと報告していた | 区分の誤り(同額なのに損失に分類) |
| 平均の出し方が違っていた。1個も売れなかった日が「100%」として平均に混ざり、成績が良く見えていた | 母数の取り違え |
| 同じ画面の見出しとグラフが、違うデータの数字を出していた(13.17% と 10.66%) | 集計基準の不統一 |
| 「この文章なら出してよい」と検査を通した文章のひな形が、実際には一度も使われていなかった。画面に出ていたのは検査していない文章 | 承認済みのひな形が使われず、未承認の文書が外に出ていた |
| 「この条件では両者は一致します」という注意書きが、例外を確かめずに書かれていた。実際は一致しない商品のほうが多かった | 例外を確認せずに一般化した注記 |
| 比べる相手の利益がゼロ近くを通る場面で、比率が 2218% に跳ね上がっていた。実際は「相手がたまたまトントンだった」だけ | 分母が小さいときに率で語る誤り |
| 同じデータでも、入力の並び順を変えると答えが3通りに変わった | 再現性がない集計 |
| 画面側と計算側が、同じ数値を互いに違う意味で受け取っていた。倍率が2回かかる、基準の値が動く | 前提の取り違え |
| 同じものを指す名前が2箇所で食い違っていた。つなぐと動かない | 勘定科目名の不一致 |
| 効果を「+14.2%」と報告していたが、測り直すと ±3.4ポイントの幅があった。1桁目まで言い切れる精度がなかった | 根拠の精度を示さない断定 |
4. どういう見方をしたときに見つかったか
誰が見つけたかより、どの見方をしたときに出たかのほうが、次に使えます。
| 有効だった見方 | これで出た件数 |
|---|---|
| 他の担当が作った部分を、手を入れずに読むだけで粗探しする | 6件 |
| おかしな結果から逆にたどる(「捨てる費用を上げたのに成績が下がるのはおかしい」) | 1件 |
| 他人の担当箇所を読んでいて、自分の担当の誤りに気づく | 2件 |
| 自分が出した数値を、自分で疑って測り直す | 1件 |
| できたものを実際に画面に出して読む | 後述 |
一番効いたのは1つ目です。担当を分けたうえで、お互いの担当を読むだけの役を回しました。 直す権限を与えないのが要点です。直せる状態にすると、その場で直してしまい、何が問題だったのかが記録に残りません。
5. 自動チェックに合格していても、読むと嘘だった
画面に出す説明文は、禁止したい言い回し16パターン × 1008通りの検査を通していました。 それでも実際に画面に出して読んだら、2件が嘘でした。
| 画面に出ていた文 | 何が嘘か |
|---|---|
| 残り480分・在庫33個。この1個を残す価値は202円まで下がっています。 | 残り8時間の時点で、まだ何も下がっていない。値引きする場面だけの言い回しを、全場面で出していた |
| エンジンの利益は+13.9%です。 | 「利益率が13.9%」と読める。実際は相手との差が13.9% |
6. 公開したあとに、13件目が出た
ここまでの12件は、公開する前に見つけたものです。13件目は、この文書を公開した直後に出ました。
文中の囲みブロックが、意図しないところで改行される不具合がありました。直したつもりで公開したところ、 読む人の画面では直っていませんでした。
| 私が確認したこと | 確認できていなかったこと |
|---|---|
| サーバーが返すファイルの中身が、修正後のものになっていること | 読む人の画面で、実際にどう見えているか |
原因はブラウザのキャッシュでした。サーバーは正しいものを返していましたが、 読む人のブラウザは、以前読み込んだ古い版を使い続けていました。
この文書は前の章で「できたものを実際に画面に出して読む」と書いています。 その文書を公開する当人が、まさにその工程を飛ばしました。 指摘されるまでの間、「配信されているものは正しい」と2回報告しています。
対処として、スタイルシートのファイル名に中身から計算した文字列を入れ、内容が変われば名前も変わるようにしました。 これでキャッシュが原因で更新が届かないことは起きません。ただし本当の対処は仕組みではなく、 「出した側を確認すること」と「受け取る側で確認すること」は別だと知ることです。
7. 依頼した本人が、できたものを理解できなかった
これが今回いちばん重い発見でした。
この開発は「見た人が1つの画面を開き、90秒で価値が伝わる」を目標に設定していました。 完成後、最初に画面を見た人間 —— 発注した私自身 —— が、何をしているのか分かりませんでした。
自動チェックは176件合格しています。表示崩れもありません。数値も正しい。それでも、 読む人が「これは何の話か」を掴めなければ、できたものとしては未達です。 「業界の人なら分かる」は、作った側の言い訳になります。
AIは、指示された品質は満たします。指示しなかった観点は満たしません。 「90秒で伝わること」を目標に書いたのに、誰にとっての90秒かを決めていなかったのが原因でした。 この文書は、その反省から後から書いたものです。
8. AI3体を同時に動かして起きたこと
AI3体に担当を分けて同時に動かし、1体をまとめ役に置きました。速さは出ました。 本来2週間の想定だった工程が1日で終わっています。ただし、 最初の指示が足りなかったことが、思わぬ形で効きました。
実害はゼロでした。中身が1行も書かれる前に解決できたからです。 ただし、これが1時間後に起きていたら、2体が同じ場所を上書きし合っていました。
原因は「どのAIがどの担当かを、人間の手作業に頼らせた」ことです。 対策として、担当表を1つのファイルに置き、 会話でのやりとり・画面での選択・残っていた痕跡は、すべてその表より下に見ると決めました。 以後この問題は起きていません。
同時に動かして、得たもの・失ったもの
| 内容 | |
|---|---|
| 得たもの | 間違い12件のうち、少なくとも9件は「他の担当が見つけた」ものです。 1体だけで作っていたら、そのまま公開していた可能性が高い。 同時に動かしたことは、速さより互いのチェックのために効きました |
| 失ったもの | まとめ役の負担が重い。3体が同時に報告してくるので、判断が追いつかないと詰まります。 実際、まとめ役のAIは自分でも11件の誤りを出しました。 うち3件は同じ型(自分で確かめずに断定して、他へ伝えた) |
9. この経験から言えること
- AIが作ったものは、自動チェックが通っていることを品質の証明にできません。 今回の12件はすべて合格していました。自動チェックは「書かれた観点」しか見ません
- 効いたのは、直さずに読むだけの役を置くことでした。 直せる状態にすると、その場で直してしまい、何が問題だったのかが残りません
- 「結果がおかしい」という違和感を、放置しないこと。 「捨てる費用を上げたのに成績が下がるのはおかしい」から、二重計上が見つかりました。 これは会計の知識がないと持てない違和感です
- 数字を出すときは、誤差と外れる頻度も一緒に出すこと。 この試算ツールは平均だけでなく、誤差の幅と「負ける日の割合」を画面に出します。 判断できないときは「判定できません」と表示します
- 速く作れることと、信用できるものが出てくることは別です。 1日で作れた分、点検にはそれ以上の手間がかかりました
10. 実物
以下が、この文書で点検の対象にしたものです。数値はすべて測り直して取得しています。
- 値引き判断の試算ツール —— 商品を選び、時刻や条件を動かすと判断が変わります
- 開発の振り返り —— 間違い12件の詳細と、まとめ役自身の誤り11件
- 要件定義 —— 何を作るか、何を言ってはいけないかの取り決め
- 使い方 —— 動かし方、条件の意味、分かっている限界