約1年ほど前に公開を停止したToday’s Schedule in Google CalendarというGoogle Chromeの拡張機能。
Today’s Schedule in Google Calendarが動かなくなった
公開停止時には2万人ものアクティブユーザがいたのだけどCalendar API v3にはAPIの呼び出し回数制限があってどう考えても2万ユーザもサポートできなくて諦めたのであった。しかし、その後不便だったので自分用にCalendar API v3に対応して、Developerモードで拡張機能を読み込んで粛々と使い続けている。使いながら見つかったバグを潰しつつほぼ完成はしている。
API v3対応にあたって一から書き直した。前のバージョンは2006年頃にYahoo! Widget用につくったOutlookのWidgetのコードがベースなのでかなり酷いコードだった。今回のはES6(ECMAScript 2015)でクラスをしっかり分離した上で表示部分はReactで書いているので大分保守は楽になった。
APIの呼び出し回数が多いのは新しい予定をポーリングしている実装上の問題で、どうやらCalendar APIにはPush通知機能があり、それで頑張れば呼び出し回数は減らせそうだけど今の制限が1,000,000回なので20,000人で割ると1日50回しか呼び出せない。カレンダーごとにAPIを呼び出しているのでまだ辛い。
さらにPush通知については一回自前のサーバでHookしてからChrome拡張機能に渡すように一手間かけないといけないと理解している。そもそも実現できるのかもわかっていないし、今のところ公開は現実的では無さそう。Chrome Storeでは任意のGoogleアカウントをテストユーザ登録して開発中のβ版公開みたいなことができるので、それを利用して招待制っぽく公開することもできなくはないかもしれないが。