カレンダー

2024/01
 
   
       

広告

Twitter

記事検索

ランダムボタン

1/16の悪夢

by 唐草 [2024/01/13]



前回から続く

前回あらすじ
 ぼくの開発・納入したWebカレンダーアプリが1/16以降のスケジュールを表示しなかった。原因は想定以上に利用されスケジュール取得上限数の150件を超えたことだと思われたのだが…。
 
 自作のプログラムが利用されるのを見るのは、それがゲームでも、カレンダーでも等しく嬉しい。だが、想定を超えた利用はときに悪夢を生み出す。
 今回がまさにそのケース。
 Googleカレンダーからのスケジュール取得上限に設定した150件を少し増やせばこの問題は解消するはず。そこでぼくは設定ファイルにある150を200に書き換えて同期を実行した。
 ところが、Webカレンダーは相変わらず1/16を最後に一切のスケジュールを表示しないままだった。まるで1/16以降の世界が存在しないかのような表示だ。そう言えば、数年前に流行ったマヤ暦の終末論に似ている。世界が1/16に滅ぶのならこの表示でも構わないが、マヤ文明の天文学をもってしても予知できなかった世界の終焉をぼくのWebカレンダーが導けるわけもない。なによりぼく自身が終末を信じていない。
 なにが起きているかわからないが、ぼくが閃いた150件の取得制限が原因だというのは見当違いだったのだろうか?
 結論から言えば、150件の取得制限はすべての原因だった。だが、ぼくがそのことに気づくのが遅すぎたのだ。
 同期プログラムは、Wordpressから新しい記事を見つけて自動的にGoogleカレンダーにスケジュール登録する。その際に記事が登録済みか確認するのだが、制限のせいで確認対象には最大150件しか登録されない。もし151件目のスケジュールを登録したらどうなるか?
 同期後に151件目がないので失敗とみなして1時間後に再登録を行う。だが、再登録でも151件目を取得できないので1時間後に再々登録を行う。こんなスローペースな無限ループが発生する。
 そして、実際に起きてしまった。
 その結果、1/16に同じスケジュールが109件も登録されていた。
 だから取得件数を150から200に増やしてもまだ1/16から先の情報は取れなかった。250に増やしてもまだ足りない。260にしてようやく1/17にたどり着けた。よかった世界は終わらないみたいだ。
 この問題を解消するために、ぼくは重複した109件を手動で消すしかなかった。100件ぐらいだったのは不幸中の幸い。