Home > ブログ > Go関連書籍

ブログ

Go関連書籍

Go言語関連書籍の紹介です。

オライリーはみんな真っ先に探すと思うので、まずはオライリー以外で。

プログラミング言語Go

Go言語を網羅的に解説しています。 これからGo言語を学ぶ人や"A Tour of Go"をざっとみた後、さらに深く勉強したい人にお勧めです。

変数のエスケープといったC言語から入った人には「この書き方大丈夫か?」といった点に関する説明や、スライス、interfaceとはどのようなものかといったことが解説されており、"A Tour of Go"だけでは学べなかった事項がより深く学べます。

Go言語を習得したいなら、ネット上の散らばった情報を探しながら勉強するよりも、本書を一冊持っておけばいいと思います。Go言語を既に使えている人にも足りない知識の補完用やリファレンスとしてお勧めです。

一点、本書は発行が2016年と少し前なので、Go Modulesに関する記述はありません。Go Modulesなどで最新の情報を入手する必要があります。

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

まだ書籍の種類は少ないが内容はどれも濃い、ラムダノートからの出版。

Go言語を使ってシステムプログラミング(*1)を行う方法が説明されています。

システムコールとは何かといったことから、ファイルディスクリプタ、ソケット、シグナルなどの使い方が解説されており、C言語での面倒くささを排除しつつ楽をしながらシステムプログラミングを学んでいくことができます。本書で学んだ知識は、Go言語に限らず、後からC系の言語を習得するような場合においても役立つ知識となります。

単にシステムプログラミングだけではなく、Goの特徴であるgoroutineがスレッドとどう違うのかも解説されています。

本書は、Go言語に限らずソケットプログラミング等の今後の資産となる基礎的な力を習得したい人にお勧めです。既にC言語等でソケットプログラミング等をバリバリやっていた人でも、Goではどうやったらいいかを学ぶのにいいと思います。

安定のオライリーでは以下の3冊です。

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

Webアプリケーションといえば以前はLAMP構成でしたが、今ではサーバーにNode.jsが使われるようになったりと別構成が取られる形も増えてきています。

本書ではWebサーバーにApache/Nginxの替わりにGoを使ってチャットアプリケーションやRESTサーバーを構築しています。LAMP構成以外のWebアプリケーションの様々な構成事例が見られて勉強になりました。

Go言語による並行処理

Go言語の機能のうち、並行処理に焦点をしぼって書かれた書籍です。

Go言語の解説書をみれば並行処理に関する記述もだいたいあると思いますが、本書は並行処理に的を絞っているだけあって CSP(Communicating Sequential Processes)の説明からされています。4章、5章では「並行処理パターン」、「大規模開発での並行処理」としてデザインパターンっぽく多くの慣例が挙げられています。

既にgoroutineを使いこなしている人でも、4章、5章を読むと他のGo書籍では得られない並行処理に関する知恵が得られると思います。

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

Go言語を使って独自のMonkey言語インタプリタを作成しています。

字句解析、構文解析、評価と順番に開発を進めてMonkey言語を完成させており、言語を作る上で必要なことがひととおり学べます。また、Goの特徴のひとつであるテスト機能も活用して、テストを先に書いてから実装していく手順で開発が進められています。

インタプリタとコンパイラの違いはありますが、コンパイラ - 原理・技法・ツール(いわゆるDragon Book)よりは気楽に読んで学習できます。

以上、私が購入したGo関連書籍の紹介でした。

(*1)この本では「OS の提供する機能を使ったプログラミング」をシステムプログラミングとして定義しています。

投稿日:2020/04/14 11:47

タグ: 書籍 Golang

Top

アーカイブ

タグ

Server (28) 作業実績 (21) PHP (19) ネットワーク (17) プログラミング (15) OpenSSL (10) C (8) C++ (8) PHP関連更新作業 (8) EC-CUBE (7) Webアプリ (7) laravel (6) 書籍 (5) Nginx (5) Linux (5) AWS (4) Vue.js (4) JavaScript (4) 与太話 (4) Rust (3) Symfony (2) お知らせ (2) Golang (2) OSS (1) MySQL (1) デモ (1) CreateJS (1) Apache (1)