はじめに
Discord向けのカレンダーアプリ「DisCalendar」を開発・運用しています。
ブラウザのカレンダーで予定を管理し、Discordのチャンネルへ通知するためのサービスです。ゲーム会や勉強会など、サーバーのメンバーで共有したい予定を登録して使えます。
もともとは身内のサーバーだけで使うBotでしたが、現在は3代目のv3として運用しています。
この記事では、予定の登録から通知までの使い方と、v1からv3までの歩み、現在の技術構成を紹介します。
公式サイトで公開しているデモ画面。サンプルの予定を表示しています。本記事の機能説明は2026年9月7日時点のv3.8.0を基準にしています。
作ったきっかけは「いつものカレンダーを、Discordとつなぎたい」
Googleカレンダーのような画面で予定を入力して、通知は普段愛用しているDiscordで受け取る。そんなBotがあれば便利だと思ったのが、作り始めたきっかけです。
こだわっているのは、直感的に操作できることと、導入しやすいことです。長いコマンドや独自の書式を覚えずに予定を追加できるよう、ブラウザでの操作を中心にしています。
Googleカレンダーの接続は不要で、Discordアカウントがあれば使えます。
週末のゲーム会を登録してみる
1. Botを招待して、サーバーのカレンダーを開く
トップページの「BOTを導入する」から、Discordの画面で追加先のサーバーを選びます。Botの招待にはサーバーの管理権限が必要です。
その後、DisCalendarにDiscordアカウントでログインし、対象のサーバーを選ぶとカレンダーが開きます。利用する方がプログラムを動かしたり、Bot用のトークンを用意したりする必要はありません。
2. 通知を流すチャンネルを決める
カレンダー右上の歯車からサーバー設定を開き、「Discordへの通知」で通知先チャンネルを選んで保存します。この設定には管理権限が必要です。
公式サイトの設定デモから、通知に関係する部分を抜粋しています。
通知先を決めていないと、予定を追加してもDiscordには通知されません。最初にここまで設定しておくと、あとはカレンダーで予定を管理できます。
3. 日付を選んで、予定と事前通知を入力する
カレンダーの日付や「新規作成」を押すと、予定の入力画面が開きます。
今回は、週末のゲーム会を例に入力してみます。
| 項目 | 入力例 |
|---|---|
| タイトル | 週末のゲーム会 |
| 日時 | 2026年9月12日 21:00〜23:00 |
| 事前通知 | 1日前と1時間前 |
| 説明 | 21時からボイスチャンネルに集合。遊ぶゲームは当日決めましょう! |
事前通知は「何分前」「何時間前」「何日前」「何週間前」という形で、予定ごとに最大10件まで指定できます。上の例なら、前日に一度知らせて、当日の開始1時間前にもリマインドする設定です。
開始時刻の通知もあり、不要ならサーバー設定でオフにできます。新しい予定に最初から入れておく事前通知も、サーバーごとに変更できます。
予定を変更するときは、カレンダー上の予定をクリックして編集します。日時だけの変更なら、ドラッグで移動することもできます。詳しい操作は予定の追加と表示にまとめています。
予定の確認や共有に便利な機能
複数のサーバーの予定を、一つの画面で見る
複数のサーバーでDisCalendarを使っている場合は、「すべての予定」から、自分が参加していてBotも導入されているサーバーの予定をまとめて見られます。
サーバーごとに色分けされるので、「ゲームの予定と別のコミュニティの予定が重なっていないか」といった確認にも使えます。この画面は閲覧用で、作成・編集は各サーバーのカレンダーから行います(カレンダーの使い方)。
普段使っている外部カレンダーからも見る
サーバーの予定を、GoogleカレンダーやAppleカレンダーなどで購読することもできます。サーバー設定で発行したフィードURLを、外部カレンダーに登録する方式です。
これは閲覧用の連携で、編集はDisCalendar側で行います。また、変更の反映タイミングは外部カレンダーの更新間隔によります。すぐに最新の内容を確認したいときは、DisCalendarを開いてください(外部カレンダーで見る)。
予定一つだけをリンクで共有する
予定の編集画面から共有リンクを発行すると、リンクを受け取った人はログインせずにその予定を確認できます。別のサーバーやDMで、一つの予定を案内したいときに使えます。
共有リンクでは、その予定のタイトル・日時・説明・サーバー名が見えるようになります。外部カレンダーのフィードURLはサーバーの予定を購読するためのものなので、予定一つを共有するリンクとは公開される範囲が違います。どちらも、URLを知っている人が閲覧できることを前提に使ってください(予定の共有方法)。
Discordのスケジュールイベントとも連携する
作成画面の「Discordのイベントとしても作成する」を使うと、Discord側にもスケジュールイベントを作れます。Discordの「興味あり」を利用したい場合にも使えます。
連携には利用者とBotの権限が必要です。また、変更が反映されるのはDisCalendarからDiscordへの方向です。Discord側で直接編集した内容が、DisCalendarへ戻ってくるわけではありません(イベント連携の説明)。
導入実績
2026年9月7日に管理画面を撮影した時点では、次の件数になっていました。
| 管理画面の項目 | 件数 |
|---|---|
| Botが参加中のサーバー | 8,833 |
| 保存されている予定 | 133,595 |
| そのうち、これからの予定 | 2,522 |
画像には、Botが退出済みでデータが残っているサーバーも7,046件と表示されています。これは参加中の8,833サーバーには含めていません。また、予定の件数は撮影時点で保存されているレコードの数で、これまでに作られたすべての予定の累計ではありません。
サーバー数は利用者数や日々のアクティブ数を示すものではありませんが、身内向けから始まったBotが、これだけのサーバーに導入されるようになりました。使ってくださっている皆さん、ありがとうございます。
実は旧版のDisCalendarを長く運用していた
v1:身内向けから始まった
最初のv1は、身内のサーバーだけで使うクローズドなBotでした。
v2:Nuxtベースで、2020年から2026年まで運用
v2はNuxt+Vuetifyベースで作り、2020年から2026年まで運用しました。ブラウザでカレンダーを操作し、Discordへ通知する使い方は、この頃から続いています。
当時は革新的に思えたマテリアルUIベースのインターフェースでしたが、数年の月日が経つうちに「一昔前感」が否めないUIとなっておりました。
v3:Claude・Codexを使い、使い慣れた操作を引き継ぐ
現在運用しているのがv3です。ClaudeやCodexを開発に活用し、継続的に更新しています。
大切にしているのは、それまでの使い勝手を引き継ぐことです。全面リニューアルの際には、保存されていた予定やサーバー設定を引き継ぎました。カレンダーの操作は保ちつつ、Discord上の旧形式のcalコマンドはスラッシュコマンドへ移行しています(v3以降の更新履歴)。
導入の手間も減らしています。例えば、v3.8.0ではブラウザから通知先を設定できるようにしました。カレンダーを開いたら、そのまま初期設定まで済ませられます。
また、v2ではログ周りの設定などがうまくいっておらずサーバー容量を圧迫しているという問題があり、度々サービスが止まってしまうといった問題がありました。
すでに使われている方からすれば、「こいつ定期的に止まるよな」といった印象を与えてしまっていたかと思います。この周りの設計も全て見直しし、安定したサービスを実現できたかなあと思います。
開発者向け:現在はNext.jsとRustで構成しています
v3.8.0では、主に次の技術を使っています。
| 担当 | 主な技術 |
|---|---|
| Web画面 | Next.js 16、React 19、TypeScript |
| カレンダーUI | FullCalendar 7 |
| ログイン | Better AuthによるDiscord認証 |
| データ取得・フォーム | TanStack Query、React Hook Form、Zod |
| API | Rust、actix-web、SQLx |
| Discord Bot | Rust、poise/serenity |
| データベース | PostgreSQL |
バージョンや依存関係は、Webのpackage.json、API、Bot、Rustワークスペースから確認できます。
予定の保存から通知までを簡略化すると、次の流れになります。認証やスラッシュコマンドなどは省略しています。
ブラウザで操作する部分と、時刻を見て通知する部分を分けています。予定はAPI経由でデータベースへ保存し、Botが予定と通知設定を確認してDiscordへ送信します。そのため、予定を保存したあと、利用者がブラウザを開いたままにする必要はありません(通知処理の実装)。
操作結果が分かるようにすることも大切にしています。予定をドラッグで移動すると、画面には移動先がすぐに反映されます。保存に失敗した場合は元の位置に戻し、エラーを表示するようにしています(予定の編集の説明)。
実装に興味のある方は、GitHubリポジトリも見ていただけるとうれしいです。
今後の展望
今後の機能追加も、GitHubのIssueで整理しています。2026年9月7日時点のOpen Issueから、主なものを紹介します。
| 追加予定の機能 | できるようにしたいこと |
|---|---|
| 繰り返し予定 | 毎週・毎月などの定例イベントをまとめて登録し、各回の事前通知や「この回だけ」「以降すべて」の変更に対応する |
| 日程調整・投票 | 複数の候補日時に投票し、決まった候補からそのまま予定を作る |
| 通知先とメンションの指定 | 予定ごとに通知先チャンネルやメンションするロール・ユーザーを選び、関係するメンバーへ案内しやすくする |
| 今日・今週の予定のまとめ | 決まった時刻に予定の一覧をチャンネルへ投稿し、その日や週の予定を確認しやすくする |
| Discordイベントとの連携強化 | Discord側で作成・変更したイベントを取り込むほか、「興味あり」の人数とメンバーをカレンダー上で確認できるようにする |
| 外部カレンダーの取り込み・重ね表示 | ICSファイルから予定を取り込む。外部カレンダーを購読し、読み取り専用で重ねて表示する機能も検討する |
| Webhookによる外部連携 | 予定の作成・更新・削除を登録したURLへ通知し、自作ツールやほかのサービスとの連携に使えるようにする |
仕様や実装時期は検討中です。進捗は、それぞれのIssueで確認できます。
おわりに
DisCalendarは、すべての機能を無料で利用できます。Discordで予定を共有する機会があれば、次のゲーム会や集まりの予定を登録してみてください。




