Book description
シンプルな言語仕様と手厚い並行処理機能で多くのプログラマの心を捉えるGo言語。いまではサーバーサイドでのプログラミングやコンテナツールの実装言語など、さまざまな分野で活用されています。本書は、Goの並行処理の設計哲学、言語の機能、また実際のプログラミングテクニックや並行処理の使い方、システムに導入する際のベストプラクティスとパターン、その内部構造までを簡潔にまとめた書籍です。普段からGoでプログラミングをしているプログラマや、並行処理について学習したいプログラマが、新たな知識を身につけるのに良い一冊となるでしょう。
Table of contents
- 大扉
- 原書大扉
- クレジット
- 訳者まえがき
- 序文
- 本書の対象読者
- 本書の読み進め方
- オンライン資料
- 表記上のルール
- サンプルコードの使用について
- 意見と質問
- 謝辞
- 1章 並行処理入門
- 1.1 ムーアの法則、Webスケール、そして私たちのいる混沌
- 1.2 なぜ並行処理が難しいのか
- 1.2.1 競合状態
- 1.2.2 アトミック性
- 1.2.3 メモリアクセス同期
- 1.2.4 デッドロック、ライブロック、リソース枯渇
- 1.2.5 並行処理の安全性を見極める
- 1.3 複雑さを前にした簡潔さ
- 2章 並行性をどうモデル化するか:CSPとは何か
- 2.1 並行性と並列性の違い
- 2.2 CSPとは何か
- 2.3 これがどう役に立つのか
- 2.4 Goの並行処理における哲学
- 3章 Goにおける並行処理の構成要素
- 3.1 ゴルーチン(goroutine)
- 3.2 syncパッケージ
- 3.2.1 WaitGroup
- 3.2.2 MutexとRWMutex
- 3.2.3 Cond
- 3.2.4 Once
- 3.2.5 Pool
- 3.3 チャネル(channel)
- 3.4 select文
- 3.5 GOMAXPROCSレバー
- 3.6 まとめ
- 4章 Goでの並行処理パターン
- 4.1 拘束
- 4.2 for-selectループ
- 4.3 ゴルーチンリークを避ける
- 4.4 orチャネル
- 4.5 エラーハンドリング
- 4.6 パイプライン
- 4.6.1 パイプライン構築のためのベストプラクティス
- 4.6.2 便利なジェネレーターをいくつか
- 4.7 ファンアウト、ファンイン
- 4.8 or-doneチャネル
- 4.9 teeチャネル
- 4.10 bridgeチャネル
- 4.11 キュー
- 4.12 contextパッケージ
- 4.13 まとめ
- 5章 大規模開発での並行処理
- 5.1 エラー伝播
- 5.2 タイムアウトとキャンセル処理
- 5.3 ハートビート
- 5.4 複製されたリクエスト
- 5.5 流量制限
- 5.6 不健全なゴルーチンを直す
- 5.7 まとめ
- 6章 ゴルーチンとGoランタイム
- 6.1 ワークスティーリング
- 6.1.1 タスクと継続、どちらを盗むのか
- 6.2 すべての開発者にこの言葉を贈ります
- 6.3 結論
- 補遺A
- A.1 ゴルーチンのエラーの解剖
- A.2 競合状態の検出
- A.3 pprof
- A.4 trace
- 補遺B go generate
- B.1 空インターフェースの使用について
- B.2 go generateとは何か
- B.3 go generate の機能
- B.4 例: genny を利用する
- B.5 ジェネリクスについて
- 著者紹介
- 奥付
Product information
- Title: Go言語による並行処理
- Author(s):
- Release date: October 2018
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784873118468
You might also like
book
Go言語によるWebアプリケーション開発
Goプログラミングについて一歩踏み込んだプロユースの解説書。読者はシンプルなコードを書きながら、実運用アプリケーションの開発で使うスキルとテクニックを学ぶことができます。本書のサンプルプログラムはどれもシンプルですがとても実践的です。拡張性、並行処理、高可用性といったエンタープライズアプリケーションの開発で直面する現実的な問題に対するソリューションが含まれています。本書を読めば、実際の業務に必要な技能――Goによる開発手法および関連技術の使い方――をマスターし、ツールやプログラムの開発スキルを迅速かつ簡単に向上できます。日本語版では、監訳者の鵜飼文敏氏による巻末付録「Goらしいコードの書き方」を収録しました。
book
プログラミングRust
RustはMozilla財団の支援下で開発が進められており、Mozillaの次世代ブラウザエンジンの実装にも用いられているシステムプログラミング用言語です。C/C++並みのパフォーマンスと低レベルなメモリ操作機能、型システムを用いたメモリとスレッドの安全性を両立し、さらに安全な並列性も実現した、いま最も注目されている言語です。このRustをテーマにした本書は、Rust特有の所有権、移動、借用といった概念だけでなく、生産性と柔軟性を向上させるジェネリックコード、クロージャ、イテレータ、コレクションといった高度な機能についても詳しい説明を加えており、言語仕様から高度なプログラミング技術までを網羅した決定版です。
book
初めてのSQL 第3版
SQL言語に初めて触れるプログラマを対象に、SQL言語の基本を解説します。データベースの歴史、概念などの基礎知識から、データベースの作成、クエリの基本、フィルタリング、トランザクションなどまで、実践に必要なポイントを過不足なくコンパクトにまとめ、理解を深められるよう練習問題を用意しています。改訂にあたり、「ビュー」「メタデータ」「解析関数」「大規模なデータベースの操作」「SQLとビッグデータ」の章が追加され、さらに充実しました。SQLを学び始めるのに最適の一冊です。
book
オブザーバビリティ・エンジニアリング
本書は、近年のクラウドベースのソフトウェアシステム開発における設計プラクティスなどにおいて触れられる概念「オブザーバビリティ(可観測性)」に関する書籍です。オブザーバビリティとは何か、どのように役立てるのかなど、登場の背景から実践方法、組織、企業への適用といった幅広い視点で解説します。今後、ソフトウェアシステムの開発においてオブザーバビリティが果たすであろう、より大きな役割についても触れています。さらにSlackのゲスト寄稿者により、テストとデプロイプロセスへのオブザーバビリティの適用と、パイプラインによるテレメトリー管理についてのケーススタディを紹介。本書はソフトウェアに関わる多くの人々にとって今後より一般化するオブザーバビリティを知る第一歩となるでしょう。