見た目は変わらないですがバックエンドを変えてます
今までの運用
- カレンダーに追加したいconnpassやDoorkeeperのグループを condo3 でics取得
- 自分のGoogleカレンダーにインポート
- https://calendar.google.com/calendar/embedhelper?gsessionid=OK&hl=ja で埋め込み用のスニペットを生成して貼り付け
今までの運用の問題点
自分のGoogleカレンダーにインポートする関係上グループ追加時のみ自分がSPOFになってました。ただし、一度やってしまえばあとは全自動で最新のイベント情報が表示され続けるので問題ではなかったです。
しかしある時いつものように新しい地域.rbのグループを追加した辺りでカレンダーに表示されなくなりました。
公式情報がないので憶測なのですが、上記埋め込みツールで表示できるカレンダーが60個までという制約のため表示できなくなっていました。
たくさんカレンダーを追加しすぎた図
そのためグループの追加方法を変えました
解決方法
すごいシンプルですが、大量のカレンダーを埋め込むのがダメなので複数のグループを1つのicsにまとめることで解決しました。
具体的にはcondo3のAPIを叩いて巨大なicsを生成するウェブアプリをGoogleカレンダーにインポートしています
今はconnpassとDoorkeeperでicsを1つずつ作っているけど、量が増えすぎてタイムアウト起きるようになればさらに分割するかも。
技術的なこと
このウェブアプリ自体はGoogle App Engine/Rubyで作りました。
ソースコードは地域.rbカレンダーと同じリポジトリにあります。
appengineを採用した理由は今までHeroku + RubyがメインでGoogle App EngineでRubyは使ったことがなくて慣れておきたかったためです。*1
新しい運用方法
https://github.com/sue445/regional-rb-calendar のREADMEに書いてますがリポジトリにある設定ファイルとindex.htmlを修正してPRを投げるだけで新しいグループが追加されるようになりました。
PRをアクセプトする部分が自分がSPOFなのは変わらないけど、自分しかできない作業が減ったのは地味に嬉しい。