/* Page prose (ja) */
"MainActorMainThread" = "# `@MainActor`: コンパイラがチェックするメインスレッド\n\nUI の状態はメインスレッドでしか触れてはいけません。そのルールを守るクラシックな方法は、すべての更新を `DispatchQueue.main.async` で包み、決して忘れないよう*願う*ことでした。`@MainActor` はその仕事を代わりにやってくれます。型を `@MainActor` とマークすれば、そのすべてのメソッドは、誰が呼び出そうとメインスレッドで実行されることが**保証**され、コンパイラがそれをチェックします。\n\nその保証が実際に働くのを見るために、`Task.detached` で意図的に**バックグラウンドスレッド**から始め、それから `@MainActor` のディスプレイを呼び出します。小さなヘルパーがメインスレッド上にいるかどうかを報告します。というのも、Swift は async タスクの中で `Thread.isMainThread` を*直接*読むことを許さないからです。タスクはスレッドをホップできるので、そのまま読んでも信頼できません。";
"MainActorMainThreadNotice" = "出力を上から下へ読んでください。最初の行は `false` と表示します。本当にバックグラウンドスレッド上にいるのです。`deposit` の各行は `true` と表示します。`@MainActor` がその処理をメインスレッドに引き寄せてくれました。メインの外で始めたのに、ディスプレイはメインでしか触れられず、`DispatchQueue.main.async` を一度も書きませんでした。それが `@MainActor` のすべての約束です。\n\n各 `deposit` の前に `await` を書く必要はありました。それが次のページのテーマです。\n\n* callout(試してみよう): `Task.detached` を素の `Task` に変えてみましょう。素の `Task` はページのコンテキスト、つまり main actor を継承するので、今度は最初の行でさえ `true` と表示します。抜け出すべきバックグラウンドスレッドが最初からなかったのです。私たちをそこに置いたのは `Task.detached` でした。\n\n[前へ](@previous)  |  2 / 11 ページ  |  [次へ: main actor へのクロス](@next)";
