VWork バイブコーディングフレームワーク

アプリを入れずに、ブラウザで予定を読み書き — 1ファイルのカレンダー kcaldav に WEB画面を付けました

2026年8月10日

先日、1ファイルのCalDAVサーバー kcaldav を公開しました。Thunderbirdの予定をスマホから見られるように、と作ったものです。

ところが実際に自分で使ってみて、要件を取り違えていたことに気づきました。Androidで予定を「書き込む」には、結局DAVx5のような同期アプリが要る。 ユーザーが本当に欲しかったのは「アプリを入れずに、ブラウザで読み書きしたい」でした。

そこで大きく更新しました。ブラウザだけで予定を読み書きできるWEBカレンダー画面を同梱しています。

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

ブラウザを開くだけ、アプリは要らない

本体URLをブラウザで開くと、ログインのあと、そのままカレンダー画面になります。

スマホのブラウザでも同じで、日付や時刻はスマホのネイティブな選択UIが出ます。アプリのインストールも、ストアでの購入も要りません。これが一番の追加点です。

それでいて、標準アプリとも全部つながる

WEB画面で足した予定は、裏側のCalDAVと同じデータに入ります。だから、次のどれから足しても全部に反映されます。

出先はスマホのブラウザで、自宅はPCのThunderbirdで。同じ予定表を、好きな入口から読み書きできます。

「読み取り専用になる」を直した話

開発中、AndroidのKashCalでつないだら、予定に「複製」「共有」しか出ず、編集できませんでした。原因はサーバー側で、CalDAVには「あなたはこのカレンダーに書き込めます」という権限情報(current-user-privilege-set)を返す決まりがあり、これが無いと厳しめのクライアントはカレンダーを読み取り専用扱いにします。

kcaldav はカレンダーと予定の両方でread/write/bind権限を返し、OPTIONSのDAVヘッダにaccess-controlも含めるようにしました。これで対応クライアントからちゃんと編集できます。CalDAVは仕様が大きいので、こういう「一言足りないと動かない」箇所を潰していくのが実装の勘所でした。

中身は相変わらず1ファイル

sabre/davやNextcloudのような巨大フレームワークは使っていません。CalDAVで実際に必要な処理(OPTIONS/PROPFIND/REPORT/GET/PUT/DELETE)とWEBカレンダー画面を、素のPHPで約600行の1ファイルにまとめています。保存はSQLite1ファイル、DBサーバー不要。PHPが動くレンタルサーバーにFTPで置くだけです。

まずデモを

デモ(demo / demo)をブラウザで開けば、予定の追加・編集・削除をその場で試せます。買い切り・ソース渡し・MITライセンス。

やりたいことが小さいなら、道具も小さくていい。前回そう書きましたが、今回はさらに「そもそもアプリを入れなくていい」ところまで削りました。

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