/* Page prose (ja) */
"WrappingUp" = "# まとめ\n\nタスクは作成した瞬間に実行を始め、キャンセルするのは丁寧な*要請*であって、停止ボタンではありません。この章の驚きのほとんどは、この2つの事実にさかのぼれます。スコープに束縛された構造化された処理を優先し、以下のポイントを、キャンセルを誠実に保つルールとして扱いましょう。\n\n* `Task` は作成されると**すぐに開始します**。その結果は `await task.value`（または `switch` で分岐できる `Result` を得るなら `await task.result`）で読み取ります。\n* **構造化**タスク（`async let`、タスクグループ）はスコープに束縛され、それより長生きできません。**非構造化**タスク（`Task`、`Task.detached`）は自由に漂い、あなたの責任になります。落とし穴として、ハンドルのない `Task { }` は待つこともキャンセルすることもできません。\n* 素の `Task` は優先度と actor コンテキストを**継承します**。`Task.detached` は**何も**継承しません。めったに望むものではない鋭い道具です。\n* タスクは**ツリー**を形成します。エラーは上に伝播し（兄弟をキャンセルし）、キャンセルはすべての子に下へ伝播します。\n* キャンセルは**協調的**であり、決して強制停止ではありません。`cancel()` はフラグを立てるだけなので、どんな長時間実行される処理でも、`Task.isCancelled`、`try Task.checkCancellation()`、またはスローする `Task.sleep` で定期的に確認しましょう。さもなければ「キャンセル」は嘘になります。\n\n---\n\n## 次は\n\n次の章、[AsyncSequence と AsyncStream](AsyncSequence%20and%20AsyncStream.playgroundchapter/Overview) は、単一のタスクから、時間とともに現れる値の*連なり*全体へと話を移します。`AsyncSequence` と `AsyncStream` でそれらを消費し、生成し、ループの中で `await` を使います。\n\n[前へ](@previous)  |  11 / 11 ページ";
