mcpField
E
effect-concurrency-fibers

effect-concurrency-fibers

github.com/mepuka開発540 回インストール44 週間前に更新
リポジトリ

effect-concurrency-fibers について

Effect による並行処理、Fiber のライフサイクル、競争処理、タイムアウトを扱うスキルです。非同期 Effect コードを開発する人向けに、並行数の制限と実装前のローカルソース確認を勧めます。

主な機能

  1. 01並行数を制限したタスク実行
  2. 02Fiber の起動・結合・中断
  3. 03処理の競争とタイムアウト設定
  4. 04ローカルの Effect ソースとテストの検索

活用シーン

  1. 01独立した Effect 処理の並列化
  2. 02終了時の中断を含むバックグラウンド Fiber の管理
  3. 03競争する処理のレイテンシ上限の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mepuka/effect-ontology --skill effect-concurrency-fibers

インストール後、Claude Code で/effect-concurrency-fibersを入力して読み込まれたか確認します。

詳細

並行処理とファイバー

使用する場面

  • 独立した処理を、制限を設けて安全に並列化する場合
  • バックグラウンドタスクとライフサイクルを調整する場合
  • レイテンシーを制御するために処理を競合させる場合

並列処理パターン

const results = yield* Effect.all(tasks, { concurrency: 10 })
const processed = yield* Effect.forEach(items, processItem, { concurrency: 5 })

ファイバーのライフサイクル

const fiber = yield* Effect.fork(work)
const value = yield* Fiber.join(fiber)
yield* Fiber.interrupt(fiber)

競合処理/タイムアウト

const fastest = yield* Effect.race(slow, fast)
const withTimeout = yield* Effect.timeout(operation, "5 seconds")

ガイダンス

  • リソースを保護するため、並行処理数に上限を設けます
  • バックグラウンドループには fork を使い、中断を必ず管理します
  • 独立した処理には Effect.all を優先します
  • プールには、concurrency を指定して Effect.forEach を使います
  • リトライやタイムアウトと組み合わせて、堅牢な並列処理を実現します

注意点

  • 並行処理数に上限がないと、CPU/IO を使い果たしたり、レート制限に達したりする可能性があります
  • シャットダウン時には、バックグラウンドのファイバーを必ず中断します
  • ファイバー内でブロックしないでください。処理は非同期かつ Effect を使う形に保ちます

関連リンク

  • エラーとリトライ:一時的な失敗に対するバックオフ+ジッター
  • ストリームとパイプライン:ストリーム上の並行マップ
  • EffectPatterns の参考例:https://github.com/PaulJPhilp/EffectPatterns

ローカルソースの参照

重要:実装前にローカルの Effect ソースを検索してください

Effect のソースコード全体は docs/effect-source/ にあります。Effect のコードを書く前に、必ず実際の実装を検索してください。

主なソースファイル
  • Effect:docs/effect-source/effect/src/Effect.ts
  • Fiber:docs/effect-source/effect/src/Fiber.ts
  • Duration:docs/effect-source/effect/src/Duration.ts
検索例
# Find Effect.all and concurrency patterns
grep -F "Effect.all" docs/effect-source/effect/src/Effect.ts

# Find forEach with concurrency
grep -rF "forEach" docs/effect-source/effect/src/ | grep -F "concurrency"

# Study Fiber lifecycle operations
grep -F "export" docs/effect-source/effect/src/Fiber.ts | grep -E "fork|join|interrupt"

# Find race and timeout implementations
grep -F "race" docs/effect-source/effect/src/Effect.ts
grep -F "timeout" docs/effect-source/effect/src/Effect.ts
ワークフロー
  1. 必要な並行処理 API(例:Effect.all、fork)を特定します
  2. docs/effect-source/effect/src/Effect.ts を検索して実装を確認します
  3. 型と並行処理のオプションを確認します
  4. テストファイルで使用例を確認します
  5. 実際の実装に基づいてコードを書きます

実際のソースコード > ドキュメント > 推測

参考資料

コメント