『Go言語入門:シンプルに作って速く動かすプログラミング』+『PHPからRustへ』
- Digital0 JPY


第1章:なぜ今Goなのか? 〜環境構築とファーストステップ〜 1.1 Go言語の哲学 「シンプルさ」「可読性」「並行処理」を徹底追求する理由 他言語(PHP/Python/Javaなど)との思想の違い 1.2 開発環境のセットアップ Goのインストール(go env の確認) VS Codeなどの開発環境・拡張機能の導入 1.3 Hello, World! とプログラムの基本構造 package main と func main() の役割 go run(実行)と go build(単一バイナリ生成)の違い 第2章:Goの基本文法と型システム 2.1 変数・定数・基本データ型 明示的型宣言と短縮構文(:=) 数値型、文字列型(UTF-8とruneの扱い)、真偽値 2.2 制御構造(Goのシンプルな繰り返しと分岐) if 文と初期化ステートメント for ループ(Goには while がない理由と応用パターン) switch 文の強力な使い方(fallthrough や型スイッチ) 2.3 コレクション構造 配列(Array)とスライス(Slice)の違い(スライスの内部構造・append・make) マップ(Map)による連想配列の扱い 第3章:関数・エラー処理・defer 3.1 関数の基本 多値返却(複数の戻り値)の強力さ 無名関数とクロージャ 3.2 Go独特のエラー処理機構 なぜ try-catch がないのか? if err != nil のパターンと自作エラー(fmt.Errorf, errors.Is/As) 3.3 リソースを確実に解放する defer ファイルオープン・クローズ処理の標準パターン 第4章:構造体とオブジェクト指向の新しいかたち 4.1 構造体(struct)の基礎 データのグループ化とフィールドの定義 4.2 ポインタの基礎知識 値渡し(Value)と参照渡し(Pointer)の違い ポインタレシーバと値レシーバの使い分け 4.3 メソッドとインターフェース(Interface) クラスの継承を持たない理由 ダックタイピングによる暗黙的インターフェースの実現 io.Reader / io.Writer に見る設計美 第5章:Goの真骨頂 〜並行処理(Goroutine と Channel)〜 5.1 並行処理(Concurrency)と並列処理(Parallelism) 5.2 ゴルーチン(Goroutine)の起動 go キーワードによる超軽量スレッド 5.3 チャネル(Channel)による安全なデータ通信 チャネルの送受信、バッファ付きチャネル select ステートメントによる複数チャネルの多重化 5.4 同期制御 sync.WaitGroup による処理終了の待機 データ競合(Data Race)の防止 第6章:実践実践:Goモジュールとパッケージ管理 6.1 Go Modules(go.mod)の使い方 プロジェクトの初期化(go mod init) 外部パッケージの追加・管理(go get, go mod tidy) 6.2 適切なディレクトリ構造とパッケージ分割 可視性ルール(大文字=公開 / 小文字=非公開) ドメイン駆動設計やレイヤードアーキテクチャへの適応 第7章:実践ハンズオン1 〜高速なCLI(コマンドライン)ツールを作ろう〜 7.1 CLIツールの設計 コマンドライン引数やフラグの解析(flag パッケージ) 7.2 ファイルI/Oと文字列加工 ログファイルの解析やテキスト変換スクリプトの作成 7.3 実行ファイルのビルドと配布 各OS(Windows, macOS, Linux)向けクロスコンパイルのやり方 第8章:実践ハンズオン2 〜Web APIサーバーの構築〜 8.1 標準ライブラリ net/http によるWebサーバー ルーティングとハンドラー関数の実装 8.2 JSONのパースとエンコード struct tag によるJSON変換マッピング 8.3 実践的なREST API構築 CRUD機能を持つシンプルなAPI作成 ミドルウェア(認証・ログ出力など)の実装 第9章:テスト・プロファイリング・運用 9.1 標準テストフレームワーク(testing) 単位テストの書き方(go test) テーブル駆動テスト(Table Driven Tests)のベストプラクティス 9.2 パフォーマンス測定 ベンチマークテストとプロファイリング(pprof) 9.3 Docker化とクラウドデプロイ マルチステージビルドを活用した超軽量Dockerイメージの生成 章末付録(チートシート&FAQ) 他言語ユーザーのための「文法対比表」(PHP / Python → Go) チェックドリル PHPからRustへ(おまけ)

