本連載は、「 エキスパートへの道しるべ(Load to Expert) 」をテーマとして、初級者がエキスパートになるためのヒントを、日本を代表するエキスパートの方々に伺う企画です。
Googleが生み出したGo言語は、シンプルな文法と高いパフォーマンスを両立し、今やWebバックエンドからシステムツールまで幅広く活用されています。本記事では、株式会社ヘンリーのFellowであり、Go界隈で数々のOSSを公開するSongmuさんに、Goの魅力や学習法、エキスパートになるまでのプロセスをお話しいただきました。
(本インタビューは2025年3月24日に実施されました)

SongmuさんをTechFeed上でフォローしよう!
Go言語の概要と魅力
――まずは自己紹介をお願いします。
Songmu: こんにちは、Songmuと申します。本名は松木といいまして、ネット上では「Songmu」のハンドルネームで活動しています。今は主に株式会社ヘンリーというスタートアップで電子カルテなど医療向けのプロダクト開発に関わっています。Goはもう10年以上使っていて、代表的なOSSとしては ghq のメンテナンスなどに関わってきました。
――Goを使い続けてきた理由は何でしょうか?
Songmu: GoはシステムプログラミングからWeb開発まで幅広く対応できる言語です。静的型付け言語でありながら、コンパイルが非常に高速で、コードの書き味が軽やかという点が魅力だと思います。
また、言語標準でテストやパッケージ管理、コード整形(gofmt
, goimports
)ツールなどが用意されていて、周辺ツールがごちゃつかない点もいいですね。
――なるほど。それに加えて、ビルドしたときに1ファイルにまとまるのも大きな特徴ですよね。
Songmu: そうですね。ビルドすればワンバイナリで配布できるので、Dockerなどのコンテナとも非常に相性がいい。そういうところもGoが人気を集めている理由の一つだと思います。
最初の実践はサーバーエージェントから
――SongmuさんがGoと出会ったきっかけを教えてください。
Songmu: 2014年頃、Mackerelというサーバー監視サービスの開発に関わっていたときに、サーバーに常駐する監視エージェントを作る必要があって。そのときGoが選ばれていたんです。言語選定では「軽いこと」「メモリを食わないこと」「クロスコンパイルが容易であること」などが条件でした。Goはそれにぴったりはまったんですよね。
――まさにGoの設計思想が活きるユースケースですね。
Songmu: 当時はまだGoも新しくて、不安もあったんですが、結果的に非常に良い選択でした。最初はその監視エージェントの開発に関わるなかで、Goの並行処理やパッケージ設計について自然と学んでいきました。
――その後、自作のライブラリもたくさん公開されていますよね。
Songmu: はい。監視エージェントの中で必要になったものを自作してOSSとして公開したりもしました。たとえば、外部コマンドのタイムアウト処理用のラッパー(timeout)とか、ターミナルでプロンプトを出すためのライブラリ(prompter)とかですね。そうしたものを作っていく中で、Goのエラー処理やパッケージ構成について、実践的に理解が深まりました。

コードレビューから学んだGoらしさ
――Goの「作法」で戸惑ったことはありましたか?
Songmu: ありますあります。最初、エラーを独自の構造体で返していて、レビューで「それはインターフェース型で返すべき」と指摘されました。Goはエラー型に対する思想が強いというか、型システムで抽象化するところと、あえて具体にしておくところのバランスが特徴的なんですよね。
――そのレビューは社内で?
Songmu: はい。ただ、そのOSSは社外にも公開していたので、半分はオープンなレビューというかたちでした。あの時にちゃんと指摘してもらえたのは、本当にありがたかったですね。
初心者へのおすすめ学習法
――Goを学ぶ初心者に向けて、おすすめの学習方法はありますか?
Songmu: 一番は公式の「A Tour of Go」をやること。Goの文法や感覚がよく掴めます。それから、tenntennさんの「プログラミング言語Go完全入門」は非常に良くまとまっていて、初学者にも中級者にもおすすめです。
――最近はLLM(大規模言語モデル)を使って学ぶ人も増えていますね。
Songmu: そうですね、ChatGPTなどのLLMに聞いてみるのもかなり有効だと思います。Goは歴史も長くなってきたので、回答の精度も高いですし。スタックトレースを貼って「どう直せばいい?」って聞くだけでも、かなり有益なフィードバックがもらえます。
情報収集のコツと、注目のトピック
――Go関連の情報は普段どうやって集めていますか?
Songmu: 基本はX(旧Twitter)ですね。Goに詳しい人たちをフォローしているので、自然と新しい情報が流れてきます。それから「Go Weekly」というニュースレターも読んでいます。
――公式のアップデート情報も追っていますか?
Songmu: もちろんです。Goは半年に1回のペースでアップデートがあります。新しいバージョンが出たときは、日本でも「Goリリースパーティー」といったイベントが開かれて、その資料を見てキャッチアップしています。
――最近注目しているトピックは?
Songmu: Go 1.21で導入された go tool の仕組みはかなり大きな変更でした。プロジェクト内でGo製のツールを管理するのが非常に楽になったんです。あと、MicrosoftがTypeScriptのコンパイラをGoに置き換えるというプロジェクトも始めています。これは今後の言語選定にも影響を与える面白い動きだと思っています。
SongmuさんをTechFeed上でフォローしよう!
これからGoを学ぶ人へ
――最後に、Goに興味がある読者へのメッセージをお願いします。
Songmu: Goはとにかく始めやすい言語です。文法もシンプルで、エディタさえあればすぐに実行できます。そして、Webアプリケーションからシステムプログラミングまで幅広く対応できるスコープを持っている。
並行処理の面でも、Goは CSP(Communicating Sequential Processes) に基づいた設計がされていて、goroutineやchannelを使った並行処理の概念がとても学びやすい。これは実際に手を動かしてみるとすぐに実感できます。
道具箱に一本、Goという道具を加えるだけで、作れるものの幅がぐっと広がります。ぜひ一度、触ってみてください。
参考リンク集
- A Tour of Go
- プログラミング言語Go完全入門(tenntenn)
- Go公式ブログ
- Go Weekly
- ghq
- timeoutライブラリ
- prompterライブラリ
- Go Release Party(gocon.jp)
- Gophers Slack
Goの最先端情報を知りたい方は以下のTechFeedチャンネルをフォローしよう!