/* Page prose (ja) */
"TheGoldenRule" = "# 黄金律: ちょうど一度だけ再開する\n\ncontinuation に関するすべては、一つの法則に行き着きます。\n\n**continuation はちょうど一度だけ再開しなければなりません。ゼロ回は決してだめ。二度も決してだめ。**\n\nどちらの失敗も、その瞬間は静かで、後になって凶悪になります。\n\n* **ゼロ回再開する**:  \ncontinuation を受け取り、それからある経路（早すぎる `return`、`guard`、忘れていたエラー分岐）が再開を飛ばします。あなたを待っていた非同期関数は **永遠に中断します**。クラッシュもなく、デフォルトではログもなく、ただプログラムの生涯にわたって凍りついたタスクが、捕捉したものを保持し続けます。それが、前のページの「値もエラーもない」分岐が避けているワナです。\n* **二度再開する**:  \n二つのコールバックが発火する、ループの中で再開する、あるいはリトライが二度目のコールバックをする。二度目の再開は並行処理ランタイムを破壊します。\n\nだからこそ **checked** バリアント、`withCheckedContinuation` と `withCheckedThrowingContinuation` を使います。「Checked」とは、ランタイムがまさにこの二つの間違いについてあなたの continuation を *見張る* という意味です。\n\n* **二度** 再開すると、ランタイムは意図的に **トラップ** します。`SWIFT TASK CONTINUATION MISUSE: ... tried to resume its continuation more than once` のようなメッセージを伴うハードクラッシュです。わざと騒がしくしています。二重再開は本物のバグであり、テストでの明確なクラッシュは、本番での謎めいた破壊に勝ります。\n* **リーク** させると（再開されないまま解放される）、`... leaked its continuation without resuming it` のような警告をログに出し、どのラッパーがハングしたのかを正確に教えてくれます。\n\nチェックのない `withUnsafeContinuation` のペアがあります。学んでいる間は無視してください。checked 版はほとんどコストがかからず、静かなハングや破壊を、騒がしく見つけやすい問題に変えてくれます。「unsafe」に手を伸ばすのは、ラッパーが正しいと証明され、チェックが問題になると測定できた後だけにしましょう。\n\n実践的な習慣です。コールバックを通る **すべての** 経路（成功、各エラー、あり得なさそうな `else`）について、「これは continuation を再開するか？」と問いましょう。どの経路でもちょうど一つの再開が起きなければなりません。\n\n[前へ](@previous)  |  5 / 8 ページ  |  [次へ: delegate を橋渡しする](@next)";
