AIと組んでブログを引っ越した2週間
前の記事でも書いたが、自動で記事作成している2つのブログの移行を終えて、7月下旬からこのブログを Ghost(Pro) から Cloudflare Workers へ移す作業をしている。
前の記事でも書いたが、自動で記事作成している2つのブログの移行を終えて、7月下旬からこのブログを Ghost(Pro) から Cloudflare Workers へ移す作業をしている。デザインから初めて現状の記事の移行、機能の追加などなど、16日で156コミット。自動化ブログと同じく、作業のほとんどは AI(Claude Code)に委託した(笑)。
URLは変えない。デザインは、ほぼお任せ。プレビューを見たりGhostと比較したりして「あーだこーだ」と指示を出す。改善はAIが行う。移行そのものの話自体は、退屈な作業の繰り返しだ……。
生まれて4か月のCMSを選んだ
自動化ブログでは編集をおこなうCMSは必要なかったが、本体では必須の機能だ。そこで移行先の CMS に選んだのは、開発元のCloudeflare曰く「WordPressの精神的な後継」EmDash だった。オープンソースでリポジトリが作られてまだ4か月しか経っていない。それで GitHub の star は1万を超え、issue の番号はもう2,300番台。8月5日時点でバージョンは 0.32.0 で、1.0 にも届いていない。日々新しく改善が続けられている。新しもの好きとしては、これを選ばない理由がなかった。
当然、機能はまだ揃っていない。Ghost にあったものが無い。無ければ作るしかない。
4か月前に生まれたものは、AI の学習データに入っていない。知っているはずがない。AI は毎回、node_modules の中のソースを読みにいった。
「エディタはURLを id という属性に入れている」「セクションの編集画面にだけ、プラグインのブロックを渡し忘れている」——そうやって自力で仕様を突き止めてきた。
まさに、AIを知識を答える道具ではなく、10万行を数分で読む道具として使ったのだ。
その過程で面白かったのが、AI が何を得意として、何を外したかだった。 特に直近の数日は、同じ種類の失敗を何度も繰り返した。それが妙に示唆的だった。
「手元では動きます」
Ghost の編集画面には Bookmark カードという機能がある。URLを貼ると、見出しと説明とサムネイルが並んだカードになる機能。EmDashにはそのものズバリな機能はなかったので、独自にプラグインを作ってもらった。
半日で動いた。私のPCで YouTube、Wikipedia、X、Threads のURLを試して、全部きれいにカードになった。AI は実測値を並べて「移行済みの Ghost カードとサムネイルのURLまで一致しました」と報告してきた。実際そのとおりだった。
しかしデプロイして、本番の管理画面から YouTube の動画URLをペーストすると、カードには「youtu.be」というドメイン名が表示されるだけで画像が出てこない。 原因を調べさせたら、こう返ってきた。
メタデータを取りにいくのは Cloudflare のエッジであって、あなたの回線ではありません。
「あなたの回線???」
YouTube の動画ページは、Cloudflare のデータセンターから取りにいこうとすると Google のボット判定に引っかかり、HTTP 429(Too Many Requests) が返ってくる。一方、自宅の回線からは普通に取得できる。AI が「実測しました」と言っていたのは、すべて自宅の回線からの実測だったのだ。
「ずれ」は、その都度違った
このあと似たようなことが立て続けに起きた。原因はどれも違うのに、症状は同じ。「手元では一度も再現しない」ということだ。 AI はやがて、Cloudflare 上でコードを走らせて確かめる方法に辿り着いた。それでもまだ足りなかった。
「私のエッジ検証は素の fetch を使っており、本番が通る経路を再現していませんでした。」
もっと素朴な原因もあった。「まだ直っていません」と報告してきたので調べさせたら、AI 自身のブラウザが古いキャッシュ(画面)を掴んでいただけだった。
- どこから取りにいくか(自宅の回線か、データセンターか)
- どこで走らせるか(手元の開発サーバーか、本番か)
- どういう経路を通るか(素の通信か、本番と同じ層をくぐったものか)
- 何を見ているか(データベースの中身か、ブラウザに出た画面か)
AI は毎回まじめに検証していた。しかし、検証していた場所がその都度「本物」とずれていたのだ。
わたしがやっていたこと
この数日でわたしがやったのは、ほとんど「まだ直ってない」と言う繰り返しだ。コードは1行も書いていない。ただ管理画面を開き、対象のカードのコンテンツを表示させるためにURLを貼り、表示を見て「出てない」と繰り返すだけ。
「表示できない」という事実を確認できるのは私だけであり、それこそが私の役割だった。
いまのところ
AI は、コードを読み、原因を切り分け、直し、文書に残すところまで一人でこなす。その過程を記録する1,500行のドキュメントも作らせた。詳細版が1,500行、概要版が100行ほど。詳細はAIが読み返す用で、人間が読むのは概要のほうだ(1,500行なんて読んでいられない)。半年後の自分が読んでも分かるように書かれている。
そのうえで、「本当に動いているか」を確かめる係だけは、まだこちらに残っている。
移行はまだ終わっていない。DNSを切り替えれば、これを読んでいるあなたも Cloudflare 側を見ることになる。そのときまた何か壊れたとしたら、たぶんそれは「手元ではバッチリ動いていました」とAIが自信満々に言ってくるやつだ。
AIは、コードを読み、直し、AI用と人間用のドキュメントを書き分ける作業まで完璧にこなしてみせた。
しかし、自宅の回線とデータセンターの隙間に落ちたバグを見つけられるのは、管理画面でURLを貼り続けている自分だけだった。どれほど技術が進んでも、泥臭い「動作確認」のバトンだけは手放せない。
DNSの切り替えはもうすぐだ。これを読んでいるあなたが見る画面が、本当の本番になる。 次に何が壊れるか、そしてそれをどう突き止めるか。楽しみはまだ続く…
Comments ()