こんにちは、かつコーチです。
「Go言語って最近よく聞くけど、結局どんな言語なの?」
そんな疑問を持ってこの記事にたどり着いた方も多いと思います。
今回はGo言語がどんな特徴を持つ言語なのか、初心者の方にもわかりやすく解説します。
読み終える頃には、Goを学ぶメリットがイメージできるはずです。
Goとは?
Googleが開発したシンプルな言語
Go言語は、2009年にGoogleが公開したプログラミング言語です。
正式名称は「Go」ですが、検索のしやすさから「Golang」と呼ばれることもあります。
最大の特徴は、文法がとてもシンプルなことです。
文法がシンプルとは、覚えるべきキーワードやルールが少なく、誰が書いても似たようなコードになりやすいという意味です。
実際、Goの予約語(あらかじめ意味が決められている単語)はわずか25個しかありません。
これはPythonやJavaと比べても少ない部類に入ります。
なぜシンプルさが重要なのか
チーム開発では、コードの書き方が人によってバラバラだと読むのに時間がかかります。
Goは書き方の自由度をあえて減らすことで、誰が読んでも理解しやすいコードになるよう設計されています。
また、Goはコンパイル型言語という特徴も持っています。
コンパイル型言語とは、実行前にソースコード全体を機械語に変換してから動かす言語のことです。
PythonやRubyのようなインタプリタ型言語(1行ずつその場で実行する言語)に比べて、実行速度が速いのが特徴です。
実際のコードを見てみる
言葉で説明するより、実際のコードを見た方がイメージしやすいと思います。
以下はGoの定番の「Hello World」です。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
package mainとfunc main()については、次の記事で詳しく解説します。
ここでは「意外とシンプルだな」と感じてもらえれば十分です。
Goが使われる場面
Web APIのバックエンド
Goは標準ライブラリだけで、そこそこ本格的なWebサーバーが作れます。net/httpパッケージを使えば、外部フレームワークなしでAPIサーバーを立てられます。
軽量かつ高速に動くため、大量のリクエストをさばくAPIとの相性が良いです。
クラウドインフラのツール
DockerやKubernetesといった、インフラ分野の有名なツールはGoで書かれています。
クラウドサービスを支える裏方のツールとして、Goは事実上の標準になりつつあります。
CLIツール
コマンドラインツールの開発にもGoはよく使われます。
1つの実行ファイル(バイナリ)にまとめて配布できるため、環境構築なしですぐに実行できるのが強みです。
他言語との違い
Pythonとの違い
Pythonは書きやすさを重視した言語で、学習コストの低さが魅力です。
一方Goは、Pythonほど自由には書けない代わりに、実行速度と安全性で優位性があります。
筆者は以前、Pythonで書いていたCSV集計のバッチ処理をGoに書き直したことがあります。
数万行のデータを処理する場面で、実行時間が体感で半分以下になり正直驚きました。
コンパイル型ならではの速さを、身をもって実感した瞬間でした。
並行処理への強さ
Goにはgoroutine(ゴルーチン)という仕組みがあります。
goroutineとは、机の上で同時に動かせる小さな歯車のように、軽量な処理を並行して走らせる仕組みのことです。
他の言語ではスレッドを使うと処理が重くなりがちですが、Goのgoroutineは非常に軽量に作られています。
この仕組みについては、並行処理を扱う記事で改めて詳しく解説します。
まとめ
この記事のポイント
- GoはGoogleが開発した、文法がシンプルなコンパイル型言語
- Web API、クラウドインフラ、CLIツールなど幅広い場面で使われている
- Pythonなどのインタプリタ型言語より実行速度が速い
- goroutineという軽量な並行処理の仕組みを持つ
次に読むべき記事
Go言語の魅力がわかったところで、次は実際に環境を整えてみましょう。
「Go言語の環境構築とGoモジュールの基本(go mod init)」で、インストールから最初の一歩までを解説しています。
