技術書典5で買って読んだ本の紹介第3弾!
[何で読もうと思ったか]
表紙のゴーファーくん。
こちらはブースでもらったシール。
昨年2017年末あたりに、node.js版AWS Lambdaなどから無理やりGoのモジュールを起動してLambda上でGoを動かすことができるらしい、と聞いて、2018年はGoをやるかーと思っていたら、2018年1月にAWS LambdaでGoがサポートされていた。
そんな中で、Goやらねば……という気持ちが焦っていたので、とりあえずA Tour of Goを修了したのが2018年の夏前くらい。しかし、諸事情あって実戦投入に至らず、Golang初心者から抜け出せない感を抱えていたので、そのへんをなんとかしたい、と思い購入。
頁数は、80頁。ダウンロード版のみ。
会場でブースに行ったら、「値段はお気持ちで……」と言われたので、他(のサークル)に合わせてなんとなく千円札を出しておいたけど、あれで良かったのかしら。
目次は以下の通り。
はじめに
第1章 Goクイズと解説
第2章 HTTPパケットが飛んでいくまで
第3章 Go Modules導入以前
第4章 iotaの使い方
第5章 go testのマニアックなオプション大全
第6章 go-cloudとWireコマンドの概要と活用方法
[読んで何が分かったか]
第1章のクイズからして、「あ、やばい、分からん」となるやつ。A Tour of Goを何とか終わらせた程度のGo力ではかなり難しかった。その分、知らなかった挙動や書き方を学べたので、得るものは大きかった。
特に、ポインタとdeferとか、チームの勉強会で「どうなるんだろう?」と話題にしたところだったので、そういう意味でもタイムリーだった。
第2章を読んでいて、テスト用のhook関数の話が面白かった。Goのメール送信周りのコードを読んでいた時に似たような部分を見つけた気がする。今度もう一回確認してみよう。
まとめのところで、抽象化のコードは見通しが悪くなることがある、ということが書いてありどきりとさせられた。先日GoではなくPythonのコードをレビューしていた時にif文がベタベタ書かれていたので、こうすれば見通しが良くなる、ということを伝えたのだが、「if文ならアホでもわかるじゃないですか」と反論されてしまったことを思い出した。if文を使わなくて済むならそのほうがいいとは思うが、本書の結論にもある通り、「バランスを取った実装」をしていきたいと思う。
第3章、Modulesなんか良さそうと思っていたので、概要が知れて良かった。
第4章、iotaは全く知らなかったので、こういう機能があるんだーという漠然とした印象。知らないことばかりでほんとタメになる。
第5章はテストの話。テストコードは書いたことあるし、実行もしたことはあるけれど、こんなにフラグがあるんだ、とびっくり。説明がないフラグとか、「何をやっているか分からない」という説明のフラグもあったので、今度調べてみようかしら。
第6章はGoとDI(Dependency Injection)の話。Goを勉強した時に、interfaceが出てきたから、きっとJavaとかと同じようにDIできるんだろうなーと思っていたので、この章を読んでなるほど!と思った。go-cloudのベータリリースとか正式リリースが楽しみ。
[今後どう活かすか]
Goでの機能開発を予定しているので、折に触れて本書を読み返し、ベストと思えるようなGoのコード、テストコードを書いていきたい。
年内は諸事情あって厳しいので、年度末を目処に実戦投入するぞ。
[まとめ]
A Tour of Goをやり終わってドキュメントとか読んでないGo初心者、あるいは、Go中・上級者をめざすひとにおすすめの一冊。