ソフトウェア
中級

Go / Golang (2009年)(ゴーラング)

Goは2009年Google Robert Griesemer・Rob Pike・Ken Thompson が開発したシステムプログラミング言語で並行処理 (Goroutine・Channel) ・静的型付け・GC・シンプル構文 (キーワード25個) 採用しDocker (2013年) ・Kubernetes (2014年) ・Cloudflare・YouTube/Uber等のクラウドネイティブシステムの中核となった現代主要言語。

0 回閲覧
0 いいね
2026/5/13 更新
関連タグ
go
golang
2009
robert-griesemer
rob-pike
ken-thompson
google
goroutine
channel
csp
docker
kubernetes
cloud-native
programming-history

Go / Golang (2009年)

概要

Goは2009年11月10日Google Robert Griesemer・Rob Pike・Ken Thompson (Unix/C/UTF-8 開発者・Plan 9・Bell Labs) が開発したシステムプログラミング言語で並行処理 (Goroutine・Channel・CSP モデル・1978年Tony Hoare) ・静的型付け・GC・シンプル構文 (キーワード25個・C++ 84・Java 50)・コンパイル時依存解決 (Module Versioning・Go 1.11 2018年)・スタンドアロンバイナリ採用しDocker (2013年Solomon Hykes・Go ベース) ・Kubernetes (2014年Google・Go ベース) ・Cloudflare (Web Edge)・YouTube (一部移行)・Uber (一部移行)・Twitch・Dropbox・PayPal (一部) 等のクラウドネイティブシステムの中核となった現代主要言語。Go 1.22 (2024年2月最新)・Go 1.23 (2024年8月) と継続改良。

主な特徴・仕組み

  • 発表: 2009年11月10日Google
  • コードネーム: Issue 9 (社内案件)・公式名「Go」・通称「Golang」(検索しやすさで)
  • 開発者: Robert Griesemer (V8 Engine・Java HotSpot)・Rob Pike (Plan 9 OS・UTF-8)・Ken Thompson (Unix・C 言語・1983年Turing Award)
  • 言語パラダイム: マルチ (手続き型+OOP without inheritance+並行)
  • 型付け: 静的型付け (Strong) ・Type Inference (var x := 10)
  • GC: Garbage Collection・Pause-time 1ms 未満 (Concurrent Mark-Sweep)
  • コンパイル: ネイティブ機械語直接・1秒以下高速コンパイル
  • Goroutine: 軽量スレッド (KB 単位メモリ・OS スレッドの1/100)・並行処理革命
  • Channel: Goroutine 間通信 (CSP モデル)
  • シンプル構文: キーワード25個 (C++ 84・Java 50・Python 35)

Goroutine と Channel (CSP モデル)

2009年Go の並行処理革新:

  • CSP (Communicating Sequential Processes): 1978年Tony Hoare 論文 (Erlang 1986年・Occam 1985年で実装)
  • Goroutine: go func() { ... }() でスレッド起動・OS スレッドより軽量 (2KB スタック開始・C++ 1MB)
  • Channel: ch := make(chan int)・ch <- 42・v := <-ch で同期通信
  • メリット: 100万 Goroutine 同時実行可能・C++ 1万スレッドで限界・並行プログラミング革命
  • 競合 Rust: async/await (2019年)・Goroutine 後発・現代Rust が並行性で並走
  • 後継: 全現代言語が Go から並行性設計学ぶ・Kotlin Coroutines (2018年)・Swift Concurrency (2021年)

Go 主要バージョン (2009-2024年)

バージョン年主な追加機能
Go 1.02012年3月初の安定版・以降仕様後方互換性維持
Go 1.52015コンパイラセルフホスト (C→Go へ書き直し)
Go 1.72016Context パッケージ
Go 1.112018Modules (依存管理)・WebAssembly 対応
Go 1.132019Error Wrapping
Go 1.162021Embed (静的ファイル埋込)
Go 1.182022年3月Generics (約10年議論経て遂に対応) ・Workspace
Go 1.212023min/max/clear・LSP 改良
Go 1.222024年2月for ループ変数スコープ改良
Go 1.232024年8月Iterator (range-over-function)

Docker (2013年-) Go 主流化の起点

2013年クラウド時代の幕開け:

  • Docker (2013年3月Solomon Hykes・dotCloud): Linux Container 技術・Go 実装
  • 動作: アプリケーションとライブラリを「Container」にパッケージ・OS 非依存
  • 採用: 全クラウドプラットフォーム (AWS ECS/EKS・Azure ACI/AKS・Google GKE)・大企業
  • 歴史的意義: 「Cloud Native = Go」概念確立・以降Go 急成長

Kubernetes (2014年-) Go 帝国の中核

2014年クラウド標準オーケストレーター:

  • Kubernetes (2014年6月Google・Joe Beda/Brendan Burns/Craig McLuckie): Borg (Google 内部) のオープン版・Go 実装
  • 動作: Docker Container を大規模クラスターで管理 (自動スケール・ヘルスチェック・ロードバランス)
  • 採用: 全クラウド (AWS EKS・Azure AKS・Google GKE) ・全大手企業 (Netflix・Spotify・Airbnb・SoundCloud・PayPal)
  • CNCF (Cloud Native Computing Foundation・2015年Linux Foundation): Kubernetes 寄贈・現代クラウド標準

Generics (2022年Go 1.18)

10年議論の決着:

  • 2009-2021年: Go 設計者「Generics は複雑さを増す」と消極的・コミュニティ強い要望
  • 2022年3月Go 1.18 リリース: ついにGenerics 対応・「Type Parameters」命名
  • 構文: func Sum[T int | float64](nums []T) T { ... }
  • 影響: Go のEnterprise 採用拡大・データ構造ライブラリ充実

採用システム (2009-2024年)

  • Cloud Native: Docker (Container)・Kubernetes (Orchestrator)・Prometheus (Monitoring)・Etcd (KV Store)・Grafana (Visualization 一部)
  • Web Edge: Cloudflare (Workers・一部Rust 移行)・Fastly
  • DevOps: Terraform (HashiCorp 2014年)・Vault (HashiCorp 2015年)・Consul (HashiCorp)
  • DB: CockroachDB (2014年・分散SQL)・InfluxDB (時系列)・SurrealDB
  • 企業: YouTube (一部・2014年-) ・Uber (一部・2015年-) ・Twitch (Amazon)・Dropbox (一部・2014年-) ・PayPal (一部)
  • CLI ツール: GitHub CLI (gh)・kubectl (Kubernetes CLI)・helm (Kubernetes Package Manager)

Ken Thompson と Rob Pike の貢献

Bell Labs 伝説のチーム:

  • Ken Thompson (1943-): Unix (1969年) ・C 言語 (1972年Dennis Ritchie と) ・UTF-8 (1992年Rob Pike と) ・1983年Turing Award・Bell Labs→Google (2006年-現在)
  • Rob Pike (1956-): Plan 9 OS (1990年代) ・Inferno OS・UTF-8 (1992年Ken Thompson と) ・Bell Labs→Google (2002年-現在)
  • Go 開発意義: Bell Labs 系統 (Unix/C/Plan 9) のシステムプログラミング思想を21世紀に継承

関連技術との違い

項目C++ (1985)Java (1995)Go (2009)Rust (2010)
並行処理std::thread (C++11)Thread/Concurrency UtilityGoroutine+Channel (CSP)async/await (2019年)+Tokio
GC手動+smart pointersあり**あり (低レイテンシ) **なし (Ownership)
コンパイル速度遅 (分単位)中 (JVM Bytecode)**超高速 (秒単位) **遅 (分単位)
シンプルさ複雑 (キーワード84)中 (キーワード50)**シンプル (キーワード25) **中 (キーワード35)
用途システム/ゲームエンタープライズ/Androidクラウド/サーバシステム/Web/組込み

よくある質問 (FAQ)

Q1: なぜGoが「クラウドネイティブ言語」と呼ばれるか? A: (1) Docker (2013年) ・Kubernetes (2014年) ・Prometheus・Etcd 等の主要Cloud Native ツールが Go 実装・(2) コンパイル時静的バイナリで Container 軽量化 (10-50MB)・(3) Goroutine で大量並行処理・(4) GC 低レイテンシでサーバ用途最適・(5) シンプル構文で大人数開発容易・全要因で「クラウド開発の標準言語」確立。

Q2: Go と Rust どちらが優れたか? A: 用途次第。Go: クラウド/サーバ・シンプル・GC で開発速度優位・Kubernetes 等のエコシステム巨大。Rust: システム/組込み・所有権で性能/メモリ安全・Linux カーネル統合 (2022年-) ・WebAssembly 主流。両者並走・Go はWeb 開発・Rust はシステム低層・棲み分け。

Q3: 現代でGo 学ぶ価値は? A: 大いにあり。(1) Cloud Native 開発 (Docker/Kubernetes/Terraform) でGo 必須・(2) 高給職 (世界平均年収$100,000-$170,000)・(3) シンプル構文で学習曲線低・(4) Google/AWS/Cloudflare 等の大手で標準採用・(5) Backend Engineer・SRE・DevOps Engineer 必須スキル・新卒/転職市場で急成長分野。

まとめ

  • 2009年Google Robert Griesemer/Rob Pike/Ken Thompson 開発
  • システムプログラミング言語
  • 並行処理 (Goroutine・Channel)
  • シンプル構文・コンパイル時依存解決
  • Docker/Kubernetes・クラウドネイティブ中核
この記事について
カテゴリーソフトウェア
難易度中級
作成日2026/5/13