👻

今Go言語を採用する理由をなるべく定量的に考えてみる

に公開
3

はじめに

Go 言語はシンプルな言語仕様であることからキャッチアップコストが低く、コンパイラ言語であることから実行速度が速いなどメリットも多いです。また、近年では AI Coding も盛んに行われており、静的型付言語である Go 言語は相性も良さそうです。私の実務経験の長さとしては Go 言語が一番長いこと + 上記の理由でもし新規のプロジェクトのバックエンドリードをする場合は Go 言語を採用したいなと思っています(もちろん要件次第ですが)。しかし、そこでなんとなく採用したいなではなく、ある程度定量的な指標をもって言語選定理由を言えるようになりたいなと考えました。また、AI Coding に Go 言語は適していると考えているが、なんらかのベンチマークを参考にした時にそれは定量的に説明できるのかが気になりました。

そこで、今回は Go 言語を採用する理由を探してみようと思います(目的と手段の逆転)。

比較対象と評価基準

比較対象は Java, Python, Ruby, TypeScript, Rust らへんにします。
評価基準は下記の3つにします。

  • AIによる開発効率向上率が高いか
  • 単位時間あたりのスループット
  • 市場の言語への興味

AIによる開発効率向上率が高いか

どのように定量的に表現するのか迷ったのですが、McEval というベンチマーク結果を用いることにしました。McEval はLLMの性能を測るベンチマークの1つですが、今回はLLMを固定し、1つのLLMでの言語ごとの差を見ることで言語ごとのAIによる開発効率の向上率を見ることとします。今回は GPT-4o-240513 のLLMに対してコードを生成するようなタスクに対してのベンチマークをみます。サンプルケースに対して生成されたコードに対してテストが通った割合をベンチマークとしているようです。

https://mceval.github.io/leaderboard.html による表から抜粋

Go Java Python Ruby Rust TypeScript
0.62 0.811 0.76 0.64 0.83 0.56

数字だけで見ると全然Goの数値よくないですね。割と高いかなと思っていたTypeScriptも低いです。ちょっと理由はよくわからないですが、これだけ見るとJavaなどを使った方がAIによってコード生成をさせた時の手直し率などは低そうに見えます。あれ、こんなはずじゃなかった。

単位時間あたりのスループット

この指標だけで見るのは諸説あるかもしれませんが、単純な性能面だけをベンチマークを参考に見てみます。Tech Empower というサイトの単一クエリを投げた時のスループットを見てみます。

Tech Empowerのベンチマーク結果 による表から抜粋

Go Java Python Ruby Rust TypeScript
432,423 205,876 166,904 72,897 1,270,151 214,177

Go 言語は Rustに次ぐスループットですね。これはイメージ通りです。

市場の言語への興味

こちらは少し角度が違いますが、採用のしやすさ的な観点で市場にいるエンジニアがどれだけその言語に興味があるかを見てみます。 2025 Stack Overflow Developer Survey ではある技術を使いたいと答えた人の割合と過去1年間に同じ技術を使用しており、今後も使い続けたい人の割合を出しています。

(2025/12/23 使いたい人の割合と今後も使い続けたい人の割合が逆だったのを修正しました。)
https://survey.stackoverflow.co/2025/technology#admired-and-desired から抜粋

評価項目 Go Java Python Ruby Rust TypeScript
使いたい人の割合(%) 23.4 15.8 39.3 5.1 29.2 31.9
今後も使い続けたい人の割合(%) 56.5 41.8 56.4 44.3 72.4 58
上記2つの差分(%) 33.1 26.0 17.1 39.2 43.2 26.1

Go言語を使いたい人の割合は Python, TypeScript, Rust に次いで4番目です。今後も使い続けたい人の割合は Rust, TypeScript に次いで3番目です。

まとめ

他の言語と比べても処理性能が高い、一定の市場からの興味を持たれているかつキャッチアップも比較的簡単なのでエンジニアを確保しやすいというのはある程度定量的に示せる明確なメリットだと感じました。一方でAI Codingは少なくとも今回の評価方法では特に有利ではないという結果になってしまい、ここは感覚とずれているので不思議に思っています。また時間があれば別の観点で調査してみたいですね。

Discussion

マダカヘリマダカヘリ

私はコード寿命を1番に考えてるので、Goの破壊変更をしない思想が気に入ってます!
サーバーレスで組むとフレームワークすら捨てられるので、全然アリだと思いますね。
RustはCargoにパッケージが溢れてることを逆に懸念点として捉えてます。(依存に振り回される可能性)

しかしweb屋なので今の1番はやはりnodeがかなり優勢ですね(採用的にも人手不足的にも)

2
だいちだいち

記事参考になりました。
もしかしたらですが(自分の勘違いでしたら申し訳ございません。)
Admired(継続利用したい)Desired(使ってみたい)が逆になってる可能性があるかもしれません。

Go Java Python Ruby Rust TypeScript
Desired(今後使いたい) 23.4 15.8 39.3 5.1 29.2 31.9
Admired(使い続けたい) 56.5 41.8 56.4 44.3 72.4 58.0
Difference 差分 33.1 26.0 17.1 39.2 43.2 26.1

元記事を見ると、私はこう解釈したのですがいかがでしょうか?

1
tsumuittsumuit

コメントありがとうございます!
確認したところ確かに逆転していたので修正しました!
ご指摘ありがとうございました!

1