駅のコインロッカーは、空いているかどうかを調べてから使う仕組みではありません。
扉が開いていて、鍵が挿さっている。荷物を入れて、硬貨を入れて、鍵を回して抜く。抜いた瞬間からその扉は開きません。鍵は一本しかないので、同じロッカーを二人が同時に使うことは起こりません。
もし鍵ではなく、係員が中を覗いて空いていますねと言う仕組みだったら、混雑する時間に事故が起きます。二人が同時に尋ねて、両方に空いていると答えてしまう。覗いてから荷物を入れるまでのあいだが、必ずあるからです。
鍵が一本という作りは、確認を要らなくするためのものです。
水曜の十四時に二人現れる
水曜の十四時から十五時。面談の枠が一つ空いています。
二人が、それぞれ別の場所から、ほぼ同時に申し込みました。二人とも予約できましたと表示されます。
気づくのは、水曜の十四時に二人が現れたときです。
これは注意力の問題ではない
AI に予約フォームを作らせると、こういう作りになります。その枠に予約があるか調べて、無ければ受け付けて、行を足す。
一人目の調べるが走って、空いていると出ます。その直後、行が足される前に、二人目の調べるも走ります。こちらも空いていると出ます。二人とも受け付けられます。
丁寧に書いても直りません。調べてから書くまでのあいだが必ず存在するので、そこに他人が入り込めます。
係員が覗いて答える方式と同じです。
そしてこれは、AI が書いたコードだから起きたわけでもありません。人が書いても同じです。調べて判断するという作り方が、この場面に向いていない。
気づけないのが一番まずい
二重予約が怖いのは、起きたことが分からない点です。
申し込んだ二人は、どちらも成功の表示を見ています。予約の一覧を見ても、二行あるだけで異常には見えません。気づくのは二人が来たときです。
AI に作らせたものを人に使わせるのが不安なのは、たいていこの形の不安です。動いているのに間違っている。
調べないで守る
MulmoTerminal は AI に頼んで作業させるための画面で、npx の一行で立ち上げてブラウザで開きます。道具自体は無料で、AI の使用量は自分の契約から引かれます。そこで作れる共有アプリは、リンクで人に渡せるアプリで、フォルダ一つがアプリ一つです。公開したあとは自分のパソコンが経路に入りません。
その予約の形では、ページが枠の空きを調べていません。一つの枠に入れるのは一人だけというのを、その下のプラットフォームが決めています。
二人が同じ秒に押しても、片方には取れたと返り、もう片方には取れなかったと返ります。鍵が一本しかないのと同じです。
ここが不安への答えになります。二重予約を防いでいるのは自分のページではないので、ページを読み返して確かめる必要がありません。
スタッフが三人いるとき
美容室を考えると、もう一つ必要なものが出てきます。
スタイリストが三人いて、それぞれに予約が入ります。三人とも全部の予約を見たい。店全体の状況を知る必要があるので。でも自分に入った予約だけを承認したり動かしたりしたい。他の人の予約を勝手に触られては困る。
読める範囲と書ける範囲が違う、という状態です。
これは自分で作ろうとすると面倒なところです。全部見えるけど自分の分以外は編集ボタンを出さないを書くことになって、そのボタンを隠し忘れたら他人の予約が動きます。
共有アプリには、この形の立場が用意されています。全部の行を読めて、自分に割り当てられた行だけ書けるというものです。隠し忘れが事故にならない、というのが利点です。
承認という段がある理由
アンケートや定員つきの申し込みには、承認がありません。送信したら確定です。
予約にはあります。人が受けるからです。その時間に本当に空いているか。別の用事があるかもしれません。その内容で受けられるか。対応できない依頼かもしれません。
判断の余地を残す形になっています。
使い分けはこうなります。内容が一律で、空いていれば誰が来てもいいなら、承認は要りません。ジムのクラスや、定員つきの勉強会がこちらです。人が受けて、内容が個別なら承認が要ります。面談、施術、修理がこちらです。
コインロッカーには承認がありません。鍵が抜ければ、それで終わりです。面談はそうではない、という違いです。
予約した人が見るもの
予約した人が月曜に承認されたかなと思ってリンクを開くと、自分の予約だけが見えます。承認されたかどうかが分かります。他の人の予約は見えません。
これも、ページのコードが絞っているのではなく、そもそも他人の予約がページに届いていません。
頼み方
面談の予約を受けたい。 平日の10時から17時、1時間ごと。 面談するのは私と田中さんの2人で、それぞれの枠に申し込めるようにして。 申し込みが来たら承認する形にしたい。
それぞれの枠と承認するが入っていれば、名前のついた人が受ける形だと分かります。
できないことも先に
共有アプリは、サーバーで自分のコードを動かしません。
だから、予約が入ったときに自動でメールを送ることはできません。外部のカレンダーに自動で書き込むこともできません。
できるのは集めて、見せて、承認するところまでです。通知が要るなら、受付のページを見に行く形になります。
これは制約ですが、その代わりに自分のパソコンが経路に入りません。寝ていても、旅行に出ていても、予約は受け付けられます。
使ってみる
MulmoTerminal は、次の一行で立ち上がります。ターミナル(Windows なら PowerShell、Mac ならターミナル)を開いて、そのまま貼り付けます。
npx mulmoterminal@latest
ブラウザが開いて http://localhost:34567 が表示されれば成功です。インストールという作業はありません。npx はその場で取ってきて動かすだけなので、合わなければ閉じるだけで終わります。止めるときは、打ったターミナルで Ctrl + C を押します。そのターミナルが分からなくなったら npx mulmoterminal@latest stop です。
動かない場合、足りないものは次の二つのどちらかです。
| 確かめ方 | 無ければ | |
|---|---|---|
| Node.js 22.12 以上 | node -v |
nodejs.org/ja/download の LTS。入れたらターミナルを閉じて開き直す |
| Claude Code | claude --version |
macOS は curl -fsSL https://claude.ai/install.sh | bash、Windows は irm https://claude.ai/install.ps1 | iex。そのあと claude でログイン |
Claude Code は、AI をターミナルから使うためのコマンドです。使うには Claude の有料プラン(Pro / Max / Team / Enterprise)か API のアカウントが必要で、無料プランには含まれていません。MulmoTerminal 自体は無料で、AI の使用量はその契約から引かれます。
新しい空のフォルダを一つ作ります。デスクトップでいいです。名前は何でもかまいません。
MulmoTerminal の空いているマスをクリックして、上のタブで Claude を選び、WORKING DIRECTORY にそのフォルダのパスを入れて、右の再生ボタンを押します。

開いた画面に、欲しいものを普通の言葉で打ちます。
面談の予約を受けたい。平日の10時から17時、1時間ごと。 面談するのは私と田中さんの2人で、それぞれの枠に申し込めるようにして。 申し込みが来たら承認する形にしたい。
田中さんにも触らせるなら、田中さんは自分の担当だけ承認できるようにしてと足します。
公開する前に自分で見ます。そのマスでコレクションのパネルを開いて、ヘッダーの Previews を押すと、公開サイトと同じものが動きます。
そこで四つ確かめます。データが出ているか。読み込み中で止まっていないか。送信すると確認が出て、入っている値が正しいか。わざと変な値を入れて、断られるか。そして仕上がって見えるか。
よければ公開してと頼みます。リンクが返ってきます。
空いている枠に自分で一件申し込んで、同じ枠にもう一度申し込んでみてください。断られれば成功です。
外に出したくないものなら、公開ページは作らないでと先に言っておきます。そうすると、名簿に載せた人しか開けません。
やめたくなったら、同じマスでこのアプリの公開をやめてと頼みます。リンクが開けなくなります。集まったデータを消すなら、レコードを全部消してと頼みます。消すと戻らないので、先に画面で中身を見て、必要なら書き出してから頼んでください。
まとめ
コインロッカーが二重に使われないのは、空いているかを調べているからではなく、鍵が一本しかないからです。調べる方式は、調べてから使うまでのあいだに事故が入ります。
AI に予約フォームを作らせると、まさにその方式になります。丁寧に書いても直らず、しかも起きたことに気づけません。
共有アプリの予約の形は、ページが空きを調べません。一つの枠に一人だけを、その下が決めています。スタッフが全部読めて自分の担当だけ書ける立場も用意されているので、ボタンの隠し忘れが事故になりません。
