Go言語による並行処理

Book description

シンプルな言語仕様と手厚い並行処理機能で多くのプログラマの心を捉えるGo言語。いまではサーバーサイドでのプログラミングやコンテナツールの実装言語など、さまざまな分野で活用されています。本書は、Goの並行処理の設計哲学、言語の機能、また実際のプログラミングテクニックや並行処理の使い方、システムに導入する際のベストプラクティスとパターン、その内部構造までを簡潔にまとめた書籍です。普段からGoでプログラミングをしているプログラマや、並行処理について学習したいプログラマが、新たな知識を身につけるのに良い一冊となるでしょう。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.   
  5.  訳者まえがき
  6.  序文
  7.   本書の対象読者
  8.   本書の読み進め方
  9.   オンライン資料
  10.   表記上のルール
  11.   サンプルコードの使用について
  12.   意見と質問
  13.   謝辞
  14.  1章 並行処理入門
  15.   1.1 ムーアの法則、Webスケール、そして私たちのいる混沌
  16.   1.2 なぜ並行処理が難しいのか
  17.    1.2.1 競合状態
  18.    1.2.2 アトミック性
  19.    1.2.3 メモリアクセス同期
  20.    1.2.4 デッドロック、ライブロック、リソース枯渇
  21.    1.2.5 並行処理の安全性を見極める
  22.   1.3 複雑さを前にした簡潔さ
  23.  2章 並行性をどうモデル化するか:CSPとは何か
  24.   2.1 並行性と並列性の違い
  25.   2.2 CSPとは何か
  26.   2.3 これがどう役に立つのか
  27.   2.4 Goの並行処理における哲学
  28.  3章 Goにおける並行処理の構成要素
  29.   3.1 ゴルーチン(goroutine)
  30.   3.2 syncパッケージ
  31.    3.2.1 WaitGroup
  32.    3.2.2 MutexとRWMutex
  33.    3.2.3 Cond
  34.    3.2.4 Once
  35.    3.2.5 Pool
  36.   3.3 チャネル(channel)
  37.   3.4 select文
  38.   3.5 GOMAXPROCSレバー
  39.   3.6 まとめ
  40.  4章 Goでの並行処理パターン
  41.   4.1 拘束
  42.   4.2 for-selectループ
  43.   4.3 ゴルーチンリークを避ける
  44.   4.4 orチャネル
  45.   4.5 エラーハンドリング
  46.   4.6 パイプライン
  47.    4.6.1 パイプライン構築のためのベストプラクティス
  48.    4.6.2 便利なジェネレーターをいくつか
  49.   4.7 ファンアウト、ファンイン
  50.   4.8 or-doneチャネル
  51.   4.9 teeチャネル
  52.   4.10 bridgeチャネル
  53.   4.11 キュー
  54.   4.12 contextパッケージ
  55.   4.13 まとめ
  56.  5章 大規模開発での並行処理
  57.   5.1 エラー伝播
  58.   5.2 タイムアウトとキャンセル処理
  59.   5.3 ハートビート
  60.   5.4 複製されたリクエスト
  61.   5.5 流量制限
  62.   5.6 不健全なゴルーチンを直す
  63.   5.7 まとめ
  64.  6章 ゴルーチンとGoランタイム
  65.   6.1 ワークスティーリング
  66.    6.1.1 タスクと継続、どちらを盗むのか
  67.   6.2 すべての開発者にこの言葉を贈ります
  68.   6.3 結論
  69.  補遺A  
  70.   A.1 ゴルーチンのエラーの解剖
  71.   A.2 競合状態の検出
  72.   A.3 pprof
  73.   A.4 trace
  74.  補遺B go generate
  75.   B.1 空インターフェースの使用について
  76.   B.2 go generateとは何か
  77.   B.3 go generate の機能
  78.   B.4 例: genny を利用する
  79.   B.5 ジェネリクスについて
  80.  著者紹介
  81.  奥付

Product information

  • Title: Go言語による並行処理
  • Author(s): Katherine Cox-Buday, 山口 能迪
  • Release date: October 2018
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118468

You might also like

book

Go言語によるWebアプリケーション開発

by Mat Ryer, 鵜飼 文敏, 牧野 聡

Goプログラミングについて一歩踏み込んだプロユースの解説書。読者はシンプルなコードを書きながら、実運用アプリケーションの開発で使うスキルとテクニックを学ぶことができます。本書のサンプルプログラムはどれもシンプルですがとても実践的です。拡張性、並行処理、高可用性といったエンタープライズアプリケーションの開発で直面する現実的な問題に対するソリューションが含まれています。本書を読めば、実際の業務に必要な技能――Goによる開発手法および関連技術の使い方――をマスターし、ツールやプログラムの開発スキルを迅速かつ簡単に向上できます。日本語版では、監訳者の鵜飼文敏氏による巻末付録「Goらしいコードの書き方」を収録しました。

book

プログラミングRust

by Jim Blandy, Jason Orendorff, 中田 秀基

RustはMozilla財団の支援下で開発が進められており、Mozillaの次世代ブラウザエンジンの実装にも用いられているシステムプログラミング用言語です。C/C++並みのパフォーマンスと低レベルなメモリ操作機能、型システムを用いたメモリとスレッドの安全性を両立し、さらに安全な並列性も実現した、いま最も注目されている言語です。このRustをテーマにした本書は、Rust特有の所有権、移動、借用といった概念だけでなく、生産性と柔軟性を向上させるジェネリックコード、クロージャ、イテレータ、コレクションといった高度な機能についても詳しい説明を加えており、言語仕様から高度なプログラミング技術までを網羅した決定版です。

book

初めてのSQL 第3版

by Alan Beaulieu, 株式会社クイープ

SQL言語に初めて触れるプログラマを対象に、SQL言語の基本を解説します。データベースの歴史、概念などの基礎知識から、データベースの作成、クエリの基本、フィルタリング、トランザクションなどまで、実践に必要なポイントを過不足なくコンパクトにまとめ、理解を深められるよう練習問題を用意しています。改訂にあたり、「ビュー」「メタデータ」「解析関数」「大規模なデータベースの操作」「SQLとビッグデータ」の章が追加され、さらに充実しました。SQLを学び始めるのに最適の一冊です。

book

オブザーバビリティ・エンジニアリング

by Charity Majors, Liz Fong-Jones, George Miranda, 大谷 和紀, 山口 能迪

本書は、近年のクラウドベースのソフトウェアシステム開発における設計プラクティスなどにおいて触れられる概念「オブザーバビリティ(可観測性)」に関する書籍です。オブザーバビリティとは何か、どのように役立てるのかなど、登場の背景から実践方法、組織、企業への適用といった幅広い視点で解説します。今後、ソフトウェアシステムの開発においてオブザーバビリティが果たすであろう、より大きな役割についても触れています。さらにSlackのゲスト寄稿者により、テストとデプロイプロセスへのオブザーバビリティの適用と、パイプラインによるテレメトリー管理についてのケーススタディを紹介。本書はソフトウェアに関わる多くの人々にとって今後より一般化するオブザーバビリティを知る第一歩となるでしょう。