私の妹は車で犬の散歩ビジネスを営んでいます。顧客は14人、3人が下手に編集する共有Googleカレンダー、そして次の犬の飼い主に「今向かってます!」とテキストを送る習慣があり、それを2回忘れて気まずい電話をかける羽目になったこともあります。木曜日に彼女から「アプリを作って、大したものじゃなくていい」と頼まれ、翌月曜には公開してほしいと言われました。私は日曜の夜までに何か仕上げると答えました。これはその記録です。実際に何に時間がかかり、何が時間がかかると思い込んでいただけだったのかを、あとで知りたかったからです。
金曜日、午後8時40分 — プロンプト
白紙のエディタは開きませんでした。チャットを開いて、ビジネスの内容をそのまま説明しました。個人の犬散歩業者、14人の常連顧客、散歩当日の朝に自動リマインダーテキストを送る必要がある、彼女が誰かの私道に立ったまま30秒以内で新規顧客と犬の名前を追加できるシンプルなページが必要。「予約アプリ」と一度言いましたが、すぐに撤回しました——これは予約アプリではなく、リマインダートリガー付きの顧客リストです。それが何であるかを説明するより、何でないかを正確に伝えることの方が結果的に重要でした。
金曜日、午後9時05分 — プランが返ってくる
そのプランには、頼んでもいないのに含まれていて、自分では忘れていたであろう3つの要素がありました。
- 散歩を完了とマークする方法。これによりリマインダーが2回発火しないようにする
- コンプライアンス対応のSMSオプトアウトリンク
- カレンダーグリッドではなくシンプルな日表示。スマホで14件のエントリが並んだカレンダーグリッドは、単なる小さな文字の壁になるだけなので
その後20分間で、プランを3回も書き直しました。ほとんどが、直す必要のなかった言い回しの修正でした。振り返ってみると、あれは純粋な緊張のせいでした——プランエージェントは最初からすでに正しい形を出していたのに、私は中身ではなく文章を編集していたのです。
金曜日、午後9時40分 — 最初の実行
実行を開始し、エージェントチームが顧客モデル、日表示ページ、リマインダージョブを組み立てていくのを見守りました。デザインは動物病院の受付フォームのような見た目に仕上がりましたが、それは実際には対象ユーザーに合っていました——妹の顧客は40代、50代の犬の飼い主であり、シリーズAのピッチデッキ相手ではありません。習慣的にビジュアルスタイルに異論を唱えそうになりましたが、実際のユーザーには自分が選んだであろうどんなものよりも合っていると気づきました。
金曜日、午後10時30分 — 最初のつまずき
SMS部分は、実際に何かを送信する前にライブのプロバイダーキーが必要でした。これは正しい挙動であってバグではありませんが、キーを設定していなかったことを忘れていました。それ以外はすべて問題なく動き続けました——アプリは送信する代わりに送信するはずだった内容をログに記録しただけで、金曜の午後10時半にTwilioの登録でブロックされることなく構築を続けられました。そのまま寝ました。
土曜日、午前8時 — 本当のつまずき
これが実際に時間を食ったものです。リマインダーを「当日の朝」に送ってほしいと頼んだのですが、最初のバージョンはそれをすべての顧客に対して一律の午前7時送信と解釈していました。午前9時の散歩には問題ありませんが、午後4時の散歩には無意味です。チャットに戻って、直接こう伝えました。
リマインダーは一律の時刻ではなく、各散歩の予定時刻の一定時間前に発火するべき。
修正は1往復のやり取りで済みました。学びはツールについてではなく、自分自身のプロンプトについてでした。「当日の朝」というフレーズは、言っている本人には正確に感じられても、他の誰にとっても——どうやら12時間後の自分自身にとっても——まったく曖昧なものなのです。
土曜日、午前11時15分 — 検証記録を読む
他のことに手をつける前に、ビルドが自分自身に対して何を検証していたかを確認しました。
- 顧客フォームが正しく保存されること
- リマインダージョブがテスト用の予定日に対して実行されること
- オプトアウトリンクが実際にテスト番号の登録を解除すること
何も炎上していませんでした。何か問題を見つけようとする前に、まずこれを読む習慣がついています。そうすることで、闇雲にクリックして何かがおかしいことに気づくのを期待するのではなく、実際に注意を向けるべき場所が分かるからです。
土曜日、午後2時 — 今度こそ本物のSMS
プロバイダーのアカウントを作成し、キーを設定して、自分にテストのリマインダーを送ってみた。
小さなことだけど、プロジェクトがデモから抜け出し、実際に世の中に存在するものになる瞬間だ。
土曜日、午後4時20分 — ドメインの待ち時間
彼女の実際のドメインを設定して、DNSが反映されるまでの2時間、特に何もせずに過ごした。その時間を使って、彼女が日曜の夜にスマホで入力する手間を省くため、実際のクライアント14件分のデータを自分で入力しておいた。今思えば、この週末で一番良い時間の使い方だった — 誰も頼んでいない余計な磨き込みより、地味なデータ入力の方が価値がある。
日曜日、午前9時 — もう少しで作り込みすぎるところだった部分
彼女が週次サマリー(実施した散歩、無断キャンセル、売上)を欲しがるだろうと思い込み、月曜朝の自動ダイジェスト機能を依頼し始めた。説明の途中で自分を止めた。彼女のクライアントは14人で、帳簿もノートに手書きしている。サマリー機能は、まだ存在しない問題への解決策だ。今回は見送った。実際に必要になった週に5分で追加できるし、それまでは何かが壊れる余地を増やすだけだ。
日曜日、午後1時10分 — 彼女にリンクを送信
彼女は駐車場に立ったままスマホで新規クライアントを追加した。これこそが、自分でチェックしたどんなテストよりも重要な、本当のテストだった。
日曜日、午後6時40分 — 次回省略すること
次回省略すること:
- 何も変わらなかった3回のプラン書き直し
- 設定を試す前からSMSプロバイダーについて2時間も心配していたこと
- 作りかけていたサマリーダッシュボード — この週末で一番早く済んだ30分は、自分のアイデアに「作らない」と結論づけた時間だった
実際に時間がかかったのはすべて、自分の依頼内容の本当の曖昧さか、他人のDNSサーバーの待ち時間のどちらかだった。次に何かを作るときは、プロンプトを一度書いたら、他人が読むつもりで読み返し、今回よりも最初のプランを信じることにする。



