Skip to content

chunk-process - チャンクベースの並列処理ライブラリ

chunk-process は、大量の非同期タスクを効率的に処理するためのTypeScriptライブラリです。APIのレート制限を守りながら、メモリやCPUリソースを適切に管理しながら、バッチ単位で並列処理を行います。Before:const results = [] for (const item of items) { const result = await processItem(item) results.push(result) }After:await batchProcess(userIds, async (userId) => { return await fetchUserDataFromAPI(userId) }, { batchSize: 5 })

owned_ossActive

Background

外部APIを大量に呼び出す必要があるプロジェクトで、レート制限に引っかからないようにしながら効率的に処理する方法を探していました。Promise.all() だと全部同時に実行されてレート制限に引っかかるし、for...of で順次処理すると時間がかかりすぎます。

具体的には、AWSのCloudFrontを一括更新するスクリプトを作る際に、この問題の解決策が必要になりました。「N件ずつ並列で処理して、終わったら次のN件に進む」という処理パターンが欲しくなり、開発することに。当初は逐次処理のみのライブラリでしたが、現在はNode.js側のAPIで対応できる部分も増えたため、Chunk作成とバッチ処理の実施の2点にフォーカスしたライブラリへとリニューアルしています。

Architecture

  • TypeScript: 型安全性を重視
  • Vite: ビルドツール
  • Vitest: テストフレームワーク
  • TypeDoc: APIドキュメント生成
  • Zero Dependencies: 依存関係なしで軽量
Visit site / repository
Hidetaka Okamoto profile photo

Hidetaka Okamoto

Developer Experience Engineer

Developer Experience Engineer. A developer specialized in serverless application development on AWS and Cloudflare. Former Stripe Developer Advocate / AWS Samurai 2017. Skilled in creating content and presentations that introduce service usage and best practices. You can follow me on Twitter at @hidetaka_dev