/* Page prose (ja) */
"Overview" = "# Task Groups\n\n写真をスタックする天体観測ツールを作っているとしましょう。かすかなシミを鮮明な銀河に変えるには、空の同じ一角を何度も撮影し、フレームを**スタック**します。数十枚から数百枚の露出を1枚のクリーンな画像に合成するのです。各フレームはスタックに加わる前に読み込みと補正が必要で、それらの処理は互いに依存しないので、すべてを一度に実行したくなります。しかし、枚数は事前にはわかりません。今夜は8フレーム、明日は200フレームかもしれません。[async/await の基礎](Async%20Await%20Basics.playgroundchapter/Overview) の章では、*固定された既知の*ひと握りの処理を並列に実行する `async let` を学びました。この章は、*動的な*数のためのツール、**task group** を扱います。\n\n---\n\n## このページで学ぶこと\n\n* 並列処理の数が固定でないとき、なぜ `async let` では足りなくなるのか。\n* `withTaskGroup` で `N` 個の並行な子タスクを展開し、その結果を集める方法。\n* なぜ結果は**完了順**に届くのか、そしてどうやって順序を戻すのか。\n* `withThrowingTaskGroup` がエラーをどう扱うのか。残りをキャンセルして再スローします。\n* **構造化された保証**（グループはタスクを決してリークしない）と、キャンセルが子へどう伝わるのか。\n* 同時に実行する子タスクの数を**制限する**パターンと、なぜそうしたいのか。\n\n準備ができたら、ページをめくって、`async let` がどこで足りなくなるのかを正確に見ていきましょう。\n\n1 / 9 ページ  |  [次へ: async let の限界](@next)";
