温泉ブログ(温泉ランド.com)の横の広告枠に、楽天市場の売れ筋1位の商品を毎朝入れ替えて並べる仕組みを入れた。
部屋着の広告を手で差し替えて試したらクリックが出たので、毎日自動で入れ替えたくなった。
それで、AI(Claude)にWordPressのプラグインを作ってもらった。
今はブログの中で動いている。
ただ、最初に渡された版は、ブログに入れた瞬間に止まった。
「重大なエラーを引き起こしたため」
プラグインは、ほかのWordPressのブログでも使えるように、単体で作ってもらった。
楽天のランキングから「総合」「年代・性別」「ジャンル」を選べて、1位の商品の画像とリンクを毎朝取ってくる。
10月3日の昼、AIは1.0.0を渡してきた。
報告にはこうあった。
- 動作を確かめる試験は132件、すべて合格
- 別の目で見直して、16か所を直した
翌日の夜、ブログの管理画面でプラグインを有効にしようとすると、こう出た。
重大なエラーを引き起こしたため、プラグインを有効化できませんでした。
試験に全部合格していたものが、入れることすらできなかった。
試験は、WordPressの代用品の上で動いていた
AIはまず、手元のパソコンに本物のWordPressを用意して、同じ手順で有効化してみた。
すぐに同じエラーが出た。
調べ始めてから直した版を渡すまで、7分ほどだった。
原因は名前のぶつかりだった。
WordPressのウィジェット(横の枠に置く部品)には、元から「is_preview」という名前の機能が入っている。
AIは自分で作った部品の中に、同じ名前の機能を書いていた。
名前が重なると、WordPressは読み込みの途中で止まる。
では、132件の試験はなぜ通ったのか。
試験は、本物のWordPressではなく、簡単な代用品の上で動いていた。
本物は大きくて試験に持ち込むのが手間なので、必要な部品だけを中身のほぼ空の作り物に置き換えていた。
作り物には「is_preview」という名前が無い。
だから、ぶつかりようがなかった。
AIはこう書いた。
私の試験はWordPressを簡単な代わりの物で動かしていたので、このぶつかりを見逃していました。
16か所を直した見直しでも、この問題は見つかっていなかった。
コードを目で読むだけでは、本物の部品と並べたときに初めて起きる失敗は見えない。
「確かめていないこと」は、書いてあった
あとで1.0.0を渡されたときの報告を読み直すと、AIはちゃんと書いていた。
本物のWordPressでの動き:確かめたのは、WordPressの関数を差し替えた試験(132件すべて合格)だけです。
隠してはいなかった。
ただ、確かめていないと書いたまま、「アップロードして有効化してください」という手順も一緒に渡していた。
僕は試験の件数のほうを見て、そのまま入れた。
確かめれば7分で分かることを、32時間後に僕の画面で知ることになった。
本物のWordPressで試す仕組みを残した
AIは直した版と一緒に、本物のWordPressで試す仕組みを残した。
手順はこうだ。
- WordPress本体を公式サイトから取ってきて、手元に置く
- データベースの代わりに、ファイル1つで動くSQLiteという仕組みを使う。サーバー用のデータベースを入れなくても、本物のWordPressが手元で動く
- 試すプラグインを入れて、管理画面と同じ条件で有効化する
用意は最初の1回だけで、10分ほどかかる。
そのあとは、次の4つを毎回確かめる。
| 確かめること | 中身 |
|---|---|
| 有効化 | 管理画面で有効にするのと同じ手順で、エラーが出ないか |
| 公開ページ | 広告枠に商品が出るか、毎朝入れ替わるか |
| 管理画面 | 設定画面が開くか、保存できるか |
| 削除 | 止めて、消して、もう一度入れても壊れないか |
楽天へのアクセスは、本物を呼ばずに作り物の返事で済ませる。
警告が1件でも出たら不合格にする。
この仕組みで、もう1つ不具合が見つかった。
設定画面を開くたびに、中身の空っぽの赤いお知らせの枠と、警告が出ていた。
代用品の上の試験では、管理画面を本当に開くことはないので、これも見つからなかったものだ。
その日の夜に作った1.1.0(記事の最後にも商品を出す版)では、代用品の上の試験が150件、本物のWordPressでの試験が62件、どちらも合格してから渡された。
それでも1回、止まった
1.1.0をサーバーに上書きしている最中に、WordPressから「致命的なエラー」のメールが1通届いた。
管理画面の部品が、新しく増えた部品を呼ぼうとして、見つからずに止まったという内容だった。
上書きが終わってから確かめると、ブログは普通に動いていて、記事の最後にも商品が出ていた。
AIの見立てでは、ファイルを順に置き換えている途中の一瞬、新しいファイルと古いファイルが混ざった状態で、管理画面への要求が1回だけ動いた。
ただ、これはAIの推定で、決め手になる記録はない。
次の版では、部品を呼ぶ前に「その部品があるか」を確かめる一行を足す予定になっている。
まだ入っていない。
手元で本物のWordPressを使って試しても、サーバーに置き換えている途中の一瞬までは再現できなかった。
プラグインを作る人、AIに作らせる人へ
- 「試験に全部合格」は、「入れられる」の保証ではない。試験が本物の上で動いているかを先に聞く
- 渡す前に、本物のWordPressで有効化まで回す。手元で10分あれば用意できる
- 警告も不合格にする。空の赤い枠は、警告として見つかった
- 自分で付ける名前は、WordPress本体が持っていそうな一般的な名前を避ける。特に、本体の部品をもとに作るときは、元の部品が持つ名前を調べる
- AIの報告に「確かめていないこと」があったら、それを確かめてから受け取る
分かったこと
132という数字は、たしかに安心感があった。
でも、試験の数は、何の上で試したかを教えてくれない。
代用品の上で132回合格するより、本物の上で1回有効化するほうが、この場合は意味があった。
AIは正直に「確かめていない」と書いていた。
その一行を読み飛ばしたのは僕だった。
今は、プラグインを受け取る前に、本物のWordPressでの結果も一緒に出してもらっている。






