GoはAIエージェントに最適な言語か
getbruin.com記事 + Hacker News反応まとめ — Rubyist視点で読む
getbruin.comが「Go Is the Best Language for AI Agents」という記事を投稿し、HNで300件以上のコメントがついた。核心の主張と反論をRubyist視点で整理する。
原文の核心主張
AIエージェントが大量にコードを生成する時代。エージェントが作るコードは大半が「それらしく見える」レベルなので、実際の動作検証が核心課題。
Goはこの検証に有利だというのが原文の要旨:
コンパイル言語の利点 — 静的型付けで誤った型/引数使用をコンパイル時に除外。コンパイルが通れば最低限構文的に正しいコードという保証がある。Rubyの「本番でTypeError発見」がなくなる。
Rustよりgo — Goの文法がRustより単純でLLMがより慣用的なコードを生成。GoのコンパイルがRustより速くエージェントのフィードバックループが短縮。学習データにGoコードが多い。
標準化ツール — gofmt、go test、go buildが標準。JSのような「このプロジェクトはPrettier、あちらはESLint」という混乱がない。
クロスプラットフォームバイナリ — GOOS=linux go buildで完了。Rubyの「このgemはWindowsで動かない」問題がない。
Rubyistが読むと刺さる部分
Rubyの弱点が正確に指摘される。
PythonとRubyの問題:同じ作業に20通りの方法がある。Net::HTTP vs Faraday vs HTTParty vs RestClient。エージェントがどのライブラリを使うか予測不能。Goはnet/http一つでほぼ解決。
エージェントがGoコードを一発で有効に生成する割合が約95%(著者体感)。Ruby/Pythonはランタイムでやっとエラー発見。この差はエージェントワークフローで大きい。
HNの反論
「Javaも同じ理由で適合」 — 正しい。より多い学習データ、より強力な型システム。Javaに言及しないのは若干偏向的。
「Rustの方がいい」 — コンパイラエラーを通過すればランタイムエラーがほぼない点で正しい。ただしRustは変化が速くLLMが最新APIについていけないという反論も。Rustのテストがソースファイル内にあるのでエージェントが修正時テストも一緒に更新するのは良い指摘。
「OCaml/Haskellが最高」 — 強力な型システム(GADT含む)、純粋関数、高速ビルド。理論的には正しいが学習データが不足。
「Pythonの方が良かった」 — 複数言語でプロジェクトを書き直した人がPythonがClaudeに最も合ったと主張。コードが短く理解しやすい。
「言語よりドメインが重要」 — 最も現実的な意見。TypeScriptはWeb、PythonはData/ML、GoはCLI/インフラ。「最高の言語」はエージェントが何をするかによる。
Rubyistはどうすべきか
Rubyがエージェントコード生成に不利なのは事実。動的型付け、フレームワーク断片化、ランタイムエラー依存。構造的弱点だ。
でもRailsアプリをGoで書き直すべきか?いいえ。原文も認めるように「12ヶ月後にはコードを直接読む機会が減る可能性」がある。現在の言語別長短所はLLM性能向上とともに意味が薄れうる。
実用的アプローチ:Rubyでビジネスロジック、Goでパフォーマンスクリティカルな部分。SidekiqワーカーをGoに転換、CLIツールをGoで作る。すでに多くのチームがこうしている。
この記事の本当の教訓は「Goが最高」ではなく、コンパイル時検証+標準化ツール+単純な文法がエージェント時代に価値が上がるということ。Rubyがこの方向に進化できるかがRubyistにとってより重要な問いだ。
原文主張 vs HN反論
| 主張 | HN反論 | Rubyist視点 |
|---|---|---|
| Goコンパイルでエージェントコード即座検証 | Java、Rust、OCamlも同様 | Rubyはランタイム依存 — 本当の弱点 |
| GoがRustより単純 | Rust: コンパイル通過=ランタイム安全 | Rubyも単純だが型安全性なし |
| 標準ツール(gofmt、go test) | TSもtsc+vitestで十分標準化 | Ruby: RuboCop+RSpec+Bundler組み合わせ必要 |
| 有効コード生成率95% | PythonがClaudeに最も合ったという意見も | Ruby数値なし — 体感的にはもっと低い |
Rubyistのための核心要約
認めるべき: 静的型付け+高速コンパイル+標準ツールがエージェント時代に価値上昇。Rubyは3つとも弱い。過大解釈するな:「最高の言語」はドメインによる。RailsをGoで書き直す必要なし。実用的に: Rubyでビジネスロジック、Goでパフォーマンスクリティカル部分。
RubyからGoへ
エージェント生成コードをコンパイルで即座に検証 — Rubyはランタイムまでエラーが分からない
gofmt/go test/go build標準ツール — RubyのRuboCop/RSpec/Bundler断片化と対比
Goのnet/httpひとつ vs RubyのNet::HTTP/Faraday/HTTParty/RestClient断片化
クロスプラットフォームバイナリ標準対応 — Ruby gemのOS互換問題なし
実用的アプローチ:Ruby(ビジネスロジック)+ Go(パフォーマンスクリティカル)組み合わせ
メリット
- ✓ コンパイル時検証でエージェント生成コードの95%が初回で有効(Rubyはランタイム依存)
- ✓ gofmtひとつでフォーマット統一 — エージェントがPrettier vs ESLintを悩む必要なし
- ✓ 10年以上互換性を壊すバージョンなし — LLM学習データが古くても有効
- ✓ クロスプラットフォームバイナリでエージェントが様々なOSで同一コードを検証・実行可能
デメリット
- ✗ Ruby/Python比ライブラリエコシステムが貧弱 — 特にデータ/ML分野
- ✗ HN反論:Rustはコンパイル通過時ランタイムエラーほぼゼロ — Goより安全
- ✗ HN反論:PythonがClaudeに最も合ったという実戦経験も存在
- ✗ 「最高の言語」はドメインによる — WebはTS、データはPython、CLI/インフラだけGo