Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

『みんなのGo言語 - 現場で使える実践テクニック』の紹介

著者のおひとり、 @songmu さんより『みんなのGo言語 - 現場で使える実践テクニック』をいただきました。ありがとうございます。

みんなのGo言語[現場で使える実践テクニック]

みんなのGo言語[現場で使える実践テクニック]

  • 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/09/09
  • メディア: Kindle版
  • この商品を含むブログを見る

今年に入って『プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)』が翻訳されたように、日本語で読めるGo言語についての書籍もずいぶん充実してきたようです。Go言語の良さとは、「早い人ならば1日、遅くとも数日で言語仕様の全容を理解できる」*1ほどにシンプルな仕様にもあることは、『みんなのGo言語 - 現場で使える実践テクニック』(以下、本書)でも「はじめに」において述べられるところです。実際、他の言語にある程度通暁していれば、すぐにでもなにかしら使い始めることができるでしょう。

一方で、どの言語でも事情は似たようなものであると思われますが、Goにおいても例にもれず、言語そのものの仕様について知ること以上に、効率的な開発環境を使いこなしたり、言語特有のプラクティスやイディオムを身につけたり、あるいは、言語によらない共通のプログラミングそのものの知見を得、使いこなしていくことが重要であったりします。文法をひととおりみにつけたその先に、本書を通底して流れている、「チーム開発」(第1章)にフィットし、「どの環境でも同じように動作」(第2章)する、「実用的なアプリケーション」(第3章)が作れるのでしょう。

僕自身は、1.0が出るか出ないかぐらいの頃(?)だったかにひととおり文法を勉強してみて、その後、簡単なツールを書いてみたり、なにかあれば積極的にGoを使って小さなプログラムを書いたりはしてきましたが、腰を据えて、継続的に大きなアプリケーションに取り組むということがなかなかできてなかったため、上記したような、日々新しいものが追加されていく「実用的な」知見に疎くなっていました。そんなこともあって、著者陣の日々の経験から生まれた、実践的なTipsがつまったこの本は、とても勉強になりました。

go xxx のような便利ツール群などにも、発見がありました。たとえば、第1章で紹介されているgo lintgo vetなど、「そういえば使ってなかったな……、使うようにしよう」と反省したり、第6章「Goのテストに関するツールセット」で紹介されている go test -run TestXXX としてTestXXX だけ実行できることを教えてもらったり。第4章「コマンドラインツールを作る」では、採用候補のライブラリを紹介した上で、自分でとりまわしよく、かつ、しっかりとCLIアプリケーションを書く方法が丁寧に紹介されていて、今後、また参照することになるでしょう。

第3章「実用的なアプリケーションを作るために」と第5章「The Dark Art Of Reflection」は、個人的に、本書の白眉というべき面白い章でした。前者は、著者が実際に作ったプロダクトでの経験から、I/Oのバッファリング、タイムアウト、シグナルハンドリングのような、システムプログラミングをする上で大事な内容について述べられています。後者は、GoのReflectionってこんなこともできるんだーとひたすら驚きながら読みました(パフォーマンス上の懸念もしっかり述べられています)。

そんなわけで、Goについてひととおりの文法的事項はおぼえた(つもりだ)けど、実用的なツールやアプリケーションを書いていくにはどうしたら?という方が読むと、得るところがとても多いんじゃないかと思いました。オススメ。

みんなのGo言語[現場で使える実践テクニック]

みんなのGo言語[現場で使える実践テクニック]

  • 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/09/09
  • メディア: Kindle版
  • この商品を含むブログを見る

*1:『みんなのGo言語 - 現場で使える実践テクニック』p.3