エンジニアに捧ぐ、ブックレビュー 2017 前編 プログラムスキルアップ編
ピクセルグリッドのスタッフが実際に読んで、これはいいと感じた仕事に役立つ書籍リストを紹介します。第1回目はプログラムのスキルをアップさせてくれる書籍です。読み応えのある本も多いので、秋の夜長にぜひ。
はじめに
今回から2回に渡って、ピクセルグリッドのスタッフがリストアップしたエンジニアにおすすめしたい書籍を紹介します。
第1回目は主にコードを書くスキルを上げるための書籍や、フロントエンドに今後不可欠となるであろう周辺技術情報が得られる書籍を4冊紹介します。紹介者は、宇野 陽太、藤田 智朗、中島 直博、杉浦 有右嗣です。
本シリーズにおける「書籍」について
本シリーズでの「書籍」とは、紙の書籍だけでなく電子書籍も含みます。中にはWeb上で公開しているものもあります。
指針に沿ったレビューができるように
著者:上田 勲
コードを書くときの指針についてまとめた本。個々の項目は、インターネットなどで一度は見たことがあるようなものもありますが、「それはなぜか」「どうすればいいのか」というところにも言及していたり、 他の項目と関連付けされカテゴライズしてまとめられているので、読みやすい内容になっています。
こんな人におすすめ
コードレビューをするときの視点や、判断に迷う場面が多かったので、同僚の奥野に相談したところ、この本をすすめられました。
コードを書く人・レビューする人全般におすすめしますが、「レビューを任されたけど、どういう点を指摘すればいいかわからない」「レビューで指摘されたけど、なんでダメだったのかわからない」というような経験のある人には特に良さそうです。
おすすめポイント
この本を読むまでは、それまでの経験をもとに「なんとなくこっちのほうがいい気がする」「どちらかといえばこっちのほうが好み」というように、明確な根拠のないレビューをしていました。この本を読んで、なんとなく感じていたことが間違いではなかったのを確認することができました。それと併せて、しっかりした根拠が得られたことによって、レビューの判断に迷っていたようなところでも、指針に沿ってレビューすることができるようになったので、レビュー時間も短くなった気がします。
また、レビューだけではなく自分でコードを書く場合においても、指針に沿うことで、漠然としていた「良いコード」が自分の中ではっきりしたものになりました。レビュアーや、チームメンバーに「なぜこういうコードを書いたか」ということを、コードで伝えやすくなったように思います。
自分の場合はレビューで悩んでいたことがきっかけだったので、こういう感想になりましたが、単純に「良いコードを書きたい」と思ってる人にもおすすめできるのではないかと思います。
(フロントエンド・エンジニア:宇野 陽太)
高品質なプログラミングをするために
著者:Steve McConnell、翻訳:クイープ
ソフトウェア開発の方法論を幅広く網羅した入門書で、上下巻に分かれています。上巻は設計やプログラミングの話が中心になっています。開発者が陥りやすいBad Codeの具体的な例を挙げ、何が問題でどのように改善すべきなのかを解説してくれます。また、序盤にはそういった陥りやすい問題を建築業界で実際に起こった失敗になぞらえて説明する箇所もあり、興味深い内容になっています。
こんな人におすすめ
ピクセルグリッドの中村がすすめていた一冊で、かつ、奥野にすすめられて見たt_wadaさんのスライド、【改訂版】PHP7で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 内の紹介で一番多く登場していた書籍です。
高品質なプログラミングを体得したい人におすすめします。また、第8章の内容に限定されてしまいますが、アサーションとエラー処理をどのように使い分け、アサーションはどのように使うべきかを知りたい人が読むと良いと思います。
おすすめポイント
高品質なプログラミングをつくるための設計時点での考え方や、オブジェクト指向におけるクラスを作る際の注意点などが網羅的にまとめられており、問題のあるコードを例に出して、「このままだといずれどのような問題が発生しかねないか? ではどのように改善するべきなのか」がわかりやすくまとめられています。
また、アサーションをどのように書くべきかといった情報を得られる書籍はなかなかないと思いますが、第8章でそのことを詳しく学ぶことができます。前述したt_wadaさんのスライドと併せて読むと非常に勉強になります。
(フロントエンド・エンジニア:藤田 智朗)
Three.jsを学ぶきっかけに
著者:Jos Dirksen、翻訳:あんどう やすし
Three.jsの基本的なことから応用までを、段階に分けて細かくコードとサンプルを示しながら解説しています。これを読めばThree.jsをどう使えばいいのか、どんなことができるのかを一通り知ることができます。
ただ、ページ数が400ページを超えます。リファレンス的な使い方にはあまり向いてないように思うので、読むのに根気が必要です。
こんな人におすすめ
Three.jsに触れるにあたって取っ掛かりがほしかったのが、本書を読んだきっかけです。3Dに興味はあるけど何からやったらいいかわからない人、もしくは特に作りたいものがないけどThree.jsに触れておきたいと思ってる人におすすめできます。
おすすめポイント
すごく丁寧に段階を踏んで解説しているので、JavaScriptがある程度わかっていれば、Three.jsの使い方が把握できます。日本語版にはMMD*を扱う方法が付録として付いてくるので、とりあえず3Dモデルを動かして遊んでみたい、という場合にもよいかもしれません。
*注:MMD
3DGCソフトウェアのMMD(MikuMikuDance)で扱える3Dモデル形式のことです。
(フロントエンド・エンジニア:中島 直博)
HTTP/2の全容とネットワーク関連のトピックを知る
著者:渋川 よしき
HTTP 1.0から始まり1.1、そして2へと、Webの歴史とHTTPの進化をあわせて学ぶことができます。HTTPというプロトコルの仕組みから、ブラウザ内部の動作、サーバーとのやり取りについても解説しており、その他のネットワーク関連のトピックスも幅広く網羅しています。
こんな人におすすめ
HTTP/2について、普及する前にきちんと全容を知っておきたかったというのが本書を手に取ったきっかけです。また、著者が前職の同じ会社で、すごく優秀なエンジニアだと知っていたからということもあります。
慣れ親しんでいるはずのHTTP/1.xおよび、この先もこの業界にいるなら必ず使うであろうHTTP/2について、きちんと把握したい人。最近のWeb技術のネットワークレイヤーの進歩をまとめてキャッチアップしたい人。そんな人たちにおすすめです。
おすすめポイント
HTTP自体の解説だけでなく、このプロトコルを使ってどういうことができるのかの具体例までカバーしているところがよいです。
またHTTPだけでなく、WebSocketやWebRTC、HLSやDASHなど、ネットワークに関するトピックスのカバー範囲がとにかく広いところ。この分野のことを調べるときには、何から調べていけばいいかわからなくなることがよくあるので、そういう取り掛かりとしてはとてもよいと思います。
GoでHTTPクライアントを実装するセクションも多分にあり、サンプルコードも充実しているので、Goに興味がある人にもおすすめです。
(フロントエンド・エンジニア:杉浦 有右嗣)
ここまでのまとめ
今回はコードを書くスキルを上げるための書籍や、フロントエンドに今後不可欠となる周辺技術情報が得られる書籍を紹介しました。後編となる次回は、プログラムやコーディングを支える周辺トピックに関連した書籍を紹介します。