Go は “シンプルさ” と “実行速度” を兼ね備え、クラウドネイティブ時代を牽引するモダン言語です。Docker や Kubernetes をはじめ、世界中の大規模プロダクトで採用が進む背景には、学びやすさと高速な並行処理がもたらす圧倒的な開発体験があります。
本記事では、未経験のエンジニアでも 30 分で Go の魅力を体験 できるよう、開発環境の構築から Web サーバー実装、並行処理の基礎までをステップバイステップで解説します。
読了後に得られること:
- Go の設計思想と市場価値を理解できる
- Hello World から Web サーバー起動まで自分の手で動かせる
- Go が採用されるリアルなプロダクト事例をイメージできる
さあ、次のトレンドをつかむために Go の世界へ踏み出しましょう!
はじめに
Go(正式名称:Golang)は Google によって 2009 年に公開されたプログラミング言語です。シンプルな文法と高速なビルド、そして並行処理を言語レベルでサポートすることから、クラウドネイティブなマイクロサービスや DevOps ツール、データ処理基盤など幅広い領域で採用が進んでいます。
本記事では 「Go の第一歩」 として、Go 言語の特徴から開発環境構築、サンプルコードの実行までを丁寧に解説します。
この記事を読めば、Go を触ったことがないエンジニアでも 30 分以内に最初のプログラムを動かし、“並行処理のワクワク感” を体験できます。
Go 言語とは
設計思想
- シンプルさ:学習コストを下げ、チーム開発で生産性を高める
- 高速コンパイル:大規模コードベースでも数秒でビルド完了
- 組み込みの並行性:
goroutine
とchannel
による軽量スレッドモデル - 標準ライブラリの充実:Web サーバーや暗号化、テストまで一通り揃う
主な特徴
特徴 | 他言語との比較 | 開発者メリット |
---|---|---|
静的型付け + 型推論 | C/C++ より型推論が豊富 | 型安全と可読性の両立 |
ビルトイン並行処理 | Java のスレッドより軽量 | 数万ゴルーチンを気軽に起動 |
単一バイナリ生成 | Python/Ruby は実行環境が必要 | 配布が簡単・Docker サイズも小さい |
なぜ Go を選ぶのか
- クラウド時代との相性:Kubernetes, Docker など OSS の多くが Go 製。
- 開発スピード:習得容易な文法と高速ビルドでフィードバックループが短い。
- エコシステムの成熟:
go install
で簡単にツール導入できるモジュール管理。 - モダンな標準ツールチェーン:
go fmt
によるコード整形、go test
によるテストがセット。
Go 言語が活躍するプロダクト・サービスの具体例
クラウドインフラ
- Docker:コンテナランタイムと CLI は Go 製。
- Kubernetes:クラスタ管理システムの中核コンポーネントはすべて Go で実装。
開発/運用ツール
- Terraform:インフラをコードで管理する IaC ツール。
- Hugo:超高速な静的サイトジェネレータ。
- dlv (Delve):Go 専用デバッガ。
Web サービス・SaaS
- Uber:マッチングエンジンや配車ロジックを Go で高速化。
- Mercari:マイクロサービス群の主要言語として採用。
- Slack:チャットのメッセージキュー基盤の一部に Go を利用。
データベース/データ基盤
- InfluxDB:時系列データベースが Go 製で高性能。
- CockroachDB:分散 SQL データベースのノード実装。
- Prometheus:監視/メトリクス収集で世界標準。
エッジ & IoT
- TinyGo:マイコンや WebAssembly 向けに Go をクロスコンパイル。
これらの事例からわかるように、Go はクラウドからエッジまで幅広い領域で実績があります。シンプルな文法と高い実行性能が “開発者体験 × 本番運用” の双方を支えている点が採用の決め手になっています。
はじめての Go プログラム
Hello, World!
package main
import "fmt"
func main() {
fmt.Println("Hello, Go世界!")
}
実行手順
hello.go
として保存。- ターミナルで
go run hello.go
。 - 「Hello, Go世界!」 と表示されれば成功。
ポイント:
go run
はビルドと実行を一発で行う便利コマンド。実際のデプロイ時はgo build
でバイナリを生成します。
Go の基本構文をおさえる
変数と型
var message string = "こんにちは"
count := 10 // 型推論
:=
は関数内でのみ使える短縮宣言。
関数
func add(a, b int) int {
return a + b
}
- 複数戻り値もサポート:
func div(a, b int) (int, error)
パッケージ管理
- 標準ライブラリ:
import "net/http"
- 外部ライブラリ:
go get github.com/gin-gonic/gin
実践:最小構成の Web サーバーを作る
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, Web with Go!")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("Start server :8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
- 保存後、
go run server.go
で起動。 - ブラウザで
http://localhost:8080/
にアクセスしてメッセージを確認。
学びの扉:
http
パッケージだけで簡単にサーバーが立つのが Go の強み。ルーティングを強化したい場合は Gin や Echo などのフレームワークがおすすめです。
まとめ
- Go は シンプル×高速×並行性 の三拍子がそろった現代的言語。
- インストール後すぐに書ける&配布しやすい単一バイナリで、初学者でも環境構築のハードルが低い。
- 次回は テスト文化 と モジュール管理 を深掘りし、実践的なプロジェクト構成を紹介します。
学習リソース
- 公式 Tour:https://go.dev/tour/
- Effective Go:https://go.dev/doc/effective_go
- 書籍『プログラミング言語 Go 完全入門』
小さな一歩 が大きな開発体験へ。ぜひ手元でコードを動かし、Go ならではの開発速度を体感してみてください!