Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【Go】Go言語を学べるおすすめ本まとめ(2023年3月)【Golang】【入門】

入門本でGoの世界にGo!(言ってみたかっただけ)

 2009年にあのGoogle発、Better Cの立ち位置でマスコットのゴーファー君とともに人気を伸ばしてきたGo言語。
 コンテナやマイクロサービス関連、実行速度が求められる場面でもお馴染みになっています。先進的な企業での採用事例も多く、まだ使える人がIT業界全体ではそれほど多くないからか求人でもよく見かけます。なんとなく優秀なエンジニアや先端技術動向に通じたエンジニアが嗜んでいそうなイメージもあります。

 最近入門したこともあり、このエントリでは日本で手に入るGoの書籍についてまとめてみました。現在、電子書籍もしくは物理書籍で比較的手に入りやすいものを中心に、カテゴリ別、出版された古い順番に並べています。
 【追記】この記事は2022年/4月公開でしたが2023年/3月に更新しました。2022春時点で15冊→1年で5冊増えて2023年春で20冊と順調に出揃ってきています。

Go言語が学べる本まとめ

プログラミング自体が初心者向け

 初心者向けの本はここ数年で何冊か出ています。

入門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言語入門

 2023年/2月刊行の新しい本。基礎を扱った入門本です。この本はWebであまり情報がないのですが、内容160ページということでさわりを薄く扱った本のようです。う~んITエンジニアとして入門するなら下の「Go入門者向け」のカテゴリから選んだ方がよいでしょうか。

Go入門者向け

 ITエンジニアが仕事で使うならこのあたりから。プログラミング言語の中で一番最初に学ぶ言語がGoという方はあまりいないからか、他言語をある程度知っている人を前提にしていたり、文中で他の言語にも言及している本も多くなってきます。
 だいたいGo言語が流れに乗ってきた2010年代半ばから本が揃いはじめ、刊行された年に関係なく役立つ本が多いです。

改訂2版 基礎からわかる Go言語

 2015年/7月刊行、Go1.4対応。こちらも評価の高い定番本です。Goの機能を一通り解説し最後のCHAPTER09には逆引きサンプルとして目的別の解決方法も載っています。本の中も多色刷りでレイアウトも見やすいです。次に上げる『スターティングGo言語』より若干易しめの模様。

改訂2版 基礎からわかる Go言語

改訂2版 基礎からわかる Go言語

  • 作者:古川昇
  • シーアンドアール研究所
Amazon

スターティングGo言語

 2016年/4月刊行、Go1.6対応。とても評価の高い定番本。主にC/C++JavaC#PythonPHPRubyなど何かしらのプログラミング言語を知っている人を対象に、Goの基本構文から特徴的な機能、ツール、標準パッケージまで、一通り解説した本。あちこちでGoがなぜその言語仕様をとっているのか、その思想も語ってくれているのがありがたいです。2016年とちょっと古いのが難点ですが今でも十分役立ちます。

 なおこのブログの人も2022年にGo1.18を使いながら本書+Udemyで入門しましたが、以下を除いてほぼ問題ありませんでした。

  • ライブラリ類のインストールはツールのgo getでなく 今はgo installを使うようになっている
  • パッケージ管理のGo Modulesの機能がGo1.11(2018年2月)から導入され、新プロジェクトを作る際に必須。本書は2016年の本なので記述なし

 仕事用など本格的に入門するであれば、上記『スターティングGo言語』『改訂2版 基礎からわかる Go言語』の2冊が鉄板。出た年が若干古いですがどちらかをまず読めば問題なさそうです...という状態だったのですが、2022年秋に新しい入門本が出ました。

初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド

 2022年/9月刊行。オライリーから安心できる入門書が出ました。他言語習得者向けに一通り仕様を網羅しています。Go言語は2022年3月のバージョン1.18から遂にジェネリクスが導入と大きい変化がありましたが、本書では最後の15章で1章かけてこのジェネリクスを解説しています。
 なお2022年/4月刊行のオライリー本『実用 Go言語』と一部被っているところもあるようです。どちらか1冊選ぶなら、ジェネリクスも入っている分こちらが良いかもしれません。

www.oreilly.co.jp

中~上級者向け

 最初の1冊ではなくその先、あるいは特定のテーマに深くフォーカスした本です。

プログラミング言語Go

 2016年/6月刊行、Go1.5対応。GoogleのGoチームのメンバーの方自らによる詳細な本の翻訳本。一説にはGo言語のバイブルとも呼ばれています。実用的なアプリをすぐに書くための本ではなく、Goの書き方や背景に注力して詳細に解説した本。
 サンプルを実際に読んでみたのですが、第1章のチュートリアルから既に難しくて挫折しそうになりました(笑)
内容も文字がぎっしりで文章が長く、図もあまりなく一色刷り、読み進めるにはなかなか根気がいります。苔むした理系の図書館に鎮座する古めかしい名著といった趣があります。初心者お断り感はかなりあるので、そういう方はまずは他の本から始めた方がよいでしょう。

Goならわかるシステムプログラミング 第2版

 初版が2017年/10月、2版が2022年/3月刊行。これから入手するなら第2版を買いましょう。2016/9~2017/8にかけてアスキーjpで連載されていた好評コンテンツが書籍化されたもの。

ascii.jp

 いわゆる低レイヤー(低レベル)の世界、システムコールやソケット、プロセスなどなどOSの階層に近づいたシステムプログラミングの世界にどっぷりと深く潜っていく本。興味のある方々で輪読会なども開催されている人気の本です。

Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る

 2017年/3月刊行、よく本屋でも見かける大型本。作者のSAU SHEONG CHANGさんはシンガポールの企業の方で、Go言語の標準ライブラリのみを使ってWebプログラミングを解説するというアイデアから始まった本。
 Go言語のWebアプリケーションフレームワークも幾つかあり最も知名度があるのがecho。とはいえデファクトとなるほどでもなく、また標準のnet/httpパッケージだけでもだいたい作れてしまうと言われています。
 本書でもGoと標準ライブラリだけを使いWebアプリを作っていきます。前半でWebサーバーやHTTPの仕組み、リクエストとレスポンス...などこの辺の話も非常に詳しく解説されており、学びになる本です。

Go言語プログラミングエッセンス エンジニア選書

 2023年/3月刊行の最新の本。月刊誌『Software Design』でGo言語の記事も掲載していたmattn(まっつん)さんによる1本。Goの基本は分かってもう一段レベルアップしたい人を対象に、Go言語の仕様の背景、様々なテクニックやCLIアプリ、Webアプリ、ライブラリ作成、最後はクラウドサービスまで...と様々なエッセンスが詰まった本。入門書の次に向いた1冊です。

著者の方のブログ記事もあります。

mattn.kaoriya.net

オライリー本コレクション

 どれも最初の1冊というよりはその先の中~上級者向けあたりの位置、特定テーマにフォーカスした本が多いです。『Go言語によるWebアプリケーション開発』『Go言語による並行処理』は表紙の色合いが似ていて動物も似ているのでちょっと注意です。2022年/9月刊行の『初めてのGo言語』もオライリー本なのですが、「Go入門者向け」カテゴリーにしました。

Go言語によるWebアプリケーション開発

 2016年/1月のだいぶ古い本。基本的な言語仕様はわかっている人向けにコマンドラインツールやWebアプリなどを題材に深く解説していく本。原著は"Go Programming Blueprints"で、実はWebアプリ専門の本ではないので注意です。
 Amazonだと物理本はもう残り少ないようで品薄ですね。うーん2022年7月以降は『詳解Go言語Webアプリケーション開発』という本を当たった方が良いでしょう。

www.oreilly.co.jp

Go言語でつくるインタプリタ

 2018年/6月、これだけ表紙が鼠系じゃない本。プログラミング言語のテキストを解釈してコンパイルしていくインタプリタを実際にGo言語で作りながら、インタプリタについて学んでいける本。

www.oreilly.co.jp

Go言語による並行処理

 同じく2018年/10月刊行、原著は"Concurrency in Go"。Go言語の大きな特徴であるゴルーチンや並行処理に深くフォーカスした本。Go言語のみならず他言語のユーザーでも並行処理について深く学べると評価の高い本です。

www.oreilly.co.jp

実用 Go言語――システム開発の現場で知っておきたいアドバイス

 2022年/4月刊行。表紙デザインも新しくなったオライリー本の新刊。既に現場で使われているGoにおいてよりGoらしく書くには、実用的なアプリケーションを書くには、といった観点で解説。ロギングやテストや環境構築などなどを解説。実際に仕事の現場でGoを書く上で役立つ実践的な本となりそうです。

www.oreilly.co.jp

著者陣は日本の方々でインタビュー記事があります。

pr.forkwell.com

Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築

 2022年/8月刊行の新しい本。分散サービスの基本、設計、gRPCを使ったサービス構築、最後はKubernetesへのでデプロイまで、このテーマを深く取り扱った本です。

www.oreilly.co.jp

開発現場で役立つ応用的な本

 上のオライリー『実用 Go言語』もここにカテゴライズされてもよいかもしれませんが、国産本で幾つか出ています。最初の2冊は実際にチームで開発しているような方向けに、開発環境の周辺情報を含めた本です。

改訂2版 みんなのGo言語

 初版が2016年/9月、内容がアップデートされた2版が2019年/8月刊行。ゴーファー君が忍者に扮している2版の方を入手しましょう。計7人の執筆者の方がGoのTipsや便利な使い方を解説していく本。基本の開発環境とエディタから始まり、Goらしい書き方、社内ツールの開発方法や実践テクニック、テスト、果ては闇の黒魔術...と現場の知見が詰まった一冊です。

エキスパートたちのGo言語 一流のコードから応用力を学ぶ

 2021年/12月刊行。Go言語を支持していることで知られるメルカリ/メルペイ社、ベテランから若手まで様々な方が執筆されています。言語の解説ではなくGoを使った仕事・趣味での様々なオープンソースのプロダクトを題材にとり、Goの応用力を解説していく本。上の『みんなのGo言語』と立ち位置的には似ていますがこちらは実際に作ったプロダクトにフォーカス。Goでこれだけいろいろ作れるんだ、と分かる多彩な内容となっています。
 著者の方は計20人に及ぶんですね。技術同人誌の豪華商業本版的な趣もある合作本です。

gihyo.jp

詳解Go言語Webアプリケーション開発

 2022年/7月刊行の最新の本。第一部はGo言語の仕様や背景を語り、第二部はWebアプリケーションにフォーカス、ハンズオン形式でAPIサーバーを実装していきます。Webアプリ開発に特化して学びたいならこの1冊でしょう。

 著者の方のブログ記事があります。

budougumi0617.github.io

まとめ:Goの世界にGo!できる本(2回目)もいろいろあるよ

 誕生が2009年。徐々に進化して日本で注目を浴びてきたのが2010年代半ばあたりでしょうか、商業本もそのあたりから揃い始めています。21世紀の若い言語だからか、日本語で読める本のラインナップは供給過多なほどまだ多くはなく、かつ一通り揃っていますね。

 変化が速いJavaScript界隈あたりでは、出版されてから時が経っている本はすぐ情報が古くなったりすることがあります。
 『実用 Go言語』『みんなのGo言語』『エキスパートたちのGo言語』あたりが該当するであろう開発の現場での実践的な内容を扱う領域については、本も常により新しいものへのキャッチアップが必要かと思います。しかしGo言語自体の入門であれば、情報鮮度はWebで補強しつつやれば本の古さはそれほど気にしなくても大丈夫でした。2023年時点では入門本『はじめてのGo言語』を始めとして新しい本も加わってきているのでさらに安心ですね。

 僕もかじってみて圧倒的な実行速度やかなり厳しく指摘してくれる安心のコンパイラ、書き方の差に悩むことのないフォーマット、無駄を省いたコンパクトで合理的な言語仕様や思想...などなど新しいプログラミングパラダイムに触れることができ、新鮮な気持ちで入門できました。
 コンパイル型言語の究極としてはRustと比べられがちな最近ですが、GoはGoでこれからも支持され発展していくのではと思います。これからGoの世界にGo!する方の助けになれば幸いです。(3回目ェ~)

Go言語が学べる本まとめ