#技術書典5 で買った『ゴーファーの書』の話とか

技術書典5で買って読んだ本の紹介第3弾!

 

techbookfest.org

 

 

[何で読もうと思ったか]

f:id:kidani_a:20181031102714p:plain

表紙のゴーファーくん。

 

f:id:kidani_a:20181009023455j:plain

こちらはブースでもらったシール。

 

昨年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中・上級者をめざすひとにおすすめの一冊。