予約システムを1日で自作|Calendly月額2,000円を解約する具体手順

Calendlyの月額2,000円を払い続ける理由は、もう無いかもしれない。

個人事業主として活動していると、いつの間にか月額課金のツールが積み上がっていく。予約受付のCalendly、顧客管理のCRM(顧客管理システム)、メール配信、フォーム作成。ひとつひとつは数千円でも、合計すると月に2万円、3万円と積み上がる。年間にすれば30万円を超える。

私は最近、そのうちのひとつを自作に置き換えた。予約システムだ。Calendlyの月額16ドル(約2,400円)のプランを使っていたが、AIコーディング環境の登場で、1日あれば同等のものが作れる時代になった。

この記事では、非エンジニアの個人事業主でも予約システムを自作できるように、具体的な手順を書いていく。技術用語には必ず言い換えを添えるので、コードが読めなくても大丈夫だ。最後まで読めば、明日からどう動けばいいかがわかるはずだ。

この記事の前提

読者として想定しているのは、ひとりで事業を回している人だ。コーチング、コンサルティング、カウンセリング、レッスン、撮影、施術。業種は問わない。予約を受けて、顧客と1対1で時間を使うタイプの仕事をしている人すべてに当てはまる。

そして、毎月Calendlyや類似のSaaS(月額制ソフトウェア)に2,000円前後を払っていて、なんとなくもったいないと感じている人。機能の9割は使っていないのに、課金は止められない。そういう状況を想定している。

この記事のスタンスを先に書いておく。私はSaaSを全部否定したいわけではない。便利なものは使えばいい。ただ、年間2万円以上を払っていて、自分の使っている機能が限定的なら、自作を検討する価値があると伝えたい。AIコーディング環境が整った今、自作のハードルは劇的に下がった。非エンジニアでも1日で動くものが作れる。それを知らずに払い続けるのは、少しだけ損だと思う。

なぜ今、予約システムを自作できるのか

自作を可能にした3つの技術革新

図: 自作を可能にした3つの技術革新

3年前なら、この記事は書けなかった。予約システムを自作するには、データベース設計、サーバー構築、メール配信、カレンダー連携、重複防止ロジックなど、エンジニアが1週間かけて作る規模の仕事だった。非エンジニアには無理だったし、エンジニアに外注すれば30万円はかかった。それなら月2,000円のCalendlyを使ったほうが圧倒的に安い。

しかし状況が変わった。理由は3つある。

1つ目は、AIコーディング環境の進化だ。Claude CodeやCursorのようなツールに日本語で指示を出せば、動くコードが出てくる。プログラミングの文法を知らなくても、やりたいことを言葉で説明すれば形になる。

2つ目は、Supabase(データを保存する無料の箱のようなサービス)の普及だ。これまでデータベースを立ち上げるには専門知識と月額費用が必要だったが、Supabaseは無料枠が大きく、個人事業主の予約件数なら永久に無料で足りる。

3つ目は、Vercel(Webサイトを公開する無料サービス)のようなデプロイ環境の整備だ。作ったアプリを公開するのに、サーバーを借りる必要がない。GitHubにコードを置いて数回クリックすれば、世界中からアクセスできるURLが発行される。

この3つが揃った結果、非エンジニアが1日で予約システムを作れる時代になった。

Calendlyに月2,000円を払う価値を計算してみる

Calendly vs 自作予約システム

図: Calendly vs 自作予約システム

本題に入る前に、数字で見てみたい。Calendlyの個人向け有料プランは月額16ドル、日本円でおよそ2,400円だ。年間にすると2万8,800円。5年使えば14万4,000円。10年使えば28万8,000円になる。

個人事業主にとって、この金額は大きい。なぜなら、本来なら別のことに使えたお金だからだ。たとえば月2,400円あれば、広告にまわすこともできるし、名刺を刷り直すこともできるし、顧客にちょっとしたお礼を送ることもできる。固定費を1つ減らすことは、売上を2,400円増やすより簡単で、しかも毎月効いてくる。

もちろん、Calendlyが便利なのは事実だ。ワンクリックで日程調整ができる、Google Calendarと連携する、確認メールが自動で飛ぶ。これらの機能を、自分で作って運用できるだろうか。答えはYesだ。この記事で具体的に示していく。

参考になる事例

Cal.com(カルドットコム)

予約システムを自作する上で、最も参考になるのがCal.comだ。これはCalendlyのオープンソース版と呼ばれるサービスで、コードがすべて公開されている。GitHubで誰でも見ることができる。

Cal.comは本格的な機能を備えているので、そのまま使うこともできるし、自作の参考にすることもできる。私自身、自作する前にCal.comのリポジトリ(コード置き場)を眺めて、予約データをどう保存しているか、重複防止をどう実装しているかを確認した。設計の考え方を学ぶには最高の教材だ。

ただ、Cal.comをそのまま自分のサーバーに設置して運用するのは、個人事業主には少し重い。機能が多すぎて、設定項目も多い。なので私は、Cal.comを参考にしつつ、自分が必要な機能だけを切り出して自作することをおすすめしている。

ある個人事業主の事例

私が知っているある個人事業主の話をしたい。カウンセリングを仕事にしている方で、月に30件ほどの予約を受けていた。Calendlyを3年使い、累計8万6,400円を払っていた。

その方がAIコーディング環境に出会って、予約システムを自作したのが2026年の1月だ。作業時間は土曜日の朝から夜まで、およそ10時間。完成後の1ヶ月でトラブルは2回あったが、どちらもAIに質問すれば修正方法が出てきたので、30分ほどで直せたという。

現在はCalendlyを解約し、月2,400円が浮いた。年間にすれば2万8,800円。それだけではない。自作したからこそ、予約フォームに自分の質問項目を自由に追加できるようになった。たとえば「今日相談したいテーマを一言で」のような項目だ。Calendlyでもできるが、自作だとデザインも文言も自分の色にできる。顧客体験が良くなった、と話していた。

具体的な手順

予約システム自作の6ステップ

図: 予約システム自作の6ステップ

ここから実際の作り方を書く。使うツールは3つだ。

  1. Claude Code(AIコーディング環境)
  2. Supabase(データベース)
  3. Vercel(公開サービス)

すべて無料で始められる。クレジットカードの登録も不要だ。

ステップ1:Supabaseで予約テーブルを作る

まずSupabaseのサイトで無料登録をする。プロジェクトを作成すると、データベースが1つ与えられる。そこに予約情報を入れる箱(テーブル)を1つ作る。

箱の中には、次の情報を入れる。

・予約ID(自動で振られる番号) ・予約者の名前 ・予約者のメールアドレス ・予約日時 ・作成日時 ・ステータス(確定 / キャンセル)

これだけだ。複雑なことはしない。Supabaseの管理画面でボタンを押すだけで箱が作れる。SQL(データベースに命令する言語)を書く必要はない。

もしSQLで書きたければ、Claude Codeに「Supabaseで予約テーブルを作るSQLを書いて。項目は名前、メール、予約日時、ステータス」と指示すれば、そのまま動くコードが出てくる。

ステップ2:予約フォームを作る

次に、顧客が予約を入力するフォームを作る。ここでClaude Codeを使う。指示はこう書く。

Next.js(WebアプリのフレームワークでReactを使う)で予約フォームを作って。名前、メールアドレス、予約希望日時を入力できるようにして。送信するとSupabaseの予約テーブルに保存される。Tailwind CSS(デザインを当てる仕組み)でシンプルにまとめて。

Claude Codeはこの指示に従って、コードを書いてくれる。出てきたコードをそのまま使えば、フォームが動く。わからない部分があれば「このコードを日本語で説明して」と追加で聞けばいい。

この時点で、30分から1時間ほどだ。

ステップ3:重複防止ロジックを入れる

ここが自作の難所だ。同じ時間に2人が予約を入れてしまうと、ダブルブッキングが発生する。これを防ぐ仕組みを入れる必要がある。

考え方はシンプルだ。予約を保存する前に、同じ日時の予約がすでに存在するかを確認する。存在すれば「その時間は埋まっています」と返す。存在しなければ新しく保存する。

Claude Codeへの指示はこう書く。

予約を保存する前に、同じ日時の予約が既にあるか確認して。もしあればエラーを返して。無ければ保存して。さらに、保存と確認は同時に起きても大丈夫なように、データベースのトランザクション(一連の処理をまとめて実行する仕組み)で囲んで。

これで重複は防げる。テストも忘れずにやろう。別のブラウザを2つ開いて、同時に同じ時間で予約を入れてみる。片方だけが成功し、もう片方がエラーになれば成功だ。

ステップ4:確認メールを自動送信する

予約が入ったら、顧客と自分の両方に確認メールが届くようにする。これにはResend(レゼンド、無料のメール送信サービス)を使うのが簡単だ。月3,000通まで無料で送れる。

Resendに無料登録すると、APIキー(外部サービスを呼び出す鍵)が発行される。これをコードの中に設定する。Claude Codeへの指示はこう書く。

予約が保存されたら、Resendを使って顧客と自分にメールを送って。顧客には予約内容と当日の案内、自分には新規予約の通知を送って。

メールの文面も一緒に考えてもらえる。「予約ありがとうございます。日時は◯月◯日△時です」のような定型文が出てくるので、自分の言葉に書き直せばいい。

ここまでで3〜4時間ほどだ。

ステップ5:Google Calendarと連携する

最後にカレンダー連携だ。予約が入ったらGoogle Calendarに自動で予定が入るようにする。これがあると、二重管理がなくなる。

Google Cloud ConsoleでCalendar APIを有効にし、認証情報を取得する。ここだけは画面が少し複雑だが、Claude Codeに「Google Calendar APIを使うための認証設定手順を教えて」と聞けば、ステップごとに説明してくれる。

認証が通れば、あとはコードを書くだけだ。指示はこう書く。

予約が確定したら、Google Calendarに予定を追加して。タイトルは予約者の名前、時間は予約日時、説明欄に顧客のメールアドレスを入れて。

これで完成だ。顧客がフォームから予約すると、データベースに保存され、確認メールが飛び、自分のGoogle Calendarに予定が入る。Calendlyと同じことができる。

ステップ6:Vercelで公開する

最後に公開する。コードをGitHub(コードを置く場所)に上げて、Vercelに連携するだけだ。数クリックで終わる。独自ドメイン(自分のURL)を設定すれば、「yourname.com/booking」のようなアドレスで予約を受けられる。

ここまでで、およそ8時間から10時間。慣れた人なら6時間で終わるだろう。

よくある失敗・落とし穴

ここまで読んで、1日でできそうだと感じた人に、先に失敗しやすいポイントを共有しておきたい。私自身がつまずいたところと、周りで自作した人が共通して引っかかっている箇所だ。

1つ目は、タイムゾーン(時差)の扱いだ。予約時刻を保存するときに、日本時間で保存するのか、UTC(世界標準時)で保存するのか迷うと、あとで必ずバグになる。結論を言うと、データベースにはUTCで保存し、表示するときだけ日本時間に変換するのが定石だ。Claude Codeにも「タイムゾーンはUTCで保存、日本時間で表示」と明確に指示しておくと安全だ。

2つ目は、重複防止のテスト不足だ。重複防止ロジックを入れたつもりでも、実際に同時刻の予約を2つ入れてみると、両方成功してしまうことがある。これはデータベースのトランザクション設定が甘いと起きる。完成したら必ず、別タブから同時に予約を入れるテストをしてほしい。

3つ目は、メール送信の失敗を無視してしまうことだ。Resendが何らかの理由でメールを送れなかった場合、予約自体は成功しているのに顧客に通知が届かない、という事態が起きる。これを防ぐには、メール送信が失敗したら自分に通知が来るようにしておく。たとえばSlackに投げるか、エラーログを別の場所に残す仕組みを入れておく。

4つ目は、キャンセル機能を後回しにすることだ。作った最初は予約を受けるだけで満足してしまうが、顧客はキャンセルや日時変更をしたいことがある。最低限、顧客が自分でキャンセルできるURLを予約確認メールに入れておくといい。これを後から追加するのは意外と面倒なので、最初から入れておくことをおすすめする。

5つ目は、セキュリティの甘さだ。Supabaseには行レベルセキュリティ(RLS、データごとにアクセス制限をかける仕組み)という機能がある。これをオフのままにすると、誰でもデータを見たり書き換えたりできてしまう。必ずオンにして、予約テーブルには「書き込みは誰でもできるが、読み取りは管理者のみ」という設定を入れておこう。

6つ目は、Calendlyをすぐに解約することだ。自作版が安定するまで、1ヶ月は並行運用してほしい。動作確認が終わってから解約しても遅くない。月2,400円の節約を急いで、顧客との約束を取り逃がすほうがよほど高くつく。

自作のメリットは、お金だけではない

ここまで節約の話を軸に書いてきたが、自作の本当の価値はお金以外にもある。最後にそれを書いておきたい。

1つは、データが自分のものになることだ。Calendlyを使っていると、顧客の予約履歴はCalendlyのサーバーの中にある。退会すればアクセスできなくなる。自作なら、データは全部自分のSupabaseに入っている。過去の顧客に再アプローチしたくなったら、メールアドレス一覧をすぐに取り出せる。

2つ目は、自由にカスタマイズできることだ。たとえば「初回の人には特別な質問項目を出す」「平日と土日で受付時間を変える」「予約が3日前に迫ったらリマインドメールを送る」といった独自のルールを、自分の事業に合わせて実装できる。SaaSでは実現しにくい細かな要望が、自作なら全部叶う。

3つ目は、自信がつくことだ。1日で動くWebアプリを作れた、という事実は、次の挑戦の背中を押してくれる。次はメルマガ配信システムを自作してみよう、次は顧客管理を自作してみよう、と固定費を1つずつ削っていける。気づけば月に1万円以上の固定費が消えていたりする。

明日からやる3つのこと

長くなったので、最後に明日からやることを3つにまとめる。

  1. 今払っているSaaSの月額を全部リストアップする

まずは現状把握だ。Calendly、CRM、メール配信、フォーム、分析ツール。毎月クレジットカードから引き落とされている金額を全部書き出してみてほしい。おそらく、思っていたより多いはずだ。そのリストを見ながら、どれなら自作できそうかを考える。予約システムは自作のしやすさで上位に来る。

  1. Claude CodeとSupabaseの無料アカウントを作る

次は環境構築だ。Claude Codeはターミナルから使うAIコーディング環境で、月20ドル(約3,000円)のProプランに入れば十分に使える。Supabaseは完全無料で始められる。両方のアカウントを作るだけなら、30分もかからない。週末の朝に登録を済ませておこう。

  1. 週末の土曜日を予約システム自作の日に決める

そして日程を決める。土曜日の朝9時から夜9時までを予約システム自作の日として、カレンダーに入れておく。この記事をもう一度読みながら、ステップ1から順番に進めていけば、夜までには動くものができているはずだ。詰まったらClaude Codeに質問する。それでもダメならCal.comのコードを眺める。1日で終わらなくても、2日目の半日を足せば必ず完成する。

Calendlyの月額2,400円を払い続ける理由は、もうない。固定費を1つ削るたびに、事業は少しだけ軽くなる。軽くなった分、別のことに時間もお金も使える。その積み重ねが、ひとり事業を長く続けるコツだと、私は思っている。