インプレス[コンピュータ・IT]ムック 現場のGoプログラミング 実プロジェクトで役立つイディオムとテスト
インプレス / 2026年09月09日 / 全463ページ
本書では、過度な抽象化を避け、保守とテストを容易にする慣用的(イディオム的)なGoコードの書き方を実践的に学ぶことができます。CLIツールやHTTPクライアント・サーバーの構築など、現実的なプロジェクトをサンプルとして取り上げます。依存性注入によるテスト容易性の向上、並行パイプラインを用いた同期APIの設計、HTTP処理の効率化から、ミドルウェアなどのコンポジションパターン、多態的なストレージ実装へ、段階的に高度な実践へと進むことで、現場で役立つ「Goらしい」思考法と確かな設計力が身につく一冊となっています。
目次
- サンプルコード・正誤表・免責など
- 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つの道:複雑さと単純さ
- 献辞
- 推薦の言葉
- 目次
- まえがき
- 謝辞
- 本書について
- 著者紹介
- 第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
- 奥付
※このデジタル雑誌には目次に記載されているコンテンツが含まれています。それ以外のコンテンツは、本誌のコンテンツであっても含まれていません のでご注意ください。
※電子版では、紙の雑誌と内容が一部異なる場合や、掲載されないページがある場合があります。


![インプレス[コンピュータ・IT]ムック AIを部下にする技術 90%の作業を任せて10倍の成果を上げる](http://image.magastore.jp/jp/magastore/loading_192.jpg)







