ISBN 9784873118468

Go言語による並行処理

Go言語による並行処理
刊行
2018-10

概要

CSP の発想から Go の並行処理パターンを体系的に習得する

想定読者

goroutine や channel の文法は知っているものの、deadlock や goroutine leak で詰まり、実務で再利用できる並行処理の設計パターンを身につけたい中級以上の Go 開発者。ロックを多用するスレッド文化から「チャネルで所有権を渡す」発想へ移行したいエンジニアにも向いています。

こんな人には向いていない

  • Go の文法そのものをこれから学ぶ初学者。本書は変数・関数・型といった基礎には踏み込まず、並行処理に主題を絞っているため、入門書を一冊終えてから読むほうが効果的です。
  • 並行処理をまったく書かない、あるいは標準ライブラリのパターンをそのまま使えれば十分という人には、内部構造の解説部分が冗長に感じられる可能性があります。
  • 特定フレームワークの逆引きレシピだけを求める人。本書は哲学と原理から積み上げる構成のため、即効性のあるコピペ解だけを期待すると肩透かしになります。

読了後にできるようになること

  • 競合状態・アトミック性・メモリアクセス順序という並行処理の基礎概念を、Go の文脈で正確に区別できるようになる
  • CSP(Communicating Sequential Processes)モデルがなぜ goroutine と channel という API に結実したのか、設計意図から理解できる
  • Confinement・Pipelines・Fan-Out / Fan-In・Or-Done-Channel など、実務でそのまま再利用できる並行処理パターンの引き出しが増える
  • context.Context によるキャンセル伝播を正しく設計し、goroutine leak を防げるようになる
  • Heartbeats や Error Propagation を使って、本番システムで観測可能かつ復旧しやすい並行処理を組めるようになる
  • Go ランタイムのスケジューラがどう goroutine を捌いているか、内部構造の観点から性能特性を見積もれるようになる

ハイライト

  • シンプルな言語仕様と手厚い並行処理機能で、多くのプログラマの心を捉えるGo言語。そのGoの並行処理の設計哲学、言語の機能、実際のプログラミングテクニック、システム導入時のベストプラクティスとパターン、その内部構造までをまとめた1冊です。(本書が文法解説に留まらず、哲学から内部構造まで一気通貫で扱う点を最も端的に示す箇所)

編集メモ

Go の並行処理を主題に据えた日本語書籍として長く定番の位置にあり、文法を超えて設計哲学・実務パターン・内部構造までを一冊で扱う網羅性が、Topic「golang」の中級以上の到達点として参照され続けているため

読む前に押さえておきたいこと

  • Go の基本文法(変数・関数・型・interface・error ハンドリング)を一通り書ける
  • goroutine と channel の基本的な書き方を見たことがある(深い理解は本書で得られます)
  • プロセス/スレッドや排他制御といった並行処理の一般的な用語に抵抗がない

学習のコツ

  • 前半の基礎概念(競合状態・アトミック性・メモリアクセス順序)は読み飛ばさず手を動かして確認すると、後半のパターン解説が腑に落ちやすくなります。
  • パターン章は一度通読したあと、実際に詰まったとき(leak / deadlock)に逆引きとして読み返すと再利用価値が高いです。
  • context の章は独立して読んでも価値があるため、サーバー系コードを書く前にここだけ先に押さえておくのも有効です。
出版社による内容紹介

Go言語の並行処理の扱い方に関するわかりやすい手引書! シンプルな言語仕様と手厚い並行処理機能で、多くのプログラマの心を捉えるGo言語。そのGoの並行処理の設計哲学、言語の機能、また実際のプログラミングテクニックや並行処理の使い方、システムに導入する際のベストプラクティスとパターン、その内部構造までをまとめた1冊です。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。