AIプログラミングでちょっとしたエラーがあったら忘れないようメモしています。
今回の内容は以下の3つ。
- OS固有の機能に依存
- AIのテストコードが開発マシンの環境が汚れる
- 虚偽の説明をする
例によって本質的にはAI関係ないと言われればそうなんですけれど、AIがやった的なやつです。虚偽の説明はいまさら言うまでもないんですがだいぶ転がされてかなりイライラしたので…。
OS依存のバグ
発端は既に公開しているLoPiQで、バージョンアップのリリースに向けてテストをしていました。このアプリはWebアプリなので、ポート番号を指定する機能があります。で、Linux版では特に問題なく動いていたんですけれど、Mac版ではうまく動きませんでした。
内容を調べていると、ポートの変更時に思いっきりアプリを落として、デーモンの機能で常時再起動の設定になっているからそいつに復活させてもらう、アプリ復活時に設定読み込むからいけるでしょという、かなり強烈な実装になっておりました。で、まぁ、そんなことではMacでは許されないので、ちゃんとアプリケーション側で制御するように致しました。
テストコードによる環境汚染
それで終わりではなくて、Mac版でいろいろ試していたところ、アップデート時にポート番号の変更が戻される、という挙動が確認されました。これまたどういうことかと調べていると、どうやらテストコードの問題でした。
詳しく見ると、アプリケーション起動時に設定ファイルを読み込むのですが、テストコードでは一時ファイルで設定ファイルがなく、フォールバックで開発マシンの設定ファイルを直接見て、それでテストコードでそれを書き換えるとかいう、そういうわけのわからんことをしていました。
嘘に嘘を積み重ねる
色々ツッコミどころはあるのですが、そもそも何故そんな意味不明なフォールバックをするのか、と調べたところ、設定ファイルが複数あるため、と言われました。これは歴史的な経緯で、対象となるOSを広げる過程で確かに一時的にそうなったのですが、公開にあたって整理したはずです。で、実際マニュアルにも固定のファイルパスを記述していました。Linux版では ~/.config/lopiq/config.jsonとしていました。

それは嘘だったのか?というと、「はい、嘘です。ドキュメントと実際のコードが違います」とか言い始める。それは深刻なバグだが、というと「はい、まったくそのとおりです。修正しましょうか?」などと寝ぼけたことを言います。しかし、さらに調べると、ドキュメント通りの挙動をしています。完全に意味不明です。というか違ったらさすがに気づいてます。
矛盾を指摘すると、「はい、実はドキュメントどおりなのでご安心ください」ここらへんで明確に殺意が芽生えました。というか、だったらいったいあなたは何を修正していたのですか、ときくと、潜在的に、パスに置かれていたら優先したり、フォールバックする仕組み自体は残っていて、その部分を修正しました、とのこと。じゃあそういえばよくない?
さすがにコード確認しました。
まぁ一応説明のとおりのコードになっていたので、これでよいか、とリリースしましたが……。ちなみにAI曰く「ご質問に対しコードリーティングをせずに決めつけてしまいました。二度とこのようなことは致しません」私はもう考えることをやめました。
謝罪コスト0の相手の対応はどうすればいいか
とりあえず、OSというか、インフラに近づくごとに、なにかこういうことが増えていきます。特に開発の過程で、レガシーコードを後生大事に残して謎のフォールバックでエラーを起こす、というのはかなりあるきがします。現実として古い環境のことを考える必要はない、というかリスクにしかならないのですが、AIは古い環境にも念の為対応できるようにする、というのが、潜在的なリスクよりも優先度が上回るようです。
AIにきいてお茶を濁した私も悪いですが、このへん確認するのがしんどいところなんですよね。しかしここまであからさまに虚偽の説明をされるとなると、考えどころではあります。まぁとりあえず、AIが混乱しそうなこと、潜在的なリスクを残しそうな変更をしたときだけでも、ちょっとチェックしないとですね。
ちなみにGemini 3.8 FlashとOpus 4.6を使って、両方とも虚偽の説明をしまくっていたので、Geminiが阿呆だからというわけではないと思います。というかどっちかっていうとOpus 4.6のほうが嘘吐きまくってました。AstraやFableならこんなことにならないのか、というと、どうなんでしょう。なんというか、賢さの問題とは別のきがするんですよねぇ…。
質問の仕方は影響すると思います。つまり、「こういう間違いをしていないか?」みたいな聞き方をすると、「はい、それです(未確認)。大変申し訳ございません」と飛びつきます。これ、AIは謝罪のコスト0だからだと思います。いや、別に謝罪させたいわけではなく、単に原因が知りたいだけなんですが…。ここはとても微妙なところで、ふわっと聞いて考えさせるとでっちあげたり迷走したり、かといって示唆するとそこに飛びつきたがります。
本質的に責任が存在しない相手を制御することの難しさについて、強く考えさせられます。人間は扱いづらいからAIにしようみたいな経営者、最近多そうに見えますが(直接そうは言っていなくても)、多分そういう人にとっては人間より扱いづらいんじゃないですかね。
コメント