エンジニア選書シリーズGo言語プログラミングエッセンス
2023年3月9日紙版発売
2023年3月9日電子版発売
mattn 著
B5変形判/328ページ
定価3,520円(本体3,200円+税10%)
ISBN 978-4-297-13419-8
書籍の概要
この本の概要
Go言語ユーザーとして,「もう一段レベルアップしたい」「開発に使いたい」と思っている方に向けた,Go言語の解説本です。関数やパッケージの使い方,並行処理,テストといった基本的なトピックにおいて,「こう書くと綺麗になる」「こう書くとパフォーマンスが上がる」といったエッセンスを紹介します。後半ではCLIアプリ/Webアプリの開発手順や,現場で使われている便利なパッケージなど,著者が業務やOSSの開発で培った技術をふんだんに紹介します。
こんな方におすすめ
- Go言語の入門を終え,さらに深く学びたい人
この書籍に関連する記事があります!
- プログラマーに愛されるGo言語
- Go言語ユーザーとして、「もう一段レベルアップしたい」「開発に使いたい」と思っている方に向けた、Go言語の解説本です。
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
第1章 プログラミング言語Goとは
- 1.1 Goの簡単な歴史
- 1.2 Goの立ち位置
- 1.3 Goが利用される場面
- 標準でUTF-8をサポート
- マルチプラットフォーム
- 並行処理の扱いやすさ
- ストリーム指向
- シングルバイナリ
- 1.4 教育用途としてのGo
- 1.5 なぜGoが使われるのか
- コンパイルの速さ
- レビューのしやすさ
- 周辺ツールの充実
- パッケージ公開の簡単さ
- libc非依存
- 共同開発でのスキル差
- 1.6 まとめ
第2章 開発環境の準備
- 2.1 Goコンパイラのインストール
- [COLUMN]GOROOT? GOPATH?
- 2.2 開発環境のセットアップ
- Visual Studio Code
- Vim
- Goland
- 2.3 まとめ
第3章 基本的な文法
- 3.1 プロジェクトフォルダ
- 3.2 Go言語の特徴
- 3.3 静的な型
- 3.4 基本的な構文
- 変数宣言
- const(定数宣言)
- iota(列挙)
- 命名規則
- 関数呼び出し
- 条件分岐
- ループ
- 配列とスライス
- 文字列
- map
- type(型宣言)
- struct(構造体)
- メソッド
- ポインタ
- interface{}またはany
- コンストラクタ
- インターフェース
- defer
- 3.5 goroutine(ゴルーチン)
- channel(チャネル)
- 制御構文(select)
- 3.6 Goモジュールとは
- go.modの配置
- replace
- go install
- 3.7 プロジェクトレイアウト
- 3.8 lint文化
- go vet
- revive
- golangci-lint
- 3.9 go fmt
- 3.10 まとめ
- [COLUMN]おまじない
第4章 基本テクニックとベストプラクティス
- 4.1 ビルトイン関数
- printとprintln
- panicとrecover
- [COLUMN]Explicit is better than implicit, Simple is better than complex
- init関数
- 4.2 パッケージ
- fmtパッケージ
- logパッケージ
- encoding/jsonパッケージ
- netパッケージ
- timeパッケージ
- pathパッケージとpath/filepathパッケージ
- osパッケージ
- ioパッケージ
- contextパッケージ
- 4.3 build constraints
- ファイル名による指定
- +build(またはgo:build)コメントによる指定
- [COLUMN]マルチプラットフォーム向けアプリケーションの開発テクニック
- 4.4 cgo
- pkg-configを使って複雑なコンパイルオプションに対処
- 4.5 go:embed
- 4.6 Functional Options Pattern
- 4.7 Builder Pattern
- 4.8 internalパッケージ
- 4.9 Embedded struct
- 4.10 go run
- 4.11 まとめ
第5章 Webアプリケーションの開発に必要な要素
- 5.1 net/http
- 基本の使い方
- ルーティング
- [COLUMN]Method Value
- ファイルのサーブ
- 5.2 html/template
- struct
- range/end
- if/else/end
- with/else/end
- template.HTML
- FuncMap
- template.Parse
- define/template
- 5.3 net/smtp
- 5.4 まとめ
第6章 速いプログラムのためのテクニック
- 6.1 並行と並列
- 6.2 goroutine
- 6.3 channel
- 6.4 非同期パターン
- ジェネレータ
- 合流処理
- 先着処理
- タイムアウト処理
- 停止処理
- スロットリング(throttling)
- 6.5 まとめ
第7章 テストにおけるテクニック
- 7.1 テストの考え方
- 7.2 Goのテストの基本
- Table Driven Tests
- t.Skip/t.Skipf
- setup/teardown
- t.Short
- t.Parallel
- テストデータ
- カバレッジ
- 7.3 便利なテクニック
- テンポラリディレクトリ
- 環境変数
- 7.4 Fuzzingテスト
- 7.5 まとめ
第8章 ベンチマークにおけるテクニック
- 8.1 「推測するな、計測せよ」
- 8.2 ベンチマークの基本
- 8.3 ベンチマークの比較
- 改善の前と後の比較
- 異なる実装の比較
- 8.4 プロファイリング
- 8.5 まとめ
第9章 GoによるCLIアプリケーション開発
- 9.1 システムのコンセプト
- 9.2 データベース登録プログラム
- [COLUMN]プログラムを作る手順
- ZIPファイルのURL一覧を得る
- ZIPファイルを展開する
- データベースに登録する
- 9.3 データベース照会プログラム
- 9.4 テストの実装
- 9.5 CLI開発に役立つライブラリ
- 9.6 フラグライブラリ
- flagパッケージ
- urfave/cli
- alecthomas/kingpin
- spf13/cobra
- 9.7 端末制御ライブラリ
- olekukonko/tablewriter
- mattn/go-runewidth
- jroimartin/gocui
- 9.8 まとめ
第10章 GoによるWebアプリケーション開発
- 10.1 システムのコンセプト
- 10.2 TODOアプリケーション
- Webサーバ
- リクエストハンドラ
- テンプレート処理
- 静的ファイルのサーブ
- 10.3 リマインダメール送信
- 10.4 Goにおけるフレームワーク
- Gin
- Echo
- Micro
- Beego
- フレームワークの選定について
- 10.5 まとめ
第11章 GitHubでの開発における勘所
- 11.1 ライブラリの仕様
- 11.2 プロジェクトの作成
- 11.3 パッケージ名
- 11.4 実装
- 11.5 バージョニング
- [COLUMN]GitHubのワンポイントTips
- 11.6 テスト
- 11.7 ドキュメント
- go docの使い方
- godocの使い方
- https://pkg.go.dev/で閲覧する
- 11.8 ディレクトリ構造
- 11.9 自動テスト
- 11.10 自動リリース
- 11.11 まとめ
第12章 データベースの扱い方
- 12.1 database/sql
- サードパーティドライバ
- Query/QueryRow
- Exec
- Prepare
- Begin/Commit/Rollback
- 12.2 ent/ent
- OpenAPI連携
- entgen
- 12.3 ORMベンチマーク
- 12.4 まとめ
第13章 Goとクラウドサービス
- 13.1 Goがなぜ使われるのか
- 13.2 Google Cloud
- 13.3 AWS Lambda
- 13.4 Oracle Cloud
- [COLUMN]バイナリサイズを小さくする
- 13.5 まとめ
この本に関連する書籍
-
エキスパートたちのGo言語 一流のコードから応用力を学ぶ
本書は,中級以上のGoプログラマーがツール開発・プロダクト開発で必要とされるプログラミングテクニックおよび周辺知識を学ぶための実践集です。 Goはコマンドライン...
-
たった1日で基本が身に付く! Go言語 超入門
本書は,Go言語によるプログラミングを学ぶための入門書です。開発環境のインストールから始まり,Go言語の基本を解説しており,最初の1冊目として最適です。Go言語によ...