# 【コード全公開】130行で二重予約を防ぐ自前サイトコントローラーをコピペで作る
夜11時、スマホが震えたんです。
Airbnbから「新規予約が入りました」。
その5分後、今度はBooking.comから同じ通知が来たんです。
日付を見て血の気が引いたんです。
同じ部屋、同じ2泊3日。
サイトコントローラーは入れているはずなんです。
こういう瞬間、経験がある人は多いんですよね。
月に数千円払っているのに、なぜ防げなかったのか。
そう考えながら、片方をキャンセルする謝罪メールを打つ夜があったんです。
僕は普段、自分の会社の請求書処理や日次レポート、SNS運用の一部をコードで自動化して回してるんです。
Cloudflare Workers やAPI連携を使って、人手を介さずに動く仕組みをいくつか運用中なんです。
今回はその延長で、民泊オーナーが毎月払っている「サイトコントローラー」を自前化する構成を書いたんです。
## 民泊オーナーの頭の中では何が起きているのか?
僕の場合は、Airbnbとbooking.comの通知が5分違いで来て、血の気が引いた経験があるんです。
- 深夜にAirbnbとBooking.comから同時に予約通知が来て、心臓が跳ねたんです
- サイトコントローラーを入れているのに、同期のタイムラグでダブルブッキングが起きたんです
- 物件が1件増えるたびに、サイトコントローラーの月額プランも1段階上がっていくんです
- 毎月の引き落としを見るたび「これ、iCalを足し算してるだけだよな」と思ってしまうんです
- 解約すると二重予約の恐怖に逆戻りするから、高いと感じながらも解約できずにいるんです
一つでも刺さったなら、そのまま読んで正解なんです。
## なぜ「バケツリレー方式」と呼んでいるのか?
僕の場合は、この構成を考えているときにバケツリレーの絵をノートに描いて整理したんです。
Airbnb・Booking.com・楽天トラベル、それぞれのiCal(予約データをテキストでやり取りする共通フォーマット)を、1つのバケツ(KVという保存領域)に流し込むんです。
そのバケツから、1本の「遮断用カレンダー」を吐き出すんです。
各プラットフォームにその遮断用カレンダーを再インポートすれば、どこかで予約が入った瞬間に他の全プラットフォームがブロックされるんです。
これが完成すると、深夜の通知に飛び起きる生活が終わるんです。
空室確認用のページも無料でホスティングできるので、電話やメールでの空室確認に自分で答える手間も減るんです。
## この記事を読むと何が手に入るのか?
僕の場合は、この構成を組んでから解約の連絡をする回数がゼロになったんです。
- 全体構成のテキスト図解と月額コスト試算表
- そのまま動く構成で書いたWorkers本体コード(iCal取得→統合→遮断カレンダー生成、約130行)
- 空室確認ページのHTML生成コード
- wrangler.toml設定ファイル一式
- 詰まりやすいポイント2つの回避策
- 再現チェックリスト10項目
- 難易度: ★☆☆(初級、コピペと設定ファイルの書き換えが中心)
## 誰向けで、誰向けじゃないのか?
僕の場合は、最初にこの対象範囲を決めずに書き始めて、途中で読者像がぶれたことがあるんです。
対象は、複数のプラットフォームに同じ部屋を出していて、今もサイトコントローラー代を払っている人なんです。
物件が1〜数件規模で、JSONやJSに多少手を入れる気力がある人にも向いているんです。
対象外は、物件が数十件以上あって、すでに本格的なPMS(宿泊施設の予約・清掃・請求を一括管理するシステム)を導入済みの人なんです。
コードを一切触りたくない人、決済や会計まで一体化した機能が欲しい人にも向かないんです。
そこは正直に書いておくんです。
## 980円は高いのか、安いのか?
僕の場合は、自分の物件でこの構成に切り替えてから、月々の出費がほぼゼロになったんです。
市販のサイトコントローラーは、物件数に応じて月額数千円から数万円かかるんです。
今回の構成はCloudflare WorkersとKVの無料枠内に収まる試算で、実質のランニングコストはほぼゼロになるんです(2026年7月時点の無料枠の詳細は公式ページで要確認)。
980円は、そのSaaS1ヶ月分にも満たない金額なんです。
部数が増えたら値上げするんです。
今のうちに手に入れてほしいんです。
