並行プログラミング入門(ヘイコウプログラミングニュウモン)
Rust 、 C 、アセンブリによる実装からのアプローチ
プログラミング- 著者:
- 高野祐輝(タカノ ユウキ)
- 出版社:
- オライリー・ジャパン
- 出版日:
- 2021年08月24日頃
- ISBN:
- 9784873119595
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
並行プログラミングの基礎的なアルゴリズムと実装方法について解説!
複数のプログラムを並列に実行する「並行プログラミング」は、処理速度を飛躍的に向上させる昔からある手法ですが、タスク管理、プロセス管理、スレッド管理をはじめ、複雑なしくみについての幅広い知識とテクニックが必要となります。本書は Rust と C を使い、 CPU のアトミック命令、グリーンスレッド、アクターモデル、ソフトウェア・トランザクショナルメモリ、 async/await など、並行プログラミングに関する理論的な背景から実装までを網羅的に扱います。ソースコードは Github 上で公開、実際に動作するソースコードを参考にしながら読み進められます。
技書の森解説
マルチコアの計算資源を使い切るための同期処理と非同期処理を、 CPU の命令レベルまで下りて解説した書籍が『並行プログラミング入門』 (高野祐輝 著、オライリー・ジャパン発行、 2021 年 8 月刊) です。副題に「 Rust 、 C 、アセンブリによる実装からのアプローチ」とあるとおり、出来合いのライブラリの使い方を紹介する本ではなく、スピンロックやセマフォといった同期プリミティブそのものを Rust と C で実装しながら、アトミック命令の動作から 並行処理 の仕組みを積み上げていく構成です。サンプルコードは GitHub 上で公開されており、手元で動かしながら読み進められます。
並行処理のバグはなぜ厄介か
並行プログラミングが難しいのは、バグが確率的にしか再現しないからです。データ競合 やデッドロックはスレッドの実行順序という制御しにくい要因に依存するため、テストを何度通しても潜在し続け、負荷の高い本番環境でだけ顔を出すことがあります。この種の問題に場当たりでなく立ち向かうには、ミューテックスの内部でアトミック命令が何を保証しているのか、メモリバリアがなぜ必要なのかという原理の理解が要ります。本書はまさにその原理を、 Compare and Swap や Test and Set といった命令の動作から説き起こします。
全 8 章の構成: アトミック命令から並行計算モデルまで
全 8 章構成です。前半は並行性と並列性の概念整理から始まり、 x86-64 アセンブリ・ C 言語 (Pthreads) ・ Rust の基礎を押さえた上で、ミューテックス、セマフォ、条件変数、バリア同期、 Readers-Writer ロックといった同期処理を実装レベルで扱います。第 4 章はデッドロック・ライブロック・飢餓など並行処理特有のバグと、銀行家のアルゴリズムのような対処法です。後半では async/await と Future の仕組み、協調的グリーンスレッドとアクターモデルの実装、チケットロックや MCS ロックによる公平な排他制御、ソフトウェアトランザクショナルメモリ (TL2 アルゴリズム) の実装、 ABA 問題を含むロックフリーデータ構造を扱い、最終章は λ 計算などの並行計算モデルの理論にまで踏み込みます。
前提知識と「入門」という書名の注意点
タイトルは「入門」ですが、これは並行プログラミングという分野への入門であって、プログラミング自体の入門書ではありません。第 2 章にアセンブリ・ C ・ Rust の駆け足の解説があるものの、ポインタやスタックとヒープの区別といったシステムプログラミングの基礎感覚は前提です。逆に Rust の経験は必須ではなく、所有権・ライフタイム・借用の説明が第 2 章に用意されているため、 C や C++ の経験者が実務寄りの題材で Rust に触れる入口としても機能します。
類書との使い分けと向いている読者
類書との使い分けも明確です。同じオライリー・ジャパンの『詳解 Rust アトミック操作とロック』 (Mara Bos 著、中田秀基 訳、 2023 年) は Rust に絞ってアトミック操作とロックの内部を深掘りする、本書より狭く深い一冊です。『 Go 言語による並行処理』 (Katherine Cox-Buday 著、山口能迪 訳、 2018 年) はチャネルを軸にした Go 流の並行処理設計に特化しています。特定言語の流儀ではなく、言語をまたいで通用する原理と全体地図が欲しい場合は本書が起点になり、そこから言語別の 2 冊へ進む順路が組めます。
一方、 Web アプリケーションの非同期処理をフレームワークの流儀どおりに書ければ十分という人や、ガベージコレクションのある言語しか触れたことがなくポインタに不安がある人には、本書の低レイヤ志向は遠回りに感じられるはずです。しかし、マルチスレッド のバグを原理から切り分けられるようになりたい人、ロックフリーや STM のような一歩進んだ技法を自分の道具にしたい人、低レイヤの理解と Rust の習得を同時に進めたい人にとっては、断片的な記事の寄せ集めでは得られない体系を一冊で手に入れられる、長く手元に置く価値のある本です。
言及 Qiita 記事 (8 件)
エンジニアに読んで欲しい技術書90選
♡ 1965技術書, 書籍, 新人プログラマ応援2024年版機械学習・データ分析の必須10冊+ガチ90冊+Next5冊=105冊
♡ 868本, 機械学習, データ分析, データサイエンス2023年版データ分析の100冊
♡ 654本, 機械学習, データ分析, データサイエンス2025年版機械学習・データ分析の必須10冊+ガチ89冊+Next5冊=104冊
♡ 458本, 機械学習, データ分析, データサイエンス構造力学パズル「SigmaZero」を AI と作った 196 日・952 コミット—Unity教科書の勉強から Claude Code のエージェント組織運営まで
♡ 2Unity, AI, ClaudeCode, Gemini, 構造力学にわかにアセンブリに興味をもった自分が、ふとGeminiに学習プランを聞いてみたら思わぬ収穫があった話
♡ 2アセンブリ言語, GeminiTIER IV Computing System Workshop 2023 参加する前に 安全(102)
♡ 2自動運転, Autoware, 安全, RISC-V, Uppaalデータサイエンス(データ分析、モデル構築)で使える高速化処理に関する参考書
♡ 1Python, Ray, 高速化, 並列処理, DeepSpeed
言及 Zenn 記事 (1 件)
この本に興味がある方におすすめ
この本に関連
関連記事
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。
Python 本の選び方 - 独学の最初の 1 冊から実務品質まで
Python 本の選び方を「動機」から逆算して整理。プログラミング未経験の最初の 1 冊、業務自動化に直結する本、型ヒントとコード品質で実務水準へ進む本まで、2026 年 8 月時点の定番を独学ルートに沿って解説します。
アルゴリズム本ガイド - 競プロだけじゃない、実務に活きる選び方
アルゴリズム本の 3 タイプと、実務でアルゴリズムの知識が活きる場面、数学が苦手な人向けの学習ルートを紹介します。