effect-concurrency-fibers について
Effect による並行処理、Fiber のライフサイクル、競争処理、タイムアウトを扱うスキルです。非同期 Effect コードを開発する人向けに、並行数の制限と実装前のローカルソース確認を勧めます。
主な機能
- 01並行数を制限したタスク実行
- 02Fiber の起動・結合・中断
- 03処理の競争とタイムアウト設定
- 04ローカルの Effect ソースとテストの検索
活用シーン
- 01独立した Effect 処理の並列化
- 02終了時の中断を含むバックグラウンド Fiber の管理
- 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
ワークフロー
- 必要な並行処理 API(例:Effect.all、fork)を特定します
docs/effect-source/effect/src/Effect.tsを検索して実装を確認します- 型と並行処理のオプションを確認します
- テストファイルで使用例を確認します
- 実際の実装に基づいてコードを書きます
実際のソースコード > ドキュメント > 推測
参考資料
- Agent Skills の概要:https://www.anthropic.com/news/skills
- Skills ガイド:https://docs.claude.com/en/docs/claude-code/skills
コメント
Markdown 対応