/* Page prose (ja) */
"MainActorRun" = "# `MainActor.run`: メインへの一度きりのホップ\n\n型全体を `@MainActor` とマークするのは、その型の仕事が UI であるときに正しい選択です。しかし、時にはバックグラウンド処理の奥深く、大きな計算、パース、バッチインポートの最中にいて、*ほんの小さな部分*だけが main actor を必要とすることがあります。ディスプレイを更新する瞬間です。そのためだけにタスク全体をメインに移すのは、メインスレッドの無駄遣いになります。\n\n`MainActor.run { }` は 1 つのクロージャを main actor で実行し、それを待って、結果を返します。ここではバックグラウンドスレッドで重い処理をし、それからディスプレイの更新だけをメインにホップします。";
"MainActorRunNotice" = "最初の行は `false` と表示します。加算はメインスレッドの外で実行されました。重い処理が属する場所です。`MainActor.run` の中で deposit は `true` と表示します。その 1 つのクロージャ、そのクロージャだけが main actor で実行されました。それが返した値はホップを越えて戻ってきたので、`shown` はメインの外で再び使えます。\n\nこれは「重い作業をメインの外で行い、それから `DispatchQueue.main.async` でラベルを更新する」のモダンな反響です。ただし、1 つの式であり、値を返せて、コンパイラがクロージャが本当にメインで実行されることを保証します。\n\n* callout(試してみよう): 同じ `MainActor.run` ブロックの中に 2 つ目の `display.deposit(25)` を追加してみましょう。両方の更新がメインへの*一度きり*のホップで起こります。`MainActor.run` がなければ、それぞれ別々に `await` することになり、行ごとに行き来してホップするでしょう。\n\n## タスク全体をメインで実行する\n\n`MainActor.run` は 1 つのクロージャをホップします。*タスク全体*を main actor で実行したいとき、どこからでも、バックグラウンドコードの奥深くからでも、`Task { @MainActor in }` で開始します。\n\n```swift\nTask { @MainActor in\n    display.deposit(25)   // already on the main actor, so no await\n    display.deposit(25)\n}\n```\n\n中のすべてが main actor で実行されるので、前のページで必要だった `await` は単純に消えます。\n\n[前へ](@previous)  |  4 / 11 ページ  |  [次へ: 関数やプロパティだけをマークする](@next)";
