Why It Fits
選ぶ理由
- 文法が小さく学習が容易
- goroutine で並行処理が簡単
- 単一バイナリ・高速起動・高速ビルド
Language Profile
Google(Robert Griesemer・Rob Pike・Ken Thompson) / 2009年登場
シンプルさと並行処理を重視した Google 製言語。学習しやすく高速起動で、クラウドインフラやマイクロサービスで人気。
Specifications
Introducing
Decision Guide
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
Why It Fits
Trade-offs
Best Fit
Deep Dive
Go(Golang とも呼ばれる)は 2009 年に Google が公開した言語です。大規模なソフトウェアを多人数で開発・保守する現場の課題から生まれ、「とにかくシンプルに保つ」ことを設計思想の中心に据えています。機能を盛り込むより、誰が読んでも同じように理解できることを優先します。
Go の核心は「シンプルさ」と「並行処理」です。文法は意図的に小さく抑えられ、覚えることが少ない一方、goroutine という軽量な仕組みで並行処理を手軽に書けます。コンパイルは速く、依存をまとめた単一バイナリが出力されるので配布も簡単。起動も高速です。
クラウド基盤との相性が抜群で、Docker や Kubernetes をはじめ多くのインフラツールが Go で書かれています。マイクロサービスや CLI ツールの定番でもあります。
エラーは戻り値として返し、毎回その場で確認するのが Go の流儀です。安全で読みやすい一方、同じような確認コードが繰り返され、冗長に感じられがちです。
// エラーは値として返り、その都度チェックする
f, err := os.Open("data.txt")
if err != nil {
// 失敗をここで処理する
return err
}
defer f.Close()
if err != nil の繰り返しが多くなる。サーバーやネットワークサービス、コンテナ周辺のツール、社内 CLI など「高速に動き、配布が簡単で、長く保守する」用途に向きます。チームで書き方を揃えやすいのも採用理由になります。
Language Decision
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
クラウドインフラ(Docker / Kubernetes)
型付け: 静的・強い型付け / 実行方式: コンパイル(ネイティブ・単一バイナリ) / パラダイム: 手続き型 + 並行(goroutine)
goroutine で並行処理が簡単
表現力は控えめ(ジェネリクスは後発)
First Step
package main
import "fmt"
func main() { fmt.Println("Hello, World!") }公式ドキュメント