入門本でGoの世界にGo!(言ってみたかっただけ)
2009年にあのGoogle発、Better Cの立ち位置でマスコットのゴーファー君とともに人気を伸ばしてきたGo言語。
コンテナやマイクロサービス関連、実行速度が求められる場面でもお馴染みになっています。先進的な企業での採用事例も多く、まだ使える人がIT業界全体ではそれほど多くないからか求人でもよく見かけます。なんとなく優秀なエンジニアや先端技術動向に通じたエンジニアが嗜んでいそうなイメージもあります。
最近入門したこともあり、ここでは日本で手に入るGoの書籍についてまとめてみました。2022年現在、電子書籍もしくは物理書籍で比較的手に入りやすいものを中心に、カテゴリ別、出版された順番に並べています。
プログラミング自体が初心者向け
初心者向けの本はここ数年で何冊か出ています。
入門Goプログラミング
2019年/5月刊行、海外の"Get Programming with Go"
という書籍の翻訳本。他の言語版もあるロボットの表紙が目印です。原著は海外では評価されているようですが内容なのかそれとも翻訳がいまいちなのか、この本はネットの評価がちょいいまいちですね。
やさしいGo言語入門
2020年/4月刊行の本。新しい本なのですがネットでも現実世界でもあまり名前を聞かない本です。
たった1日で基本が身に付く! Go言語 超入門
2020年/10月刊行、他の言語でもよくある「たった1日で~」系のGoの本。言語仕様はだいたい網羅しつつ初心者向けに内容を絞ったものとなっています。中もカラフルなので読みやすそうです。
とはいえ1日で身につく範囲なので、ITエンジニアとして他言語の経験がある方などは最初からもっとしっかりした本で学んだ方が手っ取り早いかと思います。
Go言語 ハンズオン
2021年/3月刊行、対応バージョンはGo1.14の新しい本。様々な言語やフレームワークの超入門本を多数出しており本屋の技術書コーナーでもよく見かける掌田 津耶乃さんの本。後半の実践編ではGoにしては珍しくGUIアプリケーションまで入り、データ処理、Webアプリ開発まで広く浅く含んだ本となっています。初心者向けなので解説は浅いところもあり、最初の解説にGo言語の目的は一言で言えばC++の置き換えだ、と書いてあったりします。(確かに最初はそうなんだけど結果そうはならなかったのは最近の本なら書くべきでは...と思ったりもします。)
この掌田 津耶乃さんの入門本はけっこう誤植が多かったり本によって良し悪しがあるのが難点ですが、サンプルを読んだところではこのGoの本はそれほど悪くはないようです。
Go入門者向け
ITエンジニアが仕事で使うならこのあたりから。プログラミング言語の中で一番最初に学ぶ言語がGoという方はあまりいないからか、他言語をある程度知っている人を前提にしていたり、文中で他の言語にも言及している本も多くなってきます。
だいたいGo言語が流れに乗ってきた2010年代半ばから本が揃いはじめ、刊行された年に関係なく役立つ本が多いです。
改訂2版 基礎からわかる Go言語
2015年/7月刊行、Go1.4対応。こちらも評価の高い定番本です。Goの機能を一通り解説し最後のCHAPTER09には逆引きサンプルとして目的別の解決方法も載っています。本の中も多色刷りでレイアウトも見やすいです。次に上げる『スターティングGo言語』より若干易しめの模様。
スターティングGo言語
2016年/4月刊行、Go1.6対応。とても評価の高い定番本。主にC/C++、Java、C#、PythonやPHP、Rubyなど何かしらのプログラミング言語を知っている人を対象に、Goの基本構文から特徴的な機能、ツール、標準パッケージまで、一通り解説した本。あちこちでGoがなぜその言語仕様をとっているのか、その思想も語ってくれているのがありがたいです。2016年とちょっと古いのが難点ですが今でも十分役立ちます。
なおこのブログの人も2022年にGo1.18を使いながら本書+Udemyで入門しましたが、以下を除いてほぼ問題ありませんでした。
- ライブラリ類のインストールはツールの
go get
でなく 今はgo install
を使うようになっている - パッケージ管理の
Go Modules
の機能がGo1.11(2018年2月)から導入され、新プロジェクトを作る際に必須。本書は2016年の本なので記述なし
仕事用など本格的に入門するであれば、上記『スターティングGo言語』『改訂2版 基礎からわかる Go言語』の2冊が鉄板。出た年が若干古いですがどちらかをまず読めば問題なさそうです。
中~上級者向け
最初の1冊ではなくその先、あるいは特定のテーマに深くフォーカスした本です。
プログラミング言語Go
2016年/6月刊行、Go1.5対応。GoogleのGoチームのメンバーの方自らによる詳細な本の翻訳本。一説にはGo言語のバイブルとも呼ばれています。実用的なアプリをすぐに書くための本ではなく、Goの書き方や背景に注力して詳細に解説した本。
サンプルを実際に読んでみたのですが、第1章のチュートリアルから既に難しくて挫折しそうになりました(笑)
内容も文字がぎっしりで文章が長く、図もあまりなく一色刷り、読み進めるにはなかなか根気がいります。苔むした理系の図書館に鎮座する古めかしい名著といった趣があります。初心者お断り感はかなりあるので、そういう方はまずは他の本から始めた方がよいでしょう。
Goならわかるシステムプログラミング 第2版
初版が2017年/10月、2版が2022年/3月刊行。これから入手するなら第2版を買いましょう。2016/9~2017/8にかけてアスキーjpで連載されていた好評コンテンツが書籍化されたもの。
いわゆる低レイヤー(低レベル)の世界、システムコールやソケット、プロセスなどなどOSの階層に近づいたシステムプログラミングの世界にどっぷりと深く潜っていく本。興味のある方々で輪読会なども開催されている人気の本です。
Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る
2017年/3月刊行、よく本屋でも見かける大型本。作者のSAU SHEONG CHANG
さんはシンガポールの企業の方で、Go言語の標準ライブラリのみを使ってWebプログラミングを解説するというアイデアから始まった本。
Go言語のWebアプリケーションフレームワークも幾つかあり最も知名度があるのがecho
。とはいえデファクトとなるほどでもなく、また標準のnet/httpパッケージだけでもだいたい作れてしまうと言われています。
本書でもGoと標準ライブラリだけを使いWebアプリを作っていきます。前半でWebサーバーやHTTPの仕組み、リクエストとレスポンス...などこの辺の話も非常に詳しく解説されており、学びになる本です。
オライリー本コレクション4冊
4冊あり、どれも最初の1冊というよりはその先の中~上級者向けあたりの位置、特定テーマにフォーカスした本が多いです。『Go言語によるWebアプリケーション開発』『Go言語による並行処理』は表紙の色合いが似ていて動物も似ているのでちょっと注意です。
Go言語によるWebアプリケーション開発
2016年/1月のちょっと古い本。基本的な言語仕様はわかっている人向けにコマンドラインツールやWebアプリなどを題材に深く解説していく本。原著は"Go Programming Blueprints"
で、実はWebアプリ専門の本ではないので注意です。
Amazonだと物理本はもう残り少ないようで品薄ですね。
Go言語でつくるインタプリタ
2018年/6月、これだけ表紙が鼠系じゃない本。プログラミング言語のテキストを解釈してコンパイルしていくインタプリタを実際にGo言語で作りながら、インタプリタについて学んでいける本。
Go言語による並行処理
同じく2018年/10月刊行、原著は"Concurrency in Go"
。Go言語の大きな特徴であるゴルーチンや並行処理に深くフォーカスした本。Go言語のみならず他言語のユーザーでも並行処理について深く学べると評価の高い本です。
実用 Go言語――システム開発の現場で知っておきたいアドバイス
2022年/4月刊行。表紙デザインも新しくなったオライリー本で新刊が出ました! 既に現場で使われているGoにおいてよりGoらしく書くには、実用的なアプリケーションを書くには、といった観点で解説。ロギングやテストや環境構築などなどを解説。実際に仕事の現場でGoを書く上で役立つ実践的な本となりそうです。
開発現場で役立つ応用的な本
上のオライリー『実用 Go言語』もここにカテゴライズされるかと思いますが、国産本で2冊出ています。実際にチームで開発しているような方向けに、開発環境の周辺情報を含めた本です。
改訂2版 みんなのGo言語
初版が2016年/9月、内容がアップデートされた2版が2019年/8月刊行。ゴーファー君が忍者に扮している2版の方を入手しましょう。計7人の執筆者の方がGoのTipsや便利な使い方を解説していく本。基本の開発環境とエディタから始まり、Goらしい書き方、社内ツールの開発方法や実践テクニック、テスト、果ては闇の黒魔術...と現場の知見が詰まった一冊です。
エキスパートたちのGo言語 一流のコードから応用力を学ぶ
2021年/12月の最新の本。Go言語を支持していることで知られるメルカリ/メルペイ社、ベテランから若手まで様々な方が執筆されています。言語の解説ではなくGoを使った仕事・趣味での様々なオープンソースのプロダクトを題材にとり、Goの応用力を解説していく本。上の『みんなのGo言語』と立ち位置的には似ていますがこちらは実際に作ったプロダクトにフォーカス。Goでこれだけいろいろ作れるんだ、と分かる多彩な内容となっています。
著者の方は計20人に及ぶんですね。技術同人誌の豪華商業本版的な趣もある合作本です。
まとめ:Goの世界にGo!できる本(2回目)もいろいろあるよ
誕生が2009年。徐々に進化して日本で注目を浴びてきたのが2010年代半ばあたりでしょうか、商業本もそのあたりから揃い始めています。21世紀の若い言語だからか、日本語で読める本のラインナップは供給過多なほどまだ多くはなく、かつ一通り揃っていますね。
変化が速いJavaScript界隈あたりでは、出版されてから時が経っている本はすぐ情報が古くなったりすることがあります。
『実用 Go言語』『みんなのGo言語』『エキスパートたちのGo言語』あたりが該当するであろう開発の現場での実践的な内容を扱う領域については、本も常により新しいものへのキャッチアップが必要かと思います。しかしGo言語自体の入門であれば、情報鮮度はWebで補強しつつやれば本の古さはそれほど気にしなくても大丈夫でした。
僕もかじってみて圧倒的な実行速度やかなり厳しく指摘してくれる安心のコンパイラ、書き方の差に悩むことのないフォーマット、無駄を省いたコンパクトで合理的な言語仕様や思想...などなど新しいプログラミングパラダイムに触れることができ、新鮮な気持ちで入門できました。
コンパイル型言語の究極としてはRustと比べられがちな最近ですが、GoはGoでこれからも支持され発展していくのではと思います。これからGoの世界にGo!する方の助けになれば幸いです。(3回目ェ~)
この記事のもとになったメインのブログ記事の方では、解説した本のAmazonへのリンクも完備しています。買われるならこちらからもどうぞ!