kuwana-kbの開発/学習ブログ

プログラミング、クラウドインフラのWeb開発/学習ブログ

スターティングGo言語 書評

「スターティングGo言語」を読み終えたのでまとめます。

スターティングGo言語 (CodeZine BOOKS)

スターティングGo言語 (CodeZine BOOKS)

本のざっくりとした紹介

この本はGoの初学者を対象とした入門書です。構成としては開発環境の構築からはじまり、大部分は言語の基本やパッケージの解説がなされる形になっています。言語を通じてアプリケーションを作るといった実践的な内容というよりは、Goの仕様の解説書に近しいでしょう。

なぜ読んだか

理由は以下の2点です。

  • Goの仕様を体系的に理解したかったら
  • interfaceがよくわからなかったから

これまで私が得たGoの知識は、Tour of Go と UdemyのGo講座がメインでした。特にUdemyの酒井さんのGo講座はとても実践的で、プログラミング歴そのもの浅い私にとって最高の教材でした。ただ、この講座は実践寄りな分、Goの細かな仕様や各パッケージの使い方については軽く触れて終わってしまいます。

現役シリコンバレーエンジニアが教えるGo入門

Goの知識が浅い私は、開発が行き詰まった時はQiitaの記事等を見て都度解決していたのですが、どうしても対処療法的になってしまっていたことに頭を悩ませていました。 今回の「スターティングGo言語」は、基礎的な文法からGo特有のややこしい仕様に至るまで、体系的にGoの仕組みを学べそうと踏んで読むに至りました。

この本のよかった点

1.サンプルコードが豊富

サンプルコードが豊富です。説明を読んでよくわからない部分も、とりあえず動かしてみることで理解することができました。

2.よく使うパッケージや機能の解説が充実している

log, net/http, strconv, json といったwebアプリケーション開発で利用するパッケージの解説が充実しています。また、冒頭で説明した通り私はinterfaceがよくわかっていなかったのですが、本書の解説を通じて理解できるようになりました。interfaceの章の解説だけでなく、パッケージの章においても度々「このパッケージでは〜〜のinterfaceが使用されていて〜」といった形で多角的にinterfaceの説明がなされている点がとても良かったです。

3.筆者のGoに対する意見が面白い

こういった解説書は、言語の解説ばかりで退屈になりがちです。また、解説だけであれば公式ドキュメントで十分かもしれません。しかし、本書ではGoの設計思想やコードの書き方に関する筆者の意見が随所にあり、公式ドキュメントとは十分な差別化が図られていると感じました。

印象に残った内容

今までなぜ最後の要素にカンマをつけるのか謎だったのですが、本書にはしっかりとその点の解説がありました。「こうすれば動く」といった手順の説明だけでなく、「なぜ動くのか」という理由にまで言及されているのは納得感がありますよね。

注意すべき点

初めてプログラミング言語を学ぶ人にはつらいかもしれない

本書では、説明文として「Javaでいうと〜」といった表現が度々登場します。Goの特徴を従来の言語と比較して解説しているわけです。その意味で、Goがはじめて学習するプログラミング言語の場合、読み進めるのが苦痛に感じる方もいるかもしれません。
ちなみに解説の中でbitとオーバーフローの項目があったのですが、これが前回書評を書いた「プログラムはなぜ動くのか」で得た知識領域の話でして、読んでおいてよかったなと思いました。プログラムの基礎を知りたいという方は、こちらも合わせて読むのも良いと思いますよ。

まとめ

本書を読み終えて得られたことの1つは、標準パッケージに関する知識の深掘りができたということです。たくさんのサンプルコードを通じて動作を確認することで、使えるパッケージの幅が広がったと感じます。


そしてもう1つは、こうした標準パッケージの動作とソースコードの確認を通じて、インターフェース、構造体、メソッドの関連性への理解が深まったと感じます。例えば、「io.Readerを引数として受け取るbufio.Scanner()で、なぜ*os.File型を受け取ることができるのか」といった内容は、本書を読んでようやく理解できるようになりました。知識が深まりGoに関する視界が広がった分、Goを書くのがより一層楽しくなってきたと感じています。

スターティングGo言語は、Goで開発をするときに傍に置いておきたいと思えるような一冊です。 Goの学習をこれから進める方、Goの基礎を深めたい方にお薦めします。