はじめに
「ミーティングの日程調整、面倒くさくないですか」
仕事をしていると、打ち合わせの調整って地味に時間を取られますよね。「来週のどこか空いてますか」「火曜の午後はどうでしょう」「あ、その時間は別件が...」というやり取りを何往復もする。
Calendlyのような予約ツールを使えば、自分の空き時間を共有して相手に選んでもらえるので、この手間が激減します。ただ、Calendlyは便利だけど、ちゃんと使おうとすると月額費用がそれなりにかかる。
そこで知っておきたいのがCal.comです。
「The open source Calendly successor」を掲げるプロジェクトで、GitHubスターは39,000を超えています。自分のデータ、ワークフロー、外観を完全にコントロールできるのが売り。セルフホストすれば月額費用ゼロで使えます。
Cal.comとは
Cal.comはオープンソースの「スケジューリングインフラストラクチャ」です。予約ページの作成、カレンダー連携、ビデオ会議の自動設定といった機能を備えています。
特徴的なのは、単なるCalendlyクローンではなく「インフラストラクチャ」として設計されている点。API駆動でホワイトラベル対応、自社サービスに組み込んで使うことも想定されています。
コントリビューターは870名以上、コミット数は15,000以上と、オープンソースプロジェクトとしてはかなり活発に開発が進んでいます。
特徴・メリット
セルフホスト対応
個人的にはここが一番のポイントですね。自前のサーバーで動かせば、予約データを外部に預ける必要がない。顧客との打ち合わせ情報って、考えてみれば結構センシティブなデータですから。
もちろん、セルフホストが面倒なら、Cal.com公式のホスティングサービスも使えます。
ホワイトラベル対応
自社のドメイン、自社のブランドで予約ページを公開できます。「yourcompany.com/book」のようなURLで予約を受け付けられる。SaaSビジネスをやっている人なら、この機能は刺さるんじゃないでしょうか。
カレンダー連携
Google Calendar、Outlook、Apple Calendarなど主要なカレンダーサービスと連携できます。二重予約を防ぐために、複数のカレンダーをチェックして空き時間を自動算出してくれる。
ビデオ会議の自動設定
Zoom、Google Meet、Daily.coなど、ビデオ会議ツールとの連携も標準装備。予約が入ると、自動でミーティングリンクが発行されて招待に含まれる。地味だけど、これがあると手間が全然違う。
チーム向け機能
複数人のスケジュールを調整する「ラウンドロビン」や「集合型ミーティング」にも対応。営業チームで問い合わせ対応を回すとか、複数の担当者が同席する打ち合わせの調整とか、そういう場面で使えます。
ワークフローの自動化
予約の確認メール、リマインダー、フォローアップといった定型的なやり取りを自動化できます。リマインダーはSMSでも送れるらしい。
技術スタック
エンジニア目線で見ても、モダンな構成になっています。
| レイヤー | 技術 |
|---|---|
| フレームワーク | Next.js |
| UI | React, Tailwind CSS |
| API | tRPC |
| ORM | Prisma |
| ビデオ | Daily.co |
| データベース | PostgreSQL |
Next.jsとtRPCの組み合わせは、型安全なフルスタック開発の定番構成ですね。Prismaを使っているので、データベースまわりも扱いやすい。
インストール方法
Cal.comのセルフホストには、いくつかの方法があります。
Docker Composeでの起動
まず、リポジトリをクローンします。
git clone https://github.com/calcom/cal.com.git
cd cal.com
環境変数ファイルをコピーして設定します。
cp .env.example .env
.envファイルを編集して、必要な設定を行います。最低限、以下の項目は設定が必要です。
# データベース接続
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/calcom"
# NextAuth設定
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"
# カレンダー連携用(Google Calendarの場合)
GOOGLE_API_CREDENTIALS='{"client_id":"...","client_secret":"..."}'
Dockerで起動する場合:
docker compose up -d
ローカル開発環境の構築
開発目的であれば、直接起動することもできます。
# 依存関係のインストール
yarn install
# データベースのセットアップ
yarn workspace @calcom/prisma db-deploy
# 開発サーバーの起動
yarn dev
ブラウザで http://localhost:3000 にアクセスすると、Cal.comの画面が表示されます。
必要要件
- Node.js v18以上
- PostgreSQL v13以上
- Yarn(推奨)
基本的な使い方
1. アカウント作成とプロフィール設定
初回アクセス時にアカウントを作成します。名前、タイムゾーン、プロフィール画像などを設定。このプロフィールが予約ページに表示されます。
2. カレンダーの接続
設定画面からGoogleカレンダーやOutlookを連携します。OAuth認証で接続するだけなので、難しいことはありません。複数のカレンダーを接続して、すべてを考慮した空き時間を算出できます。
3. イベントタイプの作成
「30分ミーティング」「1時間コンサルティング」のように、予約の種類を作成します。それぞれに対して、所要時間、バッファ時間、予約可能な時間帯を設定。
// イベントタイプの設定例
{
title: "30分ミーティング",
slug: "30min",
length: 30, // 分
beforeEventBuffer: 5, // 前のバッファ
afterEventBuffer: 5, // 後のバッファ
minimumBookingNotice: 60, // 最低60分前まで予約可能
}
4. 予約ページの共有
設定が完了すると、予約ページのURLが発行されます。cal.com/yourname/30min のようなURLを相手に送れば、相手は空いている時間から選んで予約できます。
5. 通知設定
予約が入ったときの通知、リマインダーのタイミングなどを設定します。メール、SMS、Webhook通知に対応。
実践的なユースケース
フリーランスの打ち合わせ予約
クライアントとの打ち合わせ調整に使えます。自分の空き時間を公開して、相手に選んでもらう。「いつがいいですか」のやり取りがなくなると、時短効果が結構大きい。
採用面接のスケジューリング
人事担当者と応募者の日程調整。ラウンドロビン機能を使えば、複数の面接官で均等に担当を振り分けることもできます。
カスタマーサポートの予約
サポート窓口の予約システムとして。問い合わせフォームの代わりに、直接サポート時間を予約してもらう形式。
SaaSサービスへの組み込み
API駆動なので、自社サービスの一機能として組み込むことも可能。コーチングプラットフォーム、オンラインスクール、コンサルティングサービスなどで使えそうですね。
営業チームのデモ予約
見込み客にデモの予約をしてもらう。チーム全体の空き時間から自動で割り当てる設定にすれば、営業担当者の負荷も分散できます。
Calendlyとの比較
正直なところ、機能面ではCalendlyも十分優秀です。比較するとこんな感じ。
| 観点 | Calendly | Cal.com |
|---|---|---|
| 価格 | 無料プラン〜月額$20程度 | 無料(セルフホスト) |
| セルフホスト | 不可 | 可能 |
| ホワイトラベル | 有料プラン | 可能 |
| カスタマイズ性 | 限定的 | ソースコードレベルで可能 |
| サポート | 公式サポートあり | コミュニティベース |
| 安定性 | 実績豊富 | 成長中 |
Calendlyはサービスとしての完成度が高く、サポートも充実しています。「とにかく楽に使いたい」ならCalendlyのほうが手っ取り早い。
一方、Cal.comは「自分でコントロールしたい」「コストを抑えたい」「自社サービスに組み込みたい」という人向け。エンジニアがいるチームなら、Cal.comのほうが自由度が高くて面白いと思います。
注意点
いくつか気をつけるべき点もあります。
セルフホストの運用負荷
無料で使えるのは魅力ですが、サーバーの管理、アップデート、バックアップは自分でやる必要があります。本番運用するなら、インフラまわりの知識は必要。
初期設定のハードル
カレンダー連携にはOAuth設定が必要で、Google Cloud ConsoleやAzureの設定が必要になります。この辺りは公式ドキュメントを見ながら進める必要がある。
日本語対応
UIの日本語対応は進んでいますが、完全ではない部分もあります。海外のオープンソースプロジェクトあるあるですね。
まとめ
Cal.comは「Calendlyは便利だけど、もっと自由に使いたい」という人にぴったりの予約管理ツールです。
- オープンソースでセルフホスト可能
- ホワイトラベル対応で自社ブランドの予約ページを作れる
- API駆動で自社サービスへの組み込みも可能
- 870人以上のコントリビューターが活発に開発中
30代になって思うのは、ツールって「便利さ」と「コントロール」のバランスが大事だということ。Calendlyは便利だけど、データは外部にある。Cal.comなら、多少の手間はかかるけど、すべてを自分の手の中に置ける。
コスパ的にも、ある程度の規模で使うならセルフホストのほうが圧倒的に安くなります。まずはDockerで立ち上げて、触ってみてください。
公式サイト: https://cal.com GitHub: https://github.com/calcom/cal.com ドキュメント: https://cal.com/docs