距離関数でiCalendarの繰り返しイベントを飼いならす

2025-04-17
距離関数でiCalendarの繰り返しイベントを飼いならす

著者は、iCalendarファイルを処理するためのライブラリを実装する際に、繰り返しイベントの処理という課題に遭遇しました。iCalendarは、繰り返しイベントを定義するために複雑なルールを使用しており、従来の実装では、通常、異なる頻度やパラメータに対して多くの特定のロジックを書く必要があります。著者は別の方法を採用し、繰り返しルールをSQLクエリと見なし、コンピュータグラフィックスにおける符号付き距離関数(SDF)のアイデアを借用して、距離関数を使用してイベントの発生を表しました。この方法は、複雑なルールを単純な距離関数に分解し、繰り返し計算によってイベントの発生時刻を求めることで、多くの条件判断を回避し、よりクリーンで保守しやすいコードを実現します。初期の実装はそれほど効率的ではありませんでしたが、著者はそれを最適化して、複雑な繰り返しルールをミリ秒単位で処理できるようにしました。

(pwy.io)