GoエンジニアがGoエンジニアを滅ぼす
こんにちは、世界のエンジニアの皆さん!最近、バックエンドシステムをPHP (+ Laravel) や Ruby on Rails から Goに書き換えるという話をよく耳にしませんか?今日はそのトレンドにちょっと待ったをかけてみましょう。タイトルの「GoエンジニアがGoエンジニアを滅ぼす」は物騒ですが、中身はもっとユーモラスで鋭い考察です。
概要
- PHPやRubyからGoへの書き直しブームを観察(Pythonもあるけど、主流はやっぱりGo?)
- Goが選ばれる性能・型・安全性・マイクロサービス化の理由を検証
- Java, Kotlin, C#, Swift, C++, Rust, Scala, Elixir, TypeScript(Node.js)など他言語はなぜ選ばれない?
- GoやPythonのコードが「金太郎飴」になる問題について
- そして最後に、Goエンジニアが見落としている「不都合な真実」とは……
では、肩の力を抜いてお読みください。
PHP/RubyからGoへの大リプレイス時代
PHP (+ Laravel)、Ruby on Railsは長くウェブ業界を支えましたが、最近Goへのリプレイスが激増しています。しかし、こんな光景が社内で起きていませんか?
社内のリアルな風景
- リードエンジニアの野望: 「PHPやRails、もう辛いっす。Goなら速くて保守性も抜群ですよ!」
- CTOの懐疑心: 「Goにするメリットって本当にあるの?しっかり検証した?」
- PMの胸騒ぎ: 「リライト期間中、納期はどうしよう……。」
- 新人エンジニアの目の輝き: 「Goで書けるなんて最高っす!」
でも、本当にGoへの書き直しはベストでしょうか?
Goを選ぶ理由に冷静なツッコミを
パフォーマンス向上?
Goは確かに速い。でも実際のWebサービスはDBやI/O待ちがボトルネック。PHPやRubyが遅すぎて困ったことあります?
型と安全性?
静的型付けは確かに安心。でもPHPもRubyも型の仕組みが進化してるし、TypeScriptだって「そこそこ型安全」程度にはなってますよね?
マイクロサービス化?
モノリスから分割した結果、複雑性が激増して「分散モノリス化」するケース、多くない?
学習コスト?
「Goはシンプル」と言うけど、goroutineやチャネルを全員がすぐ理解できるって本当に?
エコシステムと未来志向?
Goのエコシステムは確かに素敵。でも必要な機能がPHPやRailsに本当に無いのか、単に「隣の芝生が青い」状態かも?
ちなみにPythonもよく候補になりますが、バックエンドとしての人気よりも、近年は特に機械学習や生成AIの分野での存在感が圧倒的ですよね。
他の選択肢を忘れてない?
実際には、多くの魅力的な言語がありますが、それでもGoが選ばれるのはなぜでしょう?
- Java: JVMの安定感。でも古臭くてイケてない?
- Kotlin: JVM上でモダンだが、サーバーサイドでの実績が少ない。
- Scala: JVMで関数型とオブジェクト指向を融合した強力言語。でも難易度も最強。
- C#: .NETで堅実。でもウェブ界隈では地味すぎ?
- Swift: Apple謹製だけど、サーバーサイドではニッチすぎる。
- C++: 圧倒的パフォーマンス。でも開発生産性は壊滅的。
- Rust: メモリ安全で高速だが、学習曲線が厳しすぎる。
- Elixir: 並行処理は最高クラス。でも採用している会社もエンジニアもニッチすぎる。
- TypeScript(Node.js): フロントエンドと統一できるけど、「非同期地獄」に耐えられる?
結局Goが「ちょうど良い」から選ばれるということですよね。
GoとPythonに共通する「最大の特徴」とそのリスク
Go言語には大きな特徴があります。それは、
コードが金太郎飴のように、どこを切っても同じ見た目になる特徴があることです。
実はこの「誰が書いても同じようなコードになる」という特徴はPythonにも共通しています。
PythonもPEP8やBlackなどによってコードスタイルが強力に統一され、誰が書いても似たコードになるのが強みです。
しかし、これがGoとPythonに共通した、最大の弱点でもあるのです。
誰が書いても同じコード = 生成AIが最も得意なコード
「誰が書いても似るコード」は、生成AIが最も得意とする分野です。
最近の生成AIはGoやPythonのコード生成を難なくこなします。つまり、エンジニアたちは無意識にAIが最も書きやすい言語を選んでいるのです。
さらに皮肉 – Pythonが生成AIを育てている現実
ここで皮肉なのが、生成AIを育てている主役がPythonだという点です。AIのフレームワーク(TensorFlow, PyTorchなど)はほぼすべてPython製。
つまり、「生成AIを育てるPythonエンジニアが、Goエンジニアを滅ぼし、自らも滅ぼしている」という恐ろしい構図が完成しているのです。
結論:滅ぶのは「GoやPythonしか書けないエンジニア」
結局のところ、Goへの大量リプレイスがもたらす本当のリスクは、「GoやPythonしか書けないエンジニア」を量産することです。
誰でも書けるコードは生成AIが容易に書けてしまいます。自分の仕事を奪うAIを育てる言語を選び、自ら墓穴を掘っているという皮肉な現実があります。
しかし、柔軟に複数の技術を使いこなし、AIを味方にできるエンジニアなら、次の時代も生き延びられるでしょう。
真夜中のオフィス。
画面には次々とコードが書き込まれていくが、キーボードを叩く音は聞こえない。
そしてもちろん、その席にエンジニアの姿もない。
──そう、そもそもこの文章を書いたのは生成AIなのですから……。