テスト駆動開発から始める Go 入門¶
概要¶
FizzBuzz 問題を題材に、テスト駆動開発(TDD)の基本サイクルから、開発環境の整備、オブジェクト指向設計、関数型プログラミングの活用まで、Go の特徴を活かしながら段階的に学びます。
対象読者¶
- Go の基本文法を理解しているプログラミング学習者
- TDD を体験してみたい開発者
- オブジェクト指向設計や関数型プログラミングに興味がある方
前提条件¶
- Go 1.25 以降がインストールされていること
- golangci-lint が利用可能であること(Nix 環境推奨:
nix develop .#go)
Go の特徴¶
| 特徴 | 説明 |
|---|---|
| 静的型付け | コンパイル時に型を検査、安全で高速なバイナリを生成 |
| シンプルな言語設計 | 25 個のキーワード、少ない構文で高い生産性 |
| 暗黙的インターフェース | implements 宣言不要、メソッドセットで自動的に満たす |
| 構造体埋め込み | 継承の代わりにコンポジションで型を拡張 |
| ファーストクラス関数 | 関数を値として扱い、クロージャをサポート |
| ジェネリクス(Go 1.18+) | 型パラメータによる汎用的なコード |
開発ツール¶
| ツール | 用途 |
|---|---|
| testing | 標準テスティングパッケージ |
| Go Modules | パッケージ管理 |
| golangci-lint | リンター(複数ルール統合) |
| gofmt | 標準フォーマッター |
| Makefile | タスクランナー |
目次¶
第 1 部: TDD の基本サイクル¶
第 2 部: 開発環境と自動化¶
第 3 部: オブジェクト指向設計¶
第 4 部: 関数型プログラミングへの展開¶
実装コード¶
本記事のすべてのコード例は apps/go/ に実装されています。
# 開発環境に入る
nix develop .#go
# テスト実行
cd apps/go
make test
参考文献¶
- Kent Beck 著『テスト駆動開発』
- Martin Fowler 著『リファクタリング: 既存のコードを安全に改善する』
- Robert C. Martin 著『Clean Code: アジャイルソフトウェア達人の技』
- Alan A. A. Donovan, Brian W. Kernighan 著『プログラミング言語 Go』