やってよかった読書会技術書7冊

## はじめに

テックタッチアドベントカレンダー1日目を担当する[@taisa831](https://twitter.com/taisa831)です。

エンジニアとして35才を迎えたのもあり、振り返りも兼ねてこれまでやってきた読書会の技術書についてまとめてみました。本記事では主に「書籍について」よりも、「その時なぜその本の読書会をしたか」「やってどうだった」を主に書いていこうと思います。覚えている限り時系列順に並べています。

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/4797327030/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4797327030&linkCode=as2&tag=joghmasami-22&linkId=2e8816b45defaddfd85087a769bffd4a">増補改訂版Java言語で学ぶデザインパターン入門</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4797327030" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4797327030/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4797327030&linkCode=as2&tag=joghmasami-22&linkId=24dfa032b95341c80375a16e5915ddc5"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4797327030&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4797327030" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

自分がSIerからWeb業界に来てはじめてやった読書会の書籍です。元々自分がいた業界は比較的閉じられた世界だった為、まず「読書会」という文化があることに驚いた覚えがあります。

この時は会社のサービスが急成長しはじめ、新しくエンジニアが入ってきた時期でした。また一方でスピード優先で作られたプロダクト側は技術的負債が問題になりつつある状況でもありました。こういった背景とその時にいたエンジニア、新しく入ってきたエンジニアの興味が一致したのもあり、本書籍の読書会をすることとなりました。

「デザインパターン」自体については、あくまで手法の一つではありますが、エンジニアの「共通認識」としてあると便利な時があります。この読書会の3年後位に、新卒未経験エンジニアが増えてきたときがありました。その時、どう実装するとよりよいか、ということを伝えるのが難しくなってきました。その時に（いろいろ考えた上最終的に）本書籍の（簡単な）読書会をし「共通認識」を持つことでプロダクト開発を円滑にしようと取り組んだことがありました。

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/487311697X/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=487311697X&linkCode=as2&tag=joghmasami-22&linkId=fc37f387be3cc1b39bac3d9336d4a49c">アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=487311697X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/487311697X/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=487311697X&linkCode=as2&tag=joghmasami-22&linkId=a1b9da59f912e12a154dba699a02931d"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=487311697X&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=487311697X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

読書会の書籍には「メジャーな本」か「1人で読むのは大変」な本が対象になりやすいです。本書籍は後者です。本書の「対象読者」は以下であり、自分も対象読者にしっかりあてはまりました。


> 対象読者
> 本書は、プログラミング言語と計算理論に興味のあるプログラマ、特に数学やコンピュータサイエンスのバックグラウンドのない人の為に書かれています。

コンピュータサイエンスのバックグラウンドがない人の為に`Ruby`でやさしく書かれていますが、それでも1回の読書会で数ページしか進まない程、自分にとっては大変難しい本でした。ただこの書籍を頑張って読んだお陰で、コンピュータサイエンスの根源に触れられた気がしました。日本語版書籍の「まえがき」を見てみると、このようなことが書かれていたので載せておきます。


> いろいろなものにはその根源というものがあります。普段生活している中で、万物の根源について考えることはあまりありませんが、私たちを取り囲むすべての物質は原子から、それらの原子もよりちいさな素粒子から構成されています。
> 
> プログラミングでもそうです。普段私たちはWebアプリケーションを開発したり、テキストデータを処理したりする時に、めったに根源的なことについて考えません。ただ、デザインし、処理の手順を考え、それをコードに変換するのです。しかし、原子がなくては物質が存在できないように、プログラミングもその背景となる根源的な存在がなければ成立しないのです。
> 
> まつもとゆきひろ

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/4873116341/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873116341&linkCode=as2&tag=joghmasami-22&linkId=89837b7f84ed53a778b74b5ab9fa5611">入門 データ構造とアルゴリズム</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873116341" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4873116341/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873116341&linkCode=as2&tag=joghmasami-22&linkId=06d24fe1a779e2981002e8b0e1cc2562"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4873116341&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873116341" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

本書籍の読書会をした動機も「アンダースタンディング コンピュテーション」と同じです。興味はあるけど1人で読むには辛い系。サンプルコードはC言語で、計算量やアルゴリズムについて書かれています。順番に進めていくのはなかなか大変なので、少しでも興味のあるところを優先して進めていきました。

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/B00UX9VJGW/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B00UX9VJGW&linkCode=as2&tag=joghmasami-22&linkId=1b351b9654e1d46a368a2472ee6478d6">実践ドメイン駆動設計</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=B00UX9VJGW" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B00UX9VJGW/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B00UX9VJGW&linkCode=as2&tag=joghmasami-22&linkId=0cb41324f0fe761528f84a10b262af3f"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B00UX9VJGW&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=B00UX9VJGW" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

DDDについては本書籍しか読んだことがないので分かりませんが、本書を通してDDDの世界を少し知ることができました。日本語訳か書籍自体の特徴かは分かりませんが、言い回しが難しいところがあるので「ここってつまりこういうことがいいたいんだよね？」などと確認し合いながら読み進めました。

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/4873115655/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873115655&linkCode=as2&tag=joghmasami-22&linkId=bc0cf28e3114ba8b75ec8d30bf5e78cb">リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873115655" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4873115655/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873115655&linkCode=as2&tag=joghmasami-22&linkId=a759a3fcc229a0cc1ce75ee20e1c6810"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4873115655&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873115655" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

本書籍は1つ目で書いた新卒エンジニアが多くなってきたときに読んだ書籍です。比較的読みやすい上に効果が高かったと思います。全3回くらいで読書会を終え、最後に各自で既存プロダクトの気になる箇所を見つけ「リーダブルコード」変えて発表するということをやりました。

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/4873114888/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873114888&linkCode=as2&tag=joghmasami-22&linkId=76ba6a655ad99c287fafdf128756e154">JavaScriptパターン ―優れたアプリケーションのための作法</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873114888" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4873114888/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873114888&linkCode=as2&tag=joghmasami-22&linkId=831821bc80d616f5408c8a058304b075"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4873114888&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873114888" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

数年前にたまたま参加して今でも月1で継続してやっているJS勉強会（Okachi.js）で取り上げていた本です。当時の自分は、モダンJSのキャッチアップを始めている時で、新しいプロダクトに入れるJSのフレームワークを選定している時でした。同時に、JavaScriptについても学習しなおしはじめていたので良い機会でした。個人的に「<a target="_blank" href="https://www.amazon.co.jp/gp/product/4873113911/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873113911&linkCode=as2&tag=joghmasami-22&linkId=4ed2e96c4f9855baeda21b6d9e8d3c55">JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873113911" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />」も同じ時期に読んでいました。本書籍にも第7章に「デザインパターン」が出てきますが、それなしにもとても良い本だと思います。

外部の読書会の場合、`React`が得意な人、`Angular`が得意な人、`Vue.js`が得意な人、`Go`や`Python`が得意な人など様々なバックグラウンドを持ったエンジニアが集まるので、そこで情報交換をしたり「最近こんな技術があるよ」といったLTをしたりして読書会とは別のことでもいい刺激を受けます。

## <a target="_blank" href="https://www.amazon.co.jp/gp/product/4873116864/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873116864&linkCode=as2&tag=joghmasami-22&linkId=03a8469f8ffed1a461d3976ff998dedf">Web API: The Good Parts</a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873116864" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4873116864/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4873116864&linkCode=as2&tag=joghmasami-22&linkId=c788efae7d797bf326e215b2ae335fab"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4873116864&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=joghmasami-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=joghmasami-22&l=am2&o=9&a=4873116864" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

本書籍も上記勉強会で輪読した本の1つです。ボリューム的に1人でも比較的さらっと読めますが、輪読会でじっくり読んでいくと「自分はここで迷う」とか「自分はこっち派」とかいろんな会話ができて面白かったです。また各章の最後には著者が色々調べたり比較したりした上で「このやり方がおすすめ」と書いてくれています。

## おわりに

読書会を通して、1人ではなかなか読むのが大変だという本も、会話をしながら読書会をしていると、会話の中で理解できたり理解が深まったりすることがありました。軽く読み飛ばしていたけどこんなことも書いてあったんだと気づくこともありました。各方面のエンジニアが集まって読書会をすると、進めながら関連した別の技術の話ができたりするのも楽しみの1つかなと思います。その時「なるほど」と思っても結構忘れていることも多いので予習復習大事だなと最近思ったりしています。

明日はミスティこと[@smith](https://qiita.com/smith-30)の「初めてのECS」です！