現場のGoプログラミング 実プロジェクトで役立つイディオムとテスト
インプレス
- Inanc Gumus(著者)、 柴田芳樹(著者)
実践で活きるGoの設計思想とテストの極意
本書では、過度な抽象化を避け、保守とテストを容易にする慣用的(イディオム的)なGoコードの書き方を実践的に学ぶことができます。CLIツールやHTTPクライアント・サーバーの構築など、現実的なプロジェクトをサンプルとして取り上げます。依存性注入によるテスト容易性の向上、並行パイプラインを用いた同期APIの設計、HTTP処理の効率化から、ミドルウェアなどのコンポジションパターン、多態的なストレージ実装へ、段階的に高度な実践へと進むことで、現場で役立つ「Goらしい」思考法と確かな設計力が身につく一冊となっています。
発売日:2026-09-09
ページ数:464ページ
目次
表紙
サンプルコード・正誤表・免責など
2つの道:複雑さと単純さ
献辞
推薦の言葉
目次
まえがき
謝辞
本書について
著者紹介
第1章 Goの特徴と本書の目標/1.1 本書を読むべき理由
1.2 なぜGoなのか
1.3 Hello,gophers!
1.4 並行処理
1.5 型システム
1.6 標準ライブラリ
1.7 ツール群
1.8 次章に向けて
1.9 ソースコードとGoモジュール
第2章 イディオムとテスト
2.1 基礎
2.2 イディオム
2.3 テスト
2.4 テーブル駆動テスト
2.5 サブテスト
2.6 Exampleテスト
2.7 他のテスト用ツール
第3章 テストカバレッジと最適化/3.1 テストカバレッジ
3.2 ベンチマークと最適化
3.3 コンパイラ最適化
3.4 並列テスト
3.5 練習問題
第4章 コマンドラインインタフェース
4.1 基盤作り
4.2 フラグの解析
4.3 flagパッケージ
4.4 値パーサー
4.5 位置引数
4.6 検証
4.7 練習問題
第5章 依存性注入
5.1 テスト容易性に対する課題
5.2 テストしやすいプログラム
5.3 分離
5.4 CLIのテスト
5.5 単体テスト
第6章 並行処理のための同期API
6.1 概要
6.2 基盤
6.3 イテレータ
6.4 Options
6.5 統合
6.6 並行パイプラインパターン
6.7 プロデューサステージ
6.8 スロットラステージ
6.9 ディスパッチャステージ
6.10 練習問題
第7章 応答性と効率の高いプログラム/7.1 並行パイプラインの再訪
7.2 キャンセルの伝播
7.3 HTTPと効率的なI/O操作
7.4 最適化
7.5 テスト
7.6 HTTPテスト
7.7 練習問題
第8章 パッケージとサービスの構成
8.1 パッケージの構成
8.2 中核のロジック
8.3 HTTP
8.4 HTTPハンドラ
8.5 ルーティング
8.6 タイムアウト
8.7 テスト
8.8 シンプルさ
8.9 練習問題
第9章 コンポジションパターン
9.1 ミドルウェアパターン
9.2 レスポンスのログ記録
9.3 インターセプタパターン
9.4 オプショナル・インタフェース・パターン
9.5 コンテキスト値の伝播パターン
9.6 ハンドラ連鎖パターン
9.7 エンコードとデコード
9.8 包み込みと取り出し
9.9 振り返り
9.10 練習問題
第10章 ポリモーフィックなストレージ
10.1 SQLデータベースとのやり取り
10.2 データベースを基盤とするサービス
10.3 driver.Valuerインタフェースとsql.Scannerインタフェース
10.4 暗黙的なインタフェース
10.5 練習問題
付録A モジュールとパッケージ/A.1 パッケージ
A.1.1 例
A.2 mainパッケージ/A.3 モジュール
A.4 ビルドと実行/A.5 練習問題
付録B 変数とポインタ/B.1 変数
B.2 ポインタ
B.2.1 ポインタとは何か/B.2.2 nilポインタと型安全性
B.2.3 アドレス演算子
B.2.4 値渡しの仕組み
B.2.5 スタックとヒープメモリ/B.3 練習問題
付録C 配列、スライス、マップ/C.1 配列
C.1.1 配列操作
C.1.2 配列の受け渡し
C.1.3 ポインタの受け渡し
C.1.4 練習問題/C.2 スライス/C.2.1 使い方
C.2.2 基底配列
C.2.3 スライスの受け渡し
C.2.4 スライス式と容量
C.2.5 要素の追加
C.2.6 make()関数でスライスを作成
C.2.7 文字列とバイトスライス/C.2.8 エイリアスの影響
C.2.9 スライスのコピー
C.2.10 練習問題/C.3 マップ
C.3.1 練習問題
付録D オブジェクト指向プログラミング/D.1 構造体
D.1.1 新たな型の宣言
D.1.2 新たな値の作成/D.1.3 無名型
D.1.4 名前付き型
D.2 メソッドとレシーバ
D.2.1 レシーバの型
D.2.2 値レシーバ
D.2.3 ポインタレシーバ
D.2.4 レシーバ型混在の回避
D.2.5 レシーバ型の選択/D.2.6 練習問題
D.3 暗黙的なインタフェース/D.3.1 具象型からの開始
D.3.2 インタフェースの発見
D.3.3 つなぎ合わせ
D.3.4 インタフェースの活用
D.3.5 インタフェース値とメソッドの集まり
D.3.6 練習問題/D.4 ジェネリクス
付録E 並行処理プログラミング/E.1 ゴルーチン
E.1.1 逐次実行
E.1.2 並行実行
E.2 WaitGroupの活用
E.2.1 syncx.SafeGroupの活用
E.2.2 練習問題/E.3 バッファなしチャネル
E.3.1 使い方/E.3.2 同期
E.3.3 パターン:送信と受信
E.4 チャネルのクローズ
E.4.1 パターン:for-range
E.4.2 パターン:クローズ通知による同期
E.5 select文の活用/E.5.1 複数チャネルの待機
E.5.2 パターン:待機しない操作
E.6 バッファありチャネル
E.6.1 パターン:タイムアウト
E.6.2 方向付きチャネル
E.6.3 パターン:並行実行数の制限
E.7 練習問題
付録F 自己参照オプション/F.1 構造体オプション/F.1.1 ゼロ値のあいまいさ
F.1.2 ゼロ値オプション/F.2 オプション関数/F.2.1 SendNWith()関数
F.2.2 関数としてのオプション
F.2.3 オプションの適用
F.2.4 まとめ
付録G Goプログラムのクロスコンパイル
訳者あとがき
索引
訳者紹介・レビュアー・STAFF LIST
奥付
絶賛!発売中!
-
- 現場で本当に効く 実践サイバーセキュリティ対策
- 予約 3190円
-
- VLCセキュリティラボ(著者)、 中本 有哉(著者)
- その他
-
- 予約受付中
-
- Just Use Postgres!
- 予約 4510円
-
- Denis Magda(著者)、 曽根 壮大(翻訳)、 加藤 慎也(翻訳)、 池田 凛太郎(翻訳)、 こば@tzkb(監修)
- データベース
-
- 予約受付中
-
- 協働ソフトウェア設計
- 予約 4796円
-
- Evelyn van Kelle(著者)、 Gien Verschatse(著者)、 Kenny Baas-Schwegler(著者)、 増田 亨(監修)、 長尾 高弘(翻訳)
- その他
-
- 予約受付中
- 運営会社
- FAQ
- お問い合わせ
- 利用規約
- オンライン販売について
- 特定商取引法に関する記載
- ゲームソフトの利用に関するガイドライン|
- 個人情報について
- PURCHASE GUIDE (ENGLISH)|
Copyright © Mynavi Publishing Corporation




