Skip to content

スケジューリングの紹介

スケジューリングは、Effect において繰り返しエフェクトを定義する重要な概念です。これは、エフェクトを実行するためのスケジュールパターンを記述するイミュータブルな値であるSchedule<Out, In, Context>を使用します。

Scheduleは、In型(例えば、retryの場合のエラーやrepeatの場合の値)の値を消費し、Out型の値を生成します。これは、入力値と内部状態に基づいて、実行を停止するか続行するかを決定します。

Contextパラメータを含めることで、スケジュールは必要に応じて追加のサービスやリソースを活用することができます。

スケジュールは、時間にわたって広がる間隔の集合として定義されます。各間隔は、エフェクトの繰り返しが可能なウィンドウを表します。

再試行と繰り返し

スケジューリングの領域には、関連する 2 つの概念があります:再試行繰り返しです。これらは同じ根底にあるアイデアを共有していますが、焦点が異なります。再試行は、エフェクトを再度実行することで失敗を処理することを目的としていますが、繰り返しは、望ましい結果を達成するためにエフェクトを繰り返し実行することに重点を置いています。

再試行や繰り返しのためにスケジュールを使用する際には、各間隔の開始境界がエフェクトが再度実行されるタイミングを決定します。例えば、再試行において、エラーが発生した場合、スケジュールはエフェクトを再試行すべきタイミングを定義します。

スケジュールの合成性

スケジュールは合成可能であり、シンプルなスケジュールを組み合わせてより複雑な繰り返しパターンを作成できます。unionintersectのような演算子を使用することで、既存のスケジュールを組み合わせて修正し、洗練されたスケジュールを構築できます。この柔軟性により、特定の要件を満たすようにスケジューリングの動作を調整することが可能です。