株式会社エクスブリッジ
カレンダー同期に、巨大なフレームワークはいらなかった — 1ファイルのCalDAVサーバー kcaldav を作って発売しました

カレンダー同期に、巨大なフレームワークはいらなかった — 1ファイルのCalDAVサーバー kcaldav を作って発売しました

2026年08月10日約5分で読めますCalDAVサーバー

Thunderbirdの予定を出先のスマホから読み書きしたい。それだけのために Nextcloud や sabre/dav を立てるのは重すぎます。CalDAVで本当に必要な処理だけを素のPHPで約450行、1ファイルに書いたCalDAVサーバー kcaldav を作り、Kurage App Storeで発売しました。PHPのみ・DB不要・レンタルサーバーに置くだけ。税込55,000円・MIT・デモあり。

「PCのThunderbirdに入れている予定を、出先のスマホからも見て、書き込みたい」。やりたいことはこれだけなのに、調べると出てくるのは Nextcloud や sabre/dav、Baïkal といった大掛かりなシステムばかりでした。

実際に Baïkal を立ててみて、痛感しました。カレンダーを1個同期したいだけなのに、1000ファイル超のフレームワークと、不格好なURLと、壊れやすい管理画面がついてくる。 これは道具立てが重すぎる。

そこで、逆に振り切ったものを作りました。1ファイルのCalDAVサーバー kcaldav です。

▶ デモを触る / kappstoreで見る(税込55,000円) / GitHub(MIT)

そもそもCalDAVとは

Thunderbird・iPhoneの標準カレンダー・Android(DAVx5)は、いずれも CalDAV という標準プロトコルに対応しています。カレンダーの実体をCalDAVサーバーに置けば、どの端末から予定を足しても、他の端末に反映されます。サーバーが唯一の正、という形です。

.ics ファイルのURL購読は「読み取り専用」なので、出先から書き込みたいなら CalDAV が必要です。問題は、そのサーバーが軒並み重いことでした。

フレームワークを捨てた

CalDAVは仕様としては大きいですが、カレンダーを1個同期するのに実際に使う処理はごくわずかです。kcaldav が実装しているのはこれだけです。

これで Thunderbird も iPhone も Android も、読み書き同期が成立します。差分同期(sync-collection)のような重い仕組みは持たず、「カレンダーの状態ハッシュ(getctag)が変わったら一覧を取り直す」方式にしました。個人〜家族の規模なら、これで軽くて十分です。

結果、本体は約450行の1ファイル。データベースサーバーもいりません(予定はSQLite1ファイルに貯まる)。PHPが動くレンタルサーバーにFTPで置くだけで動きます。

「全部読めるサイズ」だからAIに直せる

Kurage App Store の全商品と同じ思想です。読めないコードは直せないので、全部読めるサイズに収めました。ユーザー・カレンダー・パスワードは設定ファイル1枚で宣言し、宣言していない相手は一切さわれません。

「仕事用のカレンダーを増やして」「家族の分もアカウントを作って」——同梱のClaude Code向け設計マニュアルを読ませたAIに、そのまま頼めます。連絡先(CardDAV)対応や、読み取り専用の公開カレンダーといった、コードを触る拡張のレシピも付けました。

安全に振り切る

OPTIONS/認証/PROPFIND/REPORT/PUT/GET/更新/削除/権限分離の18項目の自動チェックを同梱しています。レンタルサーバー(heteml)の実機で、Basic認証の通過とThunderbird/iPhoneの接続シーケンスまで確認済みです。

まずデモを

デモをブラウザで開くと、サーバーが稼働していること(説明ページ)が見えます。実際の同期は、その接続URLをThunderbirdやiPhoneに登録して試せます(デモのユーザー: demo / demo)。買い切り・ソース渡し・MITライセンス。

やりたいことが小さいなら、道具も小さくていい。そう考えて作りました。

▶ kappstoreで見る(税込55,000円) / Kurage App Store — AIエージェントが見つけて、導入し、AIエージェントで育てる業務システムのお店

前後の記事

読んで、自分でやるか任せるか

記事のとおりに進めて詰まったら、そこから先は任せてください。名古屋の会社です。概算見積は無料です。

Kurage.AIKurage.AI に相談AIが何でも答えます