PR:この記事にはアフィリエイトリンクが含まれます。
Rustの非同期処理を学び始めると、asyncとawaitは書けても、処理がいつ進みTokioが何をするのか分かりにくくなりがちです。文法と実行の仕組みが結び付くと、ネットワーク処理の設計も見通せます。
この記事ではFutureとawaitの基本を押さえ、Tokioを使った実装やランタイム内部を学べる本を紹介します。最初の一冊を探すなら、日本語で仕組みから実践へ進める『Async Rust』がおすすめですよ。
まず全体像
| 書籍 | 主に扱う内容 | 学習の軸 |
|---|---|---|
Async Rust | Future、Pin、Tokio、非同期サーバー | 基礎から実装まで順に追う |
Asynchronous Programming in Rust | Futureの実装、イベントキュー、自作ランタイム | 内部構造を例題で追う |
Rust Web Programming | Tokio、TCP、アクタ、各種Webフレームワーク | Webアプリ構築と一緒に学ぶ |
Rust Web Development | Tokio、warp、reqwest、API開発 | API実装の工程を学ぶ |
4冊が扱うのはRustの非同期処理ですが、注目する範囲はそれぞれ異なります。Futureの動作を知りたいのか、Webサービスを作りたいのかで、読後に得られる知識が変わります。
Tokioのコードを書き始めた人は、仕組みと実例を一緒に追える本から読むと理解しやすいでしょう。asyncとawaitをすでに使っていて裏側が気になるなら、Futureやランタイムを自作する本が役立ちます。
英語書籍には、Webアプリ開発を広く扱う本と、ランタイムの内部構造を詳しく学ぶ本があります。Rustの基礎知識やWeb開発の経験も、読み進めやすさに関わりますね。
非同期の基本
Rustのasync fnを呼ぶとFutureが返ります。処理を進めるのは、実行役からpollされたタイミングです。
awaitはFutureの完了を待つ地点です。待ちが発生すると、その処理はいったん止まり、実行役へ制御を返します。その間に別のFutureを進められる、ここが非同期処理の利点です。
Web APIの応答を待つ間に別の接続を処理すれば、待ち時間を活用できます。CPUを使う計算そのものが速くなるわけではなく、効果が出るのはネットワークやタイマーの待ち時間です。
複数の処理を同時に進めることと、複数のCPUコアで並列に動かすことは別です。非同期処理は待ち時間を重ね、並列処理は計算を複数の実行場所に分ける仕組み。区別すると挙動を読み違えにくくなります。
Tokioの役割
asyncとawaitはRustの言語機能です。構文を書いただけで入出力処理が動くわけではなく、Futureを実行して、入出力の準備が整ったことを受け取り、タスクを再開するランタイムが必要です。
Tokioはランタイムの代表的な選択肢で、非同期タスクに加えてTCPやタイマーも扱います。ネットワークサーバーやAPIクライアントを支えるライブラリとして広く使われています。
実務では、どこで待つか、処理がどのタスクに属するかを把握したいところです。重い同期処理を一つのタスクで続けると、実行スレッドを占有してほかの通信も遅らせることがあります。
中心に置く一冊
『Async Rust ―高いパフォーマンスと安全性を両立するRustによる非同期処理』はMaxwell FlittonとCaroline Mortonの著作で、中田秀基が日本語に訳しています。オライリー・ジャパンから2025年7月に刊行された284ページの本です。日本語でFutureからTokioまで学びたい人におすすめです。
FutureとPinの基礎に続いて、タスクやFuture間でデータを共有する方法を扱います。Rustの型や所有権と非同期処理の関係まで追えるので、asyncとawaitの文法を覚えた直後に読むと理解を深めやすいでしょう。
TokioのAsyncRead、AsyncWrite実装やランタイムのカスタマイズも扱います。さらに非同期キューの自作、Hyperとの統合、アクタモデル、非同期サーバーの構築まで手を動かして学べる構成です。
参考価格は税込4,180円で、公式の希望小売価格です。実売価格は時期や販売店によって変わります。Futureの基礎からTokioの実装まで一冊で学びたい人には、こちらをおすすめします。
内部を学ぶ英語書
Carl Fredrik Samson著『Asynchronous Programming in Rust』は2024年刊の英語書籍で、全306ページです。Rustで非同期処理を書く方法に加えて、Futureやランタイムの内部を例題で学べます。
Futureを自分で実装し、asyncとawaitの動きを学びます。続いてOSイベントキューやgreen thread、reactor-executorパターン、自作ランタイムへ進み、非同期処理が動く仕組みを追います。
Tokioなどのランタイムに関係するmioやイベントキューも扱います。英語の技術書に抵抗がなくFutureの実装まで追いたい人には、この本をおすすめします。
Webアプリを組む本
Maxwell Flitton著『Rust Web Programming』第2版は2023年刊、666ページの英語書籍です。Rustを使ったWeb開発全体を学び、データベースや認証、フロントエンドまで組み立てます。
TokioによるTCP処理とフレーミング、アクタ型の非同期システムに加え、Redisを使ったタスクキューも扱います。通信の入口からバックグラウンド処理まで、Webサービスの構成を実例で学べます。
Actix、Rocket、Hyperを使ったWeb開発も収録されています。Rust経験は必須ではありませんが、HTML・CSS・JavaScriptの基礎を知っていると読み進めやすくなります。Webアプリ全体をRustで作る工程を学びたい人におすすめです。
API実務へ進む本
『Rust Web Development』はBastian Gruber著、2022年12月刊の英語書籍で、全400ページです。Java、Node、GoなどでのWeb開発経験があり、Rustの基本を学んだ人におすすめです。
Tokioのほかwarpやreqwestを扱い、非同期環境でのborrow checkerやエラー処理も解説します。サービスの構成と一緒に読むことで、借用の問題がどこで生じるかも確かめられます。
質問と回答を扱うWebサービスを組みながら、APIとJSONの実装やテスト・トレース・ログ・デバッグ・デプロイまで学べます。APIを実用的な形に仕上げる工程を追いたい人には、この本をおすすめします。
詰まりやすい点
async fnを呼び出すとFutureが返りますが、その時点で処理が実行されるとは限りません。awaitするか、Tokioのタスクとして動かす必要があります。戻り値を受け取らずに捨てていないかも確認しましょう。
async fnの中で長い同期処理を続けると、awaitに到達するまで実行スレッドを占有します。画像変換や大きな圧縮などCPUを使う処理には、spawn_blockingが使えます。入出力待ちの処理とは別の実行場所を使う方法です。
通信ではタイムアウトや失敗も想定しておきます。Futureの完了に加えて、エラーを処理する場所や途中で中断されたときのリソース解放も考えておきたいところ。こうした扱いを整えると、実サービスの不具合を減らせます。
結論
Rustの非同期処理を初めて体系的に学ぶなら、日本語でFuture、Pin、Tokioの実践まで進める『Async Rust』を選んでください。FutureとTokioを基礎から実装へつなげて学べる点が、この本をすすめる理由です。
Futureやイベントキューを自作して内部構造を理解したい人には、英語の『Asynchronous Programming in Rust』がおすすめです。Tokioを使うWebアプリ全体を作るなら『Rust Web Programming』、API開発の実務フローを追うなら『Rust Web Development』を選ぶと学習内容が目的に合います。
短いコードを動かしながらawaitを置く位置やタスクの単位、入出力待ちが重なる様子を確かめると理解が定着します。ランタイムが処理を進める仕組みまで分かれば、RustとTokioで非同期にする処理を判断しやすくなるでしょう。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。





