methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

「Go による Web アプリケーション開発」書評

Go による Web アプリケーション開発 を読みました。 (まだ後半はパラパラめくっただけですが)

この本は Go のチュートリアルでは無いです。 A Tour of Go とか The Go Programming Language で基本的な文法などは抑えた状態で読むべきでしょう。

この本で最初のサンプルアプリケーションは、 WebSocket によるチャットです。まず単に動くだけのチャットを作ってから、 Github などと OAuth2 で認証したり、各所からアイコンを引っ張ってきたりと、 Go で小さめの Web アプリを作るときに実用されそうな要素が並んでいます。

後半のサンプルアプリケーション (Twitter と連携する voting アプリ)では MongoDB や NSQ を使いはじめるので、ちょっとそのミドルウェアを使わない人にとっての実用性が落ちてきます。しかしこれも、 LAMP とは違った構成でとりあえず動くものを作る上では参考になると思います。

課題の選び方にはとてもセンスが光っている一方、気になるのはコード等実装レベルでのセンスです。 early return イディオムを使ってない(これはGo以外でも可読性の高いイディオムですが、特にGoらしいプログラムでは必須です)とか、 エラー処理が抜けているとか、最初のサンプルアプリでユーザーが自分でアイコンをアップロードする場面でファイルのパーミッションを 0777 で保存していたりとか、 コードレベルでもそれ以外の部分でもたくさんの顔をしかめるポイントがありました。

しかし、気になったポイントのほとんどに鵜飼さんの「監訳注」が入って、細かくフォローされています。 さらには付録B「Goらしいコードの書き方」で、本文中のGoらしくないコードをGoらしくリファクタリングしていきます。 本文の翻訳の方も詰まらずにすらすら読めるものですし、原文よりも絶対に邦訳の方がオススメです。

例えばWeb企業で新人研修で1周間くらいでGoを教える場合には、 Tour of Go とこの本の最初のサンプルプログラムまでをセットにするのが良いと思います。