/* Page prose (ja) */
"Overview" = "# Actors\n\n[並行処理の落とし穴](Concurrency%20Hazards.playgroundchapter/Overview)の章で見た、窓口のある銀行の惨事を思い出してください。多くの窓口係が同時に 1 つの共有残高へ入金を積み上げ、合計が*おかしく*なって、お金が単純に消えてしまいました。あれは **data race** でした。2 つのタスクが同じメモリを同時に読み書きし、互いを踏みつけていたのです。あのときは手作業で、すべての変更を 1 つのシリアルキューに通し、忘れないよう祈りながら修正しました。この章では、その修正を自動化し、コンパイラに強制させるモダンなツールを紹介します。それが **actor** です。\n\n---\n\n## このページで学ぶこと\n\n* **actor** とは何か、そして一度に 1 つのタスクだけを中に入れることで、どのように可変状態を保護するのか。\n* なぜ外部から actor を呼び出すには `await` が必要なのに、actor の*内部*のコードは同期的に実行されるのか、そして `nonisolated` は何のためにあるのか。\n* **再入（reentrancy）**: actor が `await` をまたいで再入されるしくみ、それが引き起こす微妙なバグ、そしてそれを防ぐ方法。\n* **`Sendable`** の最初の紹介。actor とタスクの境界を越えて安全に渡せるものを定めるルール。\n\nページをめくって、そのバグを最も単純な形でもう一度見てみましょう。\n\n1 / 7 ページ  |  [次へ: actor は一度に 1 つのタスクだけを入れる](@next)";
