Go

Go言語入門:最初の一歩で学ぶ並行開発の魅力

Go は “シンプルさ” と “実行速度” を兼ね備え、クラウドネイティブ時代を牽引するモダン言語です。Docker や Kubernetes をはじめ、世界中の大規模プロダクトで採用が進む背景には、学びやすさと高速な並行処理がもたらす圧倒的な開発体験があります。

本記事では、未経験のエンジニアでも 30 分で Go の魅力を体験 できるよう、開発環境の構築から Web サーバー実装、並行処理の基礎までをステップバイステップで解説します。

読了後に得られること:

  • Go の設計思想と市場価値を理解できる
  • Hello World から Web サーバー起動まで自分の手で動かせる
  • Go が採用されるリアルなプロダクト事例をイメージできる

さあ、次のトレンドをつかむために Go の世界へ踏み出しましょう!

はじめに

Go(正式名称:Golang)は Google によって 2009 年に公開されたプログラミング言語です。シンプルな文法と高速なビルド、そして並行処理を言語レベルでサポートすることから、クラウドネイティブなマイクロサービスや DevOps ツール、データ処理基盤など幅広い領域で採用が進んでいます。
本記事では 「Go の第一歩」 として、Go 言語の特徴から開発環境構築、サンプルコードの実行までを丁寧に解説します。

この記事を読めば、Go を触ったことがないエンジニアでも 30 分以内に最初のプログラムを動かし、“並行処理のワクワク感” を体験できます。


Go 言語とは

設計思想

  • シンプルさ:学習コストを下げ、チーム開発で生産性を高める
  • 高速コンパイル:大規模コードベースでも数秒でビルド完了
  • 組み込みの並行性goroutinechannel による軽量スレッドモデル
  • 標準ライブラリの充実:Web サーバーや暗号化、テストまで一通り揃う

主な特徴

特徴他言語との比較開発者メリット
静的型付け + 型推論C/C++ より型推論が豊富型安全と可読性の両立
ビルトイン並行処理Java のスレッドより軽量数万ゴルーチンを気軽に起動
単一バイナリ生成Python/Ruby は実行環境が必要配布が簡単・Docker サイズも小さい

なぜ Go を選ぶのか

  1. クラウド時代との相性:Kubernetes, Docker など OSS の多くが Go 製。
  2. 開発スピード:習得容易な文法と高速ビルドでフィードバックループが短い。
  3. エコシステムの成熟go install で簡単にツール導入できるモジュール管理。
  4. モダンな標準ツールチェーン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世界!")
}

実行手順

  1. hello.go として保存。
  2. ターミナルで go run hello.go
  3. 「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 の強み。ルーティングを強化したい場合は GinEcho などのフレームワークがおすすめです。


まとめ

  • Go は シンプル×高速×並行性 の三拍子がそろった現代的言語。
  • インストール後すぐに書ける&配布しやすい単一バイナリで、初学者でも環境構築のハードルが低い。
  • 次回は テスト文化モジュール管理 を深掘りし、実践的なプロジェクト構成を紹介します。

学習リソース

小さな一歩 が大きな開発体験へ。ぜひ手元でコードを動かし、Go ならではの開発速度を体感してみてください!

  • この記事を書いた人

ふくまる

機械設計業をしていたが25歳でエンジニアになると決意して行動開始→ 26歳でエンジニアに転職→ 28歳でフリーランスエンジニアに→ 現在、34歳でフリーランス7年目 Go案件を受注中 Go,GCPが得意分野

-Go
-