あぼぼーぼ・ぼーぼぼ

のんびり生きたい

書籍『Go言語プログラミングエッセンス』を読んだ

https://www.amazon.co.jp/dp/B0BVZCJQ4F

知っていることは復習がてらfmfmと読めて、知らないこともたくさんあって楽しかったです。つどつど見返すGoの本がまた増えましたね。

以下、メモの中からかいつまんで。

1章はGoの特徴に触れながらなぜGoが選ばれているのかという話。レビューのしやすさ、周辺ツールの充実感はたしかに感じます。

3章は基本的な文法について。Clockwise Spiral Ruleは初めて知りました。あとはvar _ I = (*foo)(nil) のようにブランク変数を使うことで、型がインタフェースを実装していなければコンパイルエラーで(なんならその前にIDEが検知して)気づけるというテクニック便利だなと。

4章は基本とベストプラクティス。recoverはまだ使ったことないですが、手札として持っておきたい。その後のコラムが面白かったです。発生しうるエラーを明示的に伝えるコード例は他の言語の人からするとギョっとするかもですね。あとは、ビルドタグにignoreを指定すると、サンプルコードとしてmain関数書かれたコードも共存できるのは便利そうでした。

5章はWebアプリケーション関連、普段触れている業務の世界に近いのもあって復習がてら。色々な書籍を読んだつもりでしたが、html/templateパッケージについてざっと触れられたのはこれが初めてだったかもしれません。

6章は速いプログラムのためのテクニックということで、個人的に最も関心のある領域。特に最初に書かれてあった、I/Oが絡む処理など並行処理を行う部分の見極めが重要、というのは煎じて飲みたいくらい意識したいと思いました。あとはCとの比較検証も面白かったです。

7章はテストまわり。t.Shortは知らなかったのですが、例えば統合テストをビルドタグで分けるような使い方はイメージしていましたが、t.Shortを使いたい場面ってどんなのがありますかね。テスト関数単位でスキップできるので、時間のかかるベンチマークを普段はスキップするとかに使えそうかな。

8章はベンチマーク。業務でも計測しつつチューニングしているのでかなり興味ある領域。ベンチマークの比較について、昔なにかで見たことあるなと思ったらmattnさん(著者)のブログでした golang でパフォーマンスチューニングする際に気を付けるべきこと | Big Sky

9章はCLIアプリケーションで、実際にお題を元に作っていくので、ハンズオンっぽく読めます。データベース操作はここで初めて出てきますが、この後12章でしっかり説明されますね。CLIは標準ライブラリだけで作るより潔くcobraなどのパッケージを使ったほうが色々ラクですね。

10章はWebアプリケーションのハンズオンのような内容で、9章もそうでしたが、TODOアプリ、リマインダー送信アプリのように分けてそれぞれ作るように書かれているところが好きでした。

11章はGitHubを使ってパッケージを公開する一連の流れが分かります。この章だけ見ても、1章に書かれていた「パッケージ公開の簡単さ」を感じられるはずです。「当然ですがテストを書きましょう p278」いいですね。

12章はデータベースについて。要件に適したパッケージ使うのがいいですね。

13章はクラウドサービス関連で、どのクラウド使うにせよ簡単にデプロイできるなぁと改めて思いました。あとバイナリサイズを小さくするコラムは役立ちそう。