
こんにちは、けんちろです。大阪で写真事務所を一人でやりながら、事務作業をAIへ移し続けています。事務はAI秘書に任せています。メールを読んでNotionへ転記し、請求書を作り、Slackの返信案を出し、毎晩その日の計画を僕のDiscordへ投げてきます。
その前の週、AIを起動した回数は20回でした。今週は74回です。理由もはっきりしています。法人向けのサイトを、ゼロから1本立ち上げたからです。いま読んでいただいている、このサイトのことです。
いつもどおり、うまくいった話だけではありません。1か月ぶん消えていた記録が見つかり、無言で止まっていたものが3件出てきて、AIの書いた日本語を3回突き返しました。
まず数字から
この1週間の実測値です。使ったモデルの内訳は、上位モデルが56回、中位が17回、最軽量が1回。判断が要らない作業ほど安いモデルへ降ろすという方針は変えていません。
見張りそのものは、今週も全部ただのスクリプトです。予約カレンダーを107回チェックして、実際に更新したのは24回。この107回にAIは1度も関わっていません。増えた74回は、僕がAIに話しかけた回数と、社外の連絡が届いた回数です。
8月15日(金)—— 5日間止まっていた原因は、全角の閉じカッコ1文字でした
週の頭に、毎週動くはずのレポートが8月10日から5日連続で失敗していたことが分かりました。
原因を追いかけたら、こうでした。Windowsの日本語環境では、プログラムの出力を読み取るときの文字コードが古い方式のままです。今回はデータを渡す側だけを新しい方式に設定していたので、両側がズレていました。
ズレるとどうなるか。)という全角の閉じカッコは、新しい方式だと最後のバイトが 0x89 になります。ところが古い方式では 0x89 は「2バイト文字の1バイト目」なんです。だからその直後にある引用符を、文字の一部として食べてしまう。
食べられた結果、データの閉じ記号が消えて、読み取りが例外で止まり、スクリプトごと即死していました。引き金は「(台帳導入前の概算)」という項目名でした。8月10日に初めてこの言葉が出力に現れて、そこから壊れています。
いちばん厄介なのは、手元で試すと再現しないことです。自分で叩いているときは画面がすでに新しい方式になっているので、何ごともなく通ります。夜中に無人で走ったときだけ死ぬ。だから5日も気づけませんでした。
直し方は、共通の起動処理で両側をまとめて揃える。個別のスクリプトからは設定を消しました。1か所で決めないと、必ずまたどちらかがズレます。
8月16日(土)—— フォロワー数の記録が、1か月止まっていました
「Xのフォロー・フォロワー数をNotionへ入れるプログラムを、AI秘書が動かせるようにして」と頼みました。移管作業のつもりでした。
調べさせたら、そのプログラムは7月17日を最後に無効化されていました。約1か月ぶん、記録が欠けていました。
原因は連鎖でした。Xの新しいAPIのクレジットが切れて、投稿本文を保存する仕組みが全部止まった。フォロワー数の取得は古いAPIを使っていて今も普通に動くのに、まとめて畳まれたとき巻き添えで一緒に止まっていたんです。
そして、なぜ1か月も気づけなかったか。自動処理の見張りが、無効になっているタスクを最初から対象外にしていたからです。「失敗した」なら鳴る。でも「無効にされた」は、見張りをそのまま素通りします。
同じ失敗を、僕は今月すでに1度やっています(Slackのスレッド追跡を「古いから」で切って、撮影前日の連絡を2件取り逃がした件)。2回目です。
見張りの「対象外」を書くときの決めごと
- 外す条件を書くときは、「その条件で隠れる故障は何か」を必ず言葉にする
- 「止まった」だけでなく「止められた・無効にされた・畳まれた」も異常として拾う
- 意図的に外すものだけを、理由つきで除外リストへ登録する。条件で一括除外しない
見張りに検査を1つ足して、秘書関連のタスクが無効になっていること自体を通報するようにしました。ただし、欠けた7月18日〜8月15日は永久に埋まりません。APIは「今の数字」しか返してくれないからです。過ぎた日の数字は、どこにも売っていません。
8月17日〜19日 —— 法人向けサイトを、3日で1本立ち上げました
今週AIの起動回数が跳ねた最大の理由がこれです。
もともと、写真の仕事もAI関連の仕事も同じサイトに載せていました。それを「AIの仕事は別ドメイン、写真は今までのサイト」に分けることにして、日曜の夜から作り始めました。ブランド名も新しく決めました。
3日でここまで行きました。
- トップ・サービス3ページ・プロフィール・コラム一覧
- プライバシーポリシー / 会社概要 / 特定商取引法の3ページ
- ロゴ・ファビコン・図解・アイキャッチ(画像は全部手元のパソコンで生成。デザインツールは使っていません)
- 問い合わせフォーム(自前)
- アクセス解析を分離して、検索エンジンへの登録まで
ただ、途中で見つかった不具合のほうが、たぶん読む価値があります。
その1:存在しないURLが、トップページを「正常」として返していました
今回使った配信サービスは、404ページを置かないとどんなURLでもトップを返します。しかも「エラーではない」という顔をして返す。
何が起きるかというと、巡回ロボットのアクセスが全部、本物の訪問として記録される。28日間の406セッションのうち、大半がこれでした。数字を見て「意外と人が来ているな」と思っていたら、ほぼロボットだったわけです。
その2:同意リンクの先が、まったく別の話をしていました
新しいサイトの問い合わせフォームには「プライバシーポリシーに同意」のリンクが付いていました。そのリンク先が、古いほうのサイトのポリシーを指していた。
中身は写真事業の名義で、決済とLINEとマイページの話が中心。新しいサイトが実際に使っている保存先やスパム対策の記載は、1行もありませんでした。つまり同意してもらっていた文書が、実際の取り扱いを説明していなかった。リンクを新しいポリシーへ向け直して解消しました。
その3:スマホにメニューがありませんでした
僕の「スマホのメニューってどこにありますか?」で発覚。スマホ幅ではナビゲーションを非表示にしたまま、代わりのボタンを用意していませんでした。パソコンで確認して満足していたやつです。
その4:フォームが弾いた内容を、そのまま捨てていました
これは前の週から追いかけていた件です。今月8日に、法人からの問い合わせが2件、スパム判定で消えていました。本文はどこにも残っていないので、誰が何を書いたのかもう分かりません。
今回、新しいサイトのフォームを自前で作り直すときに、判定がNGでも必ず保存する形にしました。通知は15分おきにメールで届きます。ここにAIは使っていないので、費用は永久にゼロです。
弾くのは構わないんです。弾いたことを黙っているのが問題なので。(この話は自動化に「捨てる」を書いてはいけないに詳しく書きました)
8月18日(月)—— 「日本語変じゃない?」と3回突き返しました
新しいサイトに、AI導入の失敗談を書くコラムを開設しました。題材は全部、僕が実際に踏んだ失敗です。「僕の失敗ならいくら公開しても大丈夫」。そう言ったので、7本まとめて公開しました。そこから3回突き返しました。
1回目:「日本語変じゃない?」
主語と述語がねじれていました。「その『0件』は本当に起きていませんか」とか。事実は正しく、材料との照合も通っていたのに、文章が自然かどうかは誰も検査していなかったんです。
2回目:「どういうこと?? もっとちゃんと人間が書く文章にしてください」
文法は合っている。でも理屈の説明になっていて、読む人が頭の中で翻訳しないと意味が取れない。
- ×「『記録が無い』は『起きていない』の証明になりません」
- ○「届いているのに、数えられていなかったのです」
言いたいことは同じです。でも下は情景が浮かぶ。上は浮かびません。
3回目:既存の7本も読み直させました。硬い言い回しと業界語を22箇所直しています。
- ×「そのとき捨てていたら、検証すらできません」/○「そのとき捨てていたら、間違えたことにすら気づけません」
- ×「減らないものが一つもありません」/○「損をする人が、どこにもいません」
対策として、書いた本人に読み返させるのをやめました。
書いた直後の本人(AIでも人間でも同じだと思うんですけど)は、自分の癖のまま読んでしまって素通りします。だから「文章だけを見る係」を、まったく別の呼び出しとして分けました。事実には触らせません。触っても、次の機械チェックで弾かれます。
あと、コラムの一人称を「僕」に統一しました。「私」で書かれた下書きは機械が弾いて公開させません。複数形で書くのも禁止しました。一人でやっているので。
8月20日(木)—— 4時半に3つ落ちて、9時半まで誰も知りませんでした
朝4時半、外部から接続するための仕組みが4環境同時に認証の期限を迎え、更新の取り合いに負けた3つが自滅していました。気づいて復旧したのは9時35分。5時間、無言です。
前の週、常駐している秘書のBotには生存監視を付けました。でも「Botを外から操作するための仕組み」には付けていなかった。見張りを1つ作ると、その見張りが見ていない範囲が新しくできる、という当たり前のことを毎週やっています。
15分ごとの生存監視を追加しました。次に同じことが起きたら、最長15分で自動復旧してDiscordへ報告が飛びます。
同じ日の昼、もう1件。毎日届く週間計画の通知が、丸ごと届きませんでした。原因が3つ重なっていて、これは面白かったです。
- 移動の経路リンクを「10本まで」と件数で切っていた。ところが乗換案内のURLは1本およそ330文字あります。5本で1,680文字。件数では上限を守れません
- ファイルに書き出すとき、Windowsが改行を勝手に2文字に変換していた。送る側は1,895文字のつもり、受け取る側は1,905文字。行数のぶんズレます
- 受け取る側が数えている単位が違った。絵文字は2文字として数えられます
3つ重なって5文字オーバー。画像ごと投稿が丸ごと落ちました。
直し方は「残り文字数で詰めて、あふれた件数を本文に書く」。加えて、送信の直前で切り詰める最後の砦を1か所に入れました。通知を送っている場所は39か所あるので、そこを1点で守ります。
学びとしてはこうです。上限のある場所へ可変長のものを載せるとき、「件数」で切ってはいけない。長さで測る。
そしてもう1件、僕がAIを止めた話。取引先へ請求書を送る準備が整っていたので、AI秘書が送信の承認を求めてきました。僕はこう返しました。
交通費はそれでOKですが、取引先へは「撮影チケット」も一緒に送る必要があります。カメラマンから撮影チケット来てますか? それが来るまでは送れないと思います。
材料が1つ足りていませんでした。「揃っているように見えるけれど、揃っていない」を判定するのは、まだ僕の仕事です。ここは自動化していません。
8月21日(金)—— AIが走る時間を、夜中の4時までに全部寄せました
こういう指示を出しました。
AIを午前中に使いたいので、自動で走るのは5時間制限の外にしたいですね。9時から仕事をするとして、AIが走るのは4時までにまとめてもらえますか? 金曜日の24時から4時までは、定期実行の時間にしましょう。で、1週間リミットが近づいている場合は、走らせない。
使っているAIの利用制限は「直近5時間」で計算されます。ローリングなので、朝9時に僕が使える枠は、4時から9時までに何を走らせたかで決まる。週次のバッチを朝5時や7時に置いていると、自分が午前中に使う枠を、自分の自動処理が先に食べているわけです。
週次の処理を4本、金曜24時〜土曜4時へ移しました。順番も決めてあります(過去記事を検索する処理があるので、その材料を用意する処理を先に置く)。
同時に、週の予算に上限を設定しました。実測に余裕を持たせた額を上限として、そこへ近づいたら優先度の低い処理は見送ります。位置づけは節約の目標値ではなく暴走ガードです。普通に使う分には発動しません。今週の消費は、上限の6割ほどでした。
ただし、メールの確認とSlackの確認には、この制限を掛けていません。相手がいる仕事なので、コスト削減のために止めたら本末転倒だからです。
8月21日 —— 「0件」だったのは、そもそも測っていなかったから
これも書いておきます。
ある申込ページの動きを調べようとしました。ページに来た人が、実際に申込ボタンまでたどり着いているのか。どこで離れているのか。
ところが、調べられませんでした。アクセス解析の拡張計測が、全項目オフになっていたからです。サイト全体で、スクロールも外部リンクのクリックも記録されていない。
つまり「申込ボタンが押されたかどうか」を、一度も測れていなかった。
オンにしました。ただしアクセス解析は過去に遡ってくれません。読めるのは8月21日以降だけです。
このコラムにも同じ話を書きました。「0件」と「測っていない」は、画面の上ではまったく同じ顔をしています。
1週間やってみて
数字でまとめると、こうです。
- AIを起動したのは74回(その前の週は20回)。増えたぶんは、ほぼサイトの立ち上げ
- 無言で止まっていたものが3件(レポート5日 / 外部接続5時間 / フォロワー記録1か月)
- 1か月ぶんの記録は、永久に埋まりません
- AIの書いた日本語を3回突き返しました
今週いちばん実感したのは、見張りを1つ作るたびに、その見張りが見ていない範囲が新しくできるということでした。Botに生存監視を付けたら、Botを操作する仕組みが落ちた。失敗したタスクを見張ったら、無効にされたタスクが素通りした。たぶん、これに終わりはありません。だから毎週1つずつ埋めています。
もうひとつ。AIに書かせた文章は、書いた本人に読み返させても直りません。3回突き返して分かったのは、直す方法ではなく「読む係を分ける」という形のほうでした。事実の検査と、文章の検査は、別の目でやる。
今週のぶんから、3つだけ
- 「0件」を見たら、まず測れているかを確認する(測っていないのと、区別がつきません)
- 見張りの「対象外」に書いた条件を疑う(そこが故障の隠れ場所になります)
- AIの文章は、別の呼び出しで読み返させる(同じ目では、同じ癖を素通りします)
来週も続きを書きます。
この話、他人事ではないと思われたら
ここに書いたことは全部、自分の事業で実際に起きたことです。うまくいった手順より、つまずいた場所のほうが役に立つと思っています。「うちでも同じことが起きそう」と思われたら、一度見せてください。AI・DX伴走支援とClaude Code 導入支援では、動かすところだけでなく止まったら分かる形にするところまでを一緒にやります。
