「プログラミング言語をひとつ、しっかり身につけたい。でもJavaやC++はなんだか難しそう…」「Pythonは書けるけど、もっと処理が速くて本格的なバックエンドが作れる言語も学びたい」——そんなふうに感じたことはありませんか?
近年、DockerやKubernetes、あるいはメルカリやCloudflareといった有名サービスの裏側で採用されていることで注目を集めているのが、Googleが開発した Go言語(Golang) です。シンプルな文法、高速な実行速度、そして並行処理の書きやすさという3つの強みを持ち、「初心者にとっての学びやすさ」と「プロの現場での使いやすさ」を両立している珍しい言語です。
この記事では、Go言語がなぜ今選ばれているのかという背景から、環境構築、基本文法、そして「Goらしい書き方」までを一気に解説します。読み終わるころには、あなた自身の手で最初のGoプログラムを動かせるようになっているはずです。
なぜ今、Go言語を学ぶのか?
Go言語は2009年にGoogleによって発表された比較的新しい言語ですが、その設計思想はとても明快です。
- シンプルな文法:予約語はわずか25個。学習コストが低く、他人が書いたコードも読みやすい
- 高速な実行速度:コンパイル型言語のため、Pythonなどのインタプリタ型言語より圧倒的に速い
-
並行処理が得意:
goroutineとchannelにより、複雑な並行処理を数行で書ける - クロスコンパイル対応:Windows/Mac/Linux向けバイナリを1コマンドで生成できる
- 標準ライブラリが充実:Webサーバーやテストツールが標準で揃っている
「シンプルさ」を貫く姿勢が徹底されており、たとえば例外処理の try/catch すら存在しません。エラーは戻り値として明示的に扱う設計になっていて、コードの流れが常に一直線に読めるようになっています。
まずは環境構築:3ステップで完了
1. Goのインストール
Go公式サイト から自分のOS用のインストーラをダウンロードして実行するだけです。インストール後、ターミナル(コマンドプロンプト)で以下を実行し、バージョンが表示されればOKです。
go version
# 出力例: go version go1.22.0 darwin/arm64
2. 作業用フォルダを作る
mkdir hello-go
cd hello-go
go mod init example.com/hello
go mod init はプロジェクトを初期化するコマンドで、go.mod というファイルが生成されます。これがプロジェクトの「設計図」の役割を果たします。
3. 最初のプログラムを書いてみる
main.go というファイルを作り、次のコードを書きます。
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
実行はこの1行だけ:
go run main.go
# 出力: Hello, Go!
たったこれだけで、コンパイルから実行までが完了します。
Goの基本文法をサクッと押さえる
変数と型
Goは静的型付け言語ですが、型推論のおかげで冗長になりません。
var name string = "Alice" // 明示的に型を指定
age := 30 // 型推論(int型として扱われる)
:= は関数内でよく使う短縮宣言です。「変数を宣言しつつ値を代入する」ときに便利です。
関数
戻り値を 複数返せる のがGoの大きな特徴です。
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("0で割ることはできません")
}
return a / b, nil
}
func main() {
result, err := divide(10, 3)
if err != nil {
fmt.Println("エラー:", err)
return
}
fmt.Println("結果:", result)
}
この「値とエラーを一緒に返す」パターンはGoの慣用句で、あらゆる場面で登場します。慣れてしまえば、エラーハンドリングを忘れずに書けるとても堅牢な仕組みだと感じるはずです。
スライスとマップ
Goでは配列よりも スライス(可変長配列) と マップ(連想配列) が主役です。
// スライス
fruits := []string{"apple", "banana", "cherry"}
fruits = append(fruits, "durian")
// マップ
scores := map[string]int{
"math": 90,
"english": 85,
}
scores["science"] = 95
並行処理(goroutine)
Goが他言語と一線を画すのがこの部分です。関数の前に go と書くだけで、その処理は別スレッドで並行実行されます。
package main
import (
"fmt"
"time"
)
func greet(name string) {
fmt.Println("Hello,", name)
}
func main() {
go greet("Alice") // 並行実行
go greet("Bob")
time.Sleep(1 * time.Second) // 完了を待つ
}
これだけで並行処理ができてしまうのが、Goの魅力を象徴する部分です。実務では sync.WaitGroup や channel を組み合わせて、より安全に扱っていきます。
「Goらしい」書き方を身につけるコツ
Goには 「Go Way」 と呼ばれる、この言語ならではのコーディングスタイルがあります。初心者のうちから意識しておくと、自然と読みやすいコードが書けるようになります。
-
エラーは無視せず、必ずその場でハンドリングする
if err != nilの分岐は面倒に感じるかもしれませんが、これがバグを未然に防ぎます。 -
gofmtで自動整形する
コードスタイルは公式ツールgofmt(またはgo fmt)に任せましょう。インデントや空白について悩む必要がなくなります。 -
小さな関数・小さなパッケージを心がける
複雑な抽象化よりも、素直で読みやすいコードが好まれます。 -
標準ライブラリをまず調べる
net/httpやencoding/jsonなど、標準ライブラリだけで多くのことができます。すぐに外部ライブラリに頼らないのがGo流です。
まとめ
この記事では、Go言語の魅力から環境構築、基本文法、並行処理までを一気に見てきました。要点を振り返ってみましょう。
- Go言語は シンプル・高速・並行処理に強い の三拍子が揃った現代的な言語
- インストール後、
go runで即座にコードを実行できる手軽さ - 複数戻り値 と 明示的なエラーハンドリング がGoらしさの中心
-
goroutineを使えば、数行で並行処理が書ける -
gofmtや標準ライブラリを活用し、シンプルさを保つのが「Go Way」
Goの学習で大切なのは、とにかく手を動かして小さなプログラムをたくさん書くこと です。文法書を読み込むより、簡単な問題を100本ノック的に解いたほうが、身体で覚えられます。
さらに体系的に学びたい方へ
もし「独学だと文法は追えたけど、いざ自分で書こうとすると手が止まる…」「短時間でGoの基礎を一気に固めたい」と感じたら、演習ベースで学べる教材を活用するのがおすすめです。
参考までに、ドリル形式でGoの基礎を集中的にトレーニングできる講座をひとつご紹介しておきます。
📘 Go言語入門:短期集中!30問ドリル式プログラミング講座
30問の実践的な問題を解きながら、Goの基本文法・関数・スライス・エラーハンドリングなどを自然と身につけられる構成になっています。「読んで理解する」から「書いて動かせる」へステップアップしたい方の学習の助けになるはずです。
もちろん、公式ドキュメントや A Tour of Go といった無料リソースもとても優秀なので、自分の学習スタイルに合ったものを選んでみてください。大切なのは、あなたが「続けられる方法」で学び続けることです。