Go

Goとは

Go(Golang)は、Google が開発した静的型付けのコンパイル型言語です。「言語仕様を小さく保ち、誰が書いても読みやすいコードになる」ことを重視して設計されています。

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go")
}

コンパイルすると単一の実行ファイルが生成され、ランタイムのインストールなしにそのまま配布・実行できます。この手軽さがサーバーやCLIツールの開発で好まれています。

Goの3つの強み

強み内容
ゴルーチン軽量スレッドによる並行処理。数万個を同時に動かせる
高速なビルドコンパイルが速く、単一バイナリで配布が簡単
シンプルな文法機能を絞った仕様で、チーム内のコードの書き方が揃いやすい

特に ゴルーチン(goroutine)とチャネル(ゴルーチン間でデータを受け渡す仕組み)による並行処理は Go の代名詞です。go キーワードを付けて関数を呼ぶだけで並行実行できます。

go fetchData() // この関数は別のゴルーチンで並行に実行される

[[並行処理と非同期]] を言語レベルで簡単に扱えるため、多数の通信を同時にさばくネットワークサーバーに向いています。

クラウドインフラを支える言語

Go はクラウドネイティブ時代の共通言語と呼ばれることがあります。実際、[[Docker]] も [[Kubernetes]] も Go で書かれています。ほかにも Terraform、Prometheus など、インフラ分野の主要ツールの多くが Go 製です。

  • 単一バイナリで配布できるため、コンテナイメージが小さくなる
  • 並行処理が得意で、多数のリクエストをさばくAPIサーバーに向く
  • [[マイクロサービス]] の実装言語としても人気が高い

初学者向けポイント

  • 公式ツールが充実しており、フォーマッタ(gofmt)・テスト・依存管理がすべて標準で付属します
  • エラー処理は例外ではなく戻り値でエラーを返す方式 — if err != nil のパターンにまず慣れましょう
  • 言語仕様が小さいため、公式チュートリアル「A Tour of Go」を一周すれば基本文法を押さえられます

関連技術とのつながり

  • [[並行処理と非同期]] — ゴルーチンとチャネルは並行処理を学ぶ良い題材
  • [[Docker]] — Go 製の代表的ツール。Go 製アプリはコンテナとの相性も良い
  • [[Kubernetes]] — こちらも Go 製。クラウドインフラ分野で Go が強い理由の象徴
  • [[マイクロサービス]] — 軽量・高速な Go はサービス分割された API 実装の有力候補
Q: Goの並行処理を担う仕組みはどれ?
- [ ] コールバック関数
- [x] ゴルーチンとチャネル
- [ ] ガベージコレクション
解説: Go は軽量スレッドであるゴルーチンと、その間でデータを受け渡すチャネルで並行処理を実現します。

Q: Goのコンパイル結果の特徴はどれ?
- [x] 単一の実行ファイルが生成され、そのまま配布できる
- [ ] JVM用のバイトコードが生成される
- [ ] ブラウザで実行するJavaScriptに変換される
解説: Go はコンパイルすると単一バイナリになり、ランタイムのインストールなしに実行できます。

Q: Goで書かれているツールの組み合わせはどれ?
- [ ] ExcelとPowerPoint
- [ ] PhotoshopとIllustrator
- [x] DockerとKubernetes
解説: Docker や Kubernetes をはじめ、クラウドインフラ分野の主要ツールの多くが Go 製です。