技術記事です。今日は Go の golang.org/x/sync/errgroup についてです。 TL; DR Go が並行処理を得意とするのは事実だけど、とはいえ正しく使うのは難しい(特に channel)。 errgroup なら「並行でダウンロードする」のような頻出パターンをとても簡単かつ安全に使えるので、まずはこれで美味しいところだけ頂いてしまおう。 重い処理を並行にすればあなたのプログラムはカジュアルに数倍速くなる。 多分 errgroup だけで現実の要件の85%くらいはカバーできるはず。 channel も含めてちゃんと使いこなしたいと思ったら、Go 言語による並行処理 がおすすめです。 errgroup とは ドキュメントはここを参照してください。説明を読むよりコード例で見たほうが早いと思うのでこちらをどうぞ。 package main import ( "fmt" "