/* Page prose (ja) */
"WhichToolWhen" = "# どのツールをいつ: チートシート\n\nこれを手元に置いておきましょう。新しいコードでは **モダン** の列から始め、列挙された理由があるときだけ **クラシック** の列に下りましょう。\n\n* **メインスレッドの外で作業を実行する。**  \nモダン: `Task { }`。クラシック: `queue.async`。\n* **前もってわかっている、独立した 2 つか 3 つの取得を実行する。**  \nモダン: `async let`。クラシック: `DispatchGroup`。\n* **可変な数の並列ジョブを実行する。**  \nモダン: `TaskGroup`。クラシック: グループ + セマフォ。\n* **共有された可変状態を守る。**  \nモダン: `actor`。クラシック: シリアルキューまたはカウント 1 のセマフォ。\n* **UI に触れる / メインに戻る。**  \nモダン: `@MainActor`。クラシック: `DispatchQueue.main.async`。\n* **時間の経過に伴うイベントのストリームを扱う。**  \nモダン: `AsyncStream`。クラシック: delegate または繰り返すコールバック。\n* **既存のコールバック API を 1 つ橋渡しする。**  \nモダン: `withCheckedContinuation`。クラシック: *これが橋を渡る方法です*。\n* **実行中の作業をキャンセルする。**  \nモダン: 協調的な `Task` キャンセル。クラシック: `Operation.cancel()` + 手作業の `isCancelled`。\n\n---\n\n1 つのケースは逆向きに進みます。**特定のキュー、QoS、タイマーソース、またはバリア**が本当に必要なとき、GCD は今でも正しく直接的なツールであり、手を伸ばすべきモダンな置き換えはありません。\n\n[前へ](@previous)  |  7 / 8 ページ  |  [次へ: まとめ](@next)";
