9月はサンフランシスコに海外出張へ行っておりました。その間、 @songmu さんより「みんなのGo言語」(以下、本書)を献本いただきました!ありがとうございます。

さて、本書を一言でまとめると「Go言語に関する良き先輩」と言えます。

新しい言語に触れ始めるとき、昨今ではプログラムそのものを書き始めることには不便しなくなりました。多くの場合、言語仕様やチュートリアルが公式Webにまとめられているからです。しかし、実際に製品開発に取り組むときにはそれだけでは足りません。たとえば、私なら以下のことに悩みます。

  • 開発環境の整え方
  • テストコードの書き方
  • パッケージのvendoring
  • 言語としての書き方のセオリー
  • 言語ならではの癖

これらは実際、私が2014年にGoに触れ始めたときに悩んだことでもあります。こういうとき、すでにその言語に触れている先輩・メンター・同僚がいれば、その人からざっくりと情報を得れば良いでしょう。でも、そういうときばかりでもありません。そこで、本書が役立つのです。

「開発環境の整え方」は、主に1章で取り上げらています。エディタの設定方法や、コードフォーマッタの使い方など、製品開発時に恥ずかしくない、そしてスムーズに共同開発できる環境をいかにして構築するかがまとめられています。

「テストコードの書き方」は、6章で取り上げられています。テストの書き方はもちろん、サンプルコードをドキュメントに載せる方法や、ベンチマークについても取り上げられています。私はドキュメントを見てわからないときは次にテストコードを見るのですが、Go言語では仕組みとしてサンプルをテストコードの一部として書ける点には感心しました。こういうのは積極的に使いたいですね。

「パッケージのvendoring」は、1章で取り上げられています。現代の製品開発時には dependenciesの管理や vendoring は欠くことのできないものとなっています。Goでは1.5まで標準でvendoring機能がなく、あまり考えずにやっていると何かの拍子でパッケージのバージョンが上がったときに動きが変わってしまうことがあります。そういう問題があったからか、1.6から入ることとなりパッケージのバージョンが管理しやすくなりました。その使い方がわかります。

「言語としての書き方のセオリー」は、主に1章・2章・3章で取り上げらています。1章では全ての基礎となる事項が、3章では実用的な実装方法を、そして2章ではプラットフォーム間移植を考慮した書き方を学べます。また、4章では実装の事例が取り上げられており、1〜3章で学んだことをより具体的に理解することができます。

「言語ならではの癖」は、5章にあります。Goは静的型付け言語ですので動的な型として変数を扱いたい場合には一工夫いります。リフレクションが必要な場合もあります。僕は動的な型の変数の扱い方を自力で理解しようとしたとき、結構時間を使ってしまった苦い思い出があります。Goに慣れ始めた人にとって、きっと良いアドバイスをもらえるでしょう。

A Tour of Goで言語仕様を学んだ後に、Goで製品開発を行う基礎知識を獲得するために読むにはとても良い本ではないかと、僕は思います。

ぜひ、書店やネット通販を通じてお手元にどうぞ。