2017年を読んだ本とともに振り返る

僕が2017年の1年間で読んだ本をベースに一年を振り返ります。
書評メインではなく、あくまで個人的な振り返りになります。
が、基本的に駆け込みでざっと書いているため、まとまりの無い文章になっております。ご了承ください。
また以前、本ブログのTech系Podcast『しがないラジオ』をはじめて変わった5つのことというエントリにて、

パーソナリティの間でも議論し、積極的に本を読んでその報告をすることにしました。 結果、技術書を1ヶ月に2~3冊くらいのペースで読むようになりました。

と書いてしまったので、おそらく6月くらいだったとは思いますが、それ以降で実際に読めているのかを確認するためにもこれを書こうと思います。*1

振り返り、という名目なので、途中でやめてしまったものについても、言及します。

最後に、リンクはアフィリエイトリンクになっています。2018年の書籍購入の助けになれば本当に嬉しいので、もし興味をお持ちの本があればこちらから購入していただければ嬉しいです。

1月

はじめてのAndroidアプリ開発 第2版 Android Studio 2対応

Urban Data Challengeという地方自治体を中心とする団体が公開している公共データを活用してアイデアやサービス、プロダクトを作り、競い合うコンテストがあり、僕は友人たちと出場しました。
1月末のプロダクトの提出期限に向けてAndroidアプリを作成しました。Androidアプリは書いたことはなかったですが*2Javaは新卒の研修で3週間ほど学習したため、この本さえ読めば大丈夫なのでは、という話になり年末年始を使って読みました。

できたアプリはこちらです。 histleap -タイムリープ型観光アプリ- 1次審査であえなく敗退したため、このアプリについての詳細は省きますが、Androidアプリを初めて作ってリリースできたのは良い経験だったと思います。 また、

をしっかりめに追うことができたのでそれも良かったです。

この本については、ページ数もある程度ありますが、コード例が豊富にあってAndroidアプリについて順を追って解説してくれているので分かりやすかったのではないかなと思います。
完全に初心者向けのため、少し冗長で簡単なのでは?という部分もあるので、少しでも触ったことがある方はつまらないと感じられるかもしれません。

2月

JavaScriptで学ぶ関数型プログラミング

2月時点で業務ではReactを利用したフロントエンド開発を全体の半分ほどの割合で担当していました。
もう少しJavaScriptについて詳しくなりたいと漠然と思っていた僕は会社の本棚にあったこの本を手に取りました。

第一級関数や高階関数という言葉の存在すら知らなかった僕には、この本はかなり難しいものだったように思います。
実際今何がかいてあったかを詳細に思い出そうにも思い出せない程度には理解できなかったので、もう一度読んでみるのもありかもしれません。

3月

Reactビギナーズガイド ―コンポーネントベースのフロントエンド開発入門

前述の通り、Reactを業務で書いており、2月初旬にできた未経験エンジニアの後輩がReactをやる、ということだったのでこの本を会社に買ってもらって先に読んでおきました。
簡単な表アプリを作ったりするので、Reactの概要をつかむには良い本でしたが、JSXを使わずにcreateClassを使ったりとすでに古い記述がありました。
この辺の本をやってようやく、"React周りのみについては"少しはできるようになったんだなという自覚を得ることができました。

ちょうどこの本は僕が2017年最もお世話になった勉強会であるWe Are JavaScripters!さんのもくもく会に参加した日に発売され、Reactの話をその場でしたことも相まって3月末の人生初LT登壇につながりました。

Reactつながりでいうと、その他にも、React Nativeを、同じくしがないラジオのパーソナリティであるid:jumpei_ikegamiと学習し、錯視を利用した簡単なアプリを作成しました。
React Nativeについては、5月くらいに勉強会にも参加しましたが、書いたのはこれきりでした。 ReactのLearn Once Write Anywhereを実感できたという点で良かったなと思います。

そして3月はPodcastしがないラジオを始めた月でもありました。

4月

なぜ、この人と話をすると楽になるのか

この時期、外部連携などの仕様を詰めたりと他のビジネスサイドの方々と話をする機会が増えてきていました。
前職では、部門や会社をまたいだコミュニケーションが多かったにも関わらず、エンジニアとしてコードを書く、ものを作るようになった自分は、ビジネスサイドの方々とうまく話せない、という問題に当たりました。
そこでとりあえず尊敬するラジオパーソナリティの1人である日本放送アナウンサー吉田尚記さんのこの本を手に取りました。
実際、この本の中では、雑談をある種のゲームと考えて、自分を捨てて話すということが書かれており、確かに普段あまり関わりのない他部署の方と、業務外で話す際に相手が気分が良くなるような話し方をすることは、仕事上重要なコミュニケーションを円滑に回す上で必要なことで、そのコミュニケーションをルールのあるゲームという風に考えてしまうと、ゲームを攻略するために動いてコミュニケーションを成功させる、ということはできるのではないかな、と思いました。
これは現在もまだまだ完全に実行できてはいませんが、これからも意識することになるだろうと思います。
しがないラジオでも、ep.7 楽しい雑談で紹介しているので、ぜひ聞いていただければと思います。

これと同時期に仕事ができる人はなぜモチベーションにこだわらないのかを購入しました。
こちらは半分程度しか読めていないのですが、この購入履歴を見た母*3から「大丈夫か?元気にしているか?」と電話がかかってきたのを覚えています。

Electronではじめるアプリ開発 ~JavaScript/HTML/CSSでデスクトップアプリを作ろう

Reactをやっているということもあって、業務の幅が何か広がるのではないかと思い、購入して読みました。
この本はElectronの本と書かれていますが、Reactの小さな良いサンプルが詰まっている本と考えたほうが良いでしょう。
Electronについても書かれていますが、あくまで入門書で、多くは書かれておらず、何かプロダクトで作ろうという際には公式ドキュメントなどを読む必要があります。
この本を読んで簡単な社内ツールを作ってみました。
Electronは、普段フロントエンドをやっているならば、簡単にGUIを作れるので、ビジネスサイドに感謝されるツールを短期間で作るのにはちょうど良いかなと思います。

5月

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く

ゴールデンウィークに読みました。
普段はPHPのEloquentというORMを利用して簡単なクエリを発行していたり、Sequel Proを用いてMySQLに対してクエリを実行したりしています。
サーバーサイドを書いているならSQLくらいまともに書けない*4といけないだろうということで、評価の高かったこの本を読みました。
巷では「10年本」と言われているようです。
本の概要としては、対象読者はリテラシー高めなビジネスサイドから初級アプリケーションエンジニアなどで、分析の話に絡めて参照系のクエリの基礎から応用までを紹介しているという感じです。
「この商品買った人はこれ買いがち、みたいな分析とかやりたいよね?こんな感じで書くんだよ。さっき紹介したこれとこれを組み合わせて」みたいな感じでかかれていてどういうタイミングで使うのか、を意識して学習することができるので、かなり良かったと思っています。
PosgreSQLを対象に書かれていますが、途中のウインドウ関数以外は、MySQLでもほとんど問題なく使える内容だと思います。
この本を読んで、SQLチョットカケルくらいには成長したと思います。

Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン

5月10日にあったReact反省会にてサイボウズの方がReactを導入するのを会社に広めるという話で紹介されていたのがきっかけで知りました。
僕もエンジニア歴の浅い人間がエンジニア組織、ひいては会社に対してどうやって影響力を持っていくかについて考えないことはなかったので、読みました。
ダラダラと読んでしまったので、結局1ヶ月時半くらいかかってしまいました。
何かを組織に導入するときに必要な48のパターンがエピソードと共に紹介されています。
1つ1つが当たり前のようで実践しきれないことが書かれていていい本だと思いました。*5
常に意識することはなかなか難しいなと感じましたが、時々、今のあの本のアレじゃね?というと気があると嬉しいです。
部内でのKPTのときに一度実践したのですが*6、「何か食べながら」というパターンはすぐに使えておすすめです。
僕がよく聞くPodcastである #omoiyarifmでもコーナーとして、各パターンを紹介されています。

6月

成功するシステム開発は裁判に学べ! ~契約・要件定義・検収・下請け・著作権・情報漏えいで失敗しないためのハンドブック

プロジェクトの失敗はだれのせい? ~紛争解決特別法務室“トッポ―”中林麻衣の事件簿

対個社の仕事はこの時期も続いており、かなり大きなクライアントの仕事が入る気がしたので、契約について学びました。
「あまり受託開発的な仕事をしたくないな〜」と思って事業会社に入ったのでこういうことに手をだすとは思っていませんでしたが、契約とか法律についてよりも、結局は顧客とよく話して良いものを作る、何か不具合があったときは迅速に誠意を持って対応することが重要、ということがどちらの書籍にも書いてあり、そうだよなあと思うと同時に事業会社にいるエンジニアはそのあたりを少し忘れてしまうこともあるかもなという反省があったことが一番良かったと思います。
しがないラジオでも、ep.15 楽しいエンジニアのIT契約入門で紹介しているので、ぜひ聞いていただければと思います。

エラスティックリーダーシップ ―自己組織化チームの育て方

この本は途中で読むのをやめてしまいました。 このブログでもまとめを書いたまつもとゆきひろさんの"若手エンジニアの生存戦略"という勉強会で紹介されていたので購入しました。
雑な感想とメモ【まつもとゆきひろ氏特別公演】若手エンジニアの生存戦略 @DRECOM #colab_matz 20170520

まえがきにもある通り、序盤でざっくりとしたこの本の考えが書かれており、それを読んで少し進んだところで脱落してしまいました。
その後は第6部にて、日本人の有名エンジニアによるエッセイが紹介されているので、時々つまみ食いする、という感じで楽しんでいます。

サバイバルフェーズ、学習フェーズ、自己組織化フェーズ、などチームの状態を言語化して述べてくれていて、そういう考え方はいいなと思いました。
リーダーだけでなく、チームのメンバーもそのチームの状態によって振る舞いを変える必要があるんだなと思うと同時に、それができるのはかなりモチベーション高く、実力がある水準以上で周りで起こっていることが俯瞰できている状態だけなんだろうな、とも思いました。

ZERO BUGS シリコンバレープログラマの教え

こちらの本も2割くらいで読むのが止まってしまいました。
エンジニアとしての様々な心構えが書かれた本、ということで読まなくてはと思い購入したのですが、例えがよくわからなかったのか、語り口が合わなかったのか、あまり面白くなくやめてしまいました。
すべて読んでいないので、なんとも言えませんが、リーダブルコードなどを読むので十分では?と思いました。

5、6月のブログ活動について

5、6月では、自分が参加した勉強会について、まとめと感想をなるべく早く書いてブログにするということを数回しました。
やっていると、公開するのが早ければ早いほどリツイートしていただくことも多く、それだけで承認欲求が満たされるような気持ちになりましたが、メモを取ることに必死になって重要なことを聴き逃しているような気がすることと、あとで公開してくださるスライドのコピーを取ることにあまり意味を見いだせずブログの内容も薄くなってしまうと思ったのでやめることにしました。

7月

食べる!SSL! ―HTTPS環境構築から始めるSSL入門

SSL?なにそれ美味しいの?という状態だったので、読みました。美味しかったと思います。
会社の先輩と話をしていたとき僕がちんぷんかんぷんなことを言い出したときにこれを勧めてくださいました。
amazonのレビューにもある通り、初学者には非常に読みやすく簡単にSSLのことを解説してくれています。
安いですし、分量も多くないので良かったと思います。

サーバーレスシングルページアプリケーション ―S3、AWS Lambda、API Gateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス

こちらのcommpassで公開されていた書籍プレゼント企画にて見事当選したので、読んで、しがないラジオでフィードバックしました。(ep.19 楽しいSPAとサーバーレス)
サーバレス、SPAというトレンドをおさえていて、2017年多く売れた技術書の1冊だと思います。
ピュアなjQueryで画面を作りつつ、Jasmineでテストを書きつつ、AWSのサーバレスなサービスを理解しつつと、1冊で多くのことを学べる本でした。
業務でフロントエンドの開発をしているとはいえ、ES6で書いたReact.jsしか経験がなかったため、jQueryで1からSPAを構築していく、さらにJasmineでUIのテストも書く、というのは面白く読み進めることができました。
また、AWSのいろいろな機能を簡単に使うというところで、ざっくりとした概要をつかめたことも良かったです。

またポッドキャストの中での発言を監修されている方に取り上げていただきました。

特にポッドキャストでは「雑にアウトプットする」というのを意識的にやっていますが、それによって良い学びが得られた素晴らしい体験だったと思います。

8月

Guide to ScalaーScalaプログラミング入門

社内で、PHPで書かれているサーバーサイドを徐々にScalaに移行したいという話が、2017年の年始より出ていました。
年始から主要なメンバーの転職もあって難しかったのですが、そろそろ本格的に考えるか、となったのでこちらの本を読みました。
Scalaといえば、コップ本がバイブルとして有名ですが、まず初心者が簡単に触る分にはこちらの本は分量的にも値段的にもちょうど良かったように思います。
ざっと書きつつ読みましたが、結局2018年1月現在で社内のScalaのプロダクトコードは1行もなく、PHP5.6 => PHP7.2移行を進めよう、という段階なので違うパラダイムの言語の学習ができてよかった、くらいの気持ちでいます。

ダークサイド・スキル 本当に戦えるリーダーになる7つの裏技

4月に「なぜ、この人と話をすると楽になるのか」を読んでから、コミュニケーションに対してある種ドライなスタンスの取れる、"清濁併せ呑める"ような人間になりたいとぼんやり思っていて、この本がamazonで目に入ったので購入しました。
ただ、この本はある程度大企業の中間管理職、30代後半から40代をターゲットに書かれた本のようで、組織をまたいだ人脈の作り方、チーム運営時の判断の方法論などが書かれており自分が求めているものと少し違うな、というふうに感じて6割くらい読んだところで脱落してしまいました。

9月

ザ・コーチ

こちらの本は、しがないラジオのep.20 楽しい!?目標設定のエピソードに対して、リスナーのid:tbpgr さんがフィードバックとして紹介してくださった本でした。
はじめは、会社の目標設定が難しいということを話していましたが、自分のエンジニアとしての目標にも話が広がりました。
この本は目標、目的、夢、ビジョン、ゴールといった、違いが曖昧な言葉たちについての詳細な説明から始まり、それらを決めていく過程、決めてから実行する過程を小説ベースで読者に伝える自己啓発本です。
読んだ感想などをep.25 楽しいエンジニアがマネージャーをやる理由で話しています。

2017年は、インプットもアウトプットもそのときどきの流れで無計画に行ってきましたが、より大まかな進みたい方向をしっかり決めていきたいと思っています。
本当にそんなことできるのだろうか、と思ったりしますが、確かに周りにできている人はかなりいます。
2018年はよりそれをより明確に描けるようにして、第1歩が踏み出せれば良いかなと思います。

わかばちゃんと学ぶ Webサイト制作の基本

LT loversというイベントで知り合い、そこからしがないラジオでもゲスト出演していただいている湊川あい(Twitter @llminatoll)さんの本です。
普段からエンジニアとして仕事をしているので対象読者ではありませんでしたが、出演してくださるということで予習として読みました。
Webサイトを制作、運用するための必要な知識がマンガでわかりやすくまとめられていて、初心者の方が概要をつかむにはすごくいい本だと思いました。
特に、文字でわかりづらいポイントを絵で理解できること。ただ単に作るというだけでなく何のために作るのかを考えることが必要だ、と説明してくれていること。が非常に良いなと思いました。

どのような思いを持って書かれたか、著者の湊川あいさんがどのような人柄なのかについては、

で語られています。

10月

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

こちらも湊川あいさんの本で、Gitの初心者のための本でした。僕は普段からGitである程度のことは自分で調べつつできていたため、対象の読者かというとそうでもないかなという感じでした。
しかし、この頃、社内のデザイナーの方がHTML、CSS、JSなどのコーディングもチャレンジするということで、フロントエンドを担当していた僕がGitについての質問を受けるが多くなっており、この書籍を購入し、その方に読んでもらうことにしました。
すると、瞬く間にある程度のことは1人で問題なくこなせるようになっていました。
僕も経験がありますが、Gitは少ししか触っていないとオーバースペックに感じることがあったり、概念的に字面だけではわかりづらい部分があったりするためマンガというアプローチはすごくいいなと思いました。
すすめるにあたり僕も読みましたが、rebaseなど、必要なときに調べ、理解もそこそこに忘れてしまうことなどがあったので、これ一冊で業務で使えるレベルになる良い入門書だなと思いました。

テスト駆動開発

普段聞いているPodcastである#ajitofmのAjitofm 6: Worse Is Betterajitofm 13: Test Driven Developmentにて訳者のid:t_wadaさんを交えて紹介されており、それを聞いて読みました。
それまで、ユニットテストはなんとなく書いていましたが、実際それが意味のあるものなのかわかりませんでしたし、それによって救われたなということも特になく、よくわかっていませんでした。そういうことへの理解が深まるのだろうなと思って読みました。
しかし、この書籍を読んでから理解ができたのは、ユニットテストが意味のあるものなのか、とか、テストによって変更を加えた際のミスに気づいて救われた、などはテスト駆動開発の目的とは違うのだということでした。
僕の理解ではテスト駆動開発で重要なのは、機能追加の前にテストを書いて、追加する機能について考察し理解し設計する、ということなのだと思いました。
そういう意味で、僕の当初の期待はうまく満たされませんでしたが、 id:t_wada さんの推奨する写経の方法をいい感じに実践できたりすることができ、楽しく読み切ることができました。

この辺の話は、ep.28 楽しい『新訳版・テスト駆動開発』の読み方でも話しています。

11月

Java言語で学ぶデザインパターン入門

しがないラジオでは10~12月とゲスト回が続き、多くの方がこの書籍を紹介されていました。
業務などでも「デザインパターンでいうアレだよ」、みたいな会話があり、読むとより実のある議論ができるのではないかと、購入し読みました。
はじめの3章は、前述の通りの写経をしたのですが、他の本も読みたいなということで、それ以降はざっと読むことをしました。
すでに読んだことのあった同僚と話すときに意識して「ファクトリーで」などと会話してみることでパターン・ランゲージの強さを認識することができました。

nginx実践入門 (WEB+DB PRESS plus)

業務でnginxを触る必要ができたので急ぎ購入しざっと読みました。前半特にリファレンス的な要素が強買ったため、あっさりと読み、触りつつわからなければ参照するという読み方をしました。
nginxについてまとまりがって読みやすい日本語の本はこちらくらいなんじゃないかなと思います。
今まではすでにあったnginxの設定を見てもわけがわからず、そのあたりで何か不具合があっても手も足も出ないという感じだったのですが、読めるようになり、怖さがなくなったのが良かったです。
業務では、アプリケーションの状態によってリクエスト先のサーバを変えるという処理を今回の実装でnginxの役割として実装しました。
その部分がnginxでやるべきことなのか、アプリケーション側でやるべきことなのか、ということが未だによくわかっておらず、そのへんも今後学習していきたいです。*7

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

こちらも、上記のnginxと同様に必要に迫られたので会社の本棚から借りて読みました。
しかしながら、元あったChefのコードをベースに書いたため、公式サイトで事足り、導入部分のみ読みました。

まとめ

12月はふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道を読み始めましたが、いろいろあって、全く進めることができませんでした。
1月上旬でとりあえず読みたいです。

これまでざっくり2017年に読んだ本を振り返りました。
インプット量は思っていたよりも少なく、少しがっかりしました。
また、学んだことについて思いのほか忘れていることが多く、Podcastだけでなく、文字でも一冊一冊でまとめておこうと思いました。 振り返りは、途中でも書きましたが、以下に尽きるのかなと思います。

2017年は、インプットもアウトプットもそのときどきの流れで無計画に行ってきましたが、より大まかな進みたい方向をしっかり決めていきたいと思っています。 本当にそんなことできるのだろうか、と思ったりしますが、確かに周りにできている人はかなりいます。 2018年はよりそれをより明確に描けるようにして、第1歩が踏み出せれば良いかなと思います。

とりあえずまとめたので、もしかすると読み返して追記するかもしれないです。

*1:この言及はかなり微妙で、技術書以外を含めても振り返るとそこまで読んでませんでした。すごい、とおっしゃっていただいた方が何人かおられたのに本当に申し訳ないです。

*2:というかその当時Android端末を持ってすらいませんでしたが

*3:母は僕が昔使っていたkindle保有しているので僕が買った本は全て知っている

*4:いや~な苦手意識、ありますよね?

*5:いい本はそういうのが散らばりがちじゃないですか?

*6:続いていないです

*7:今回はもろもろの事情によりアプリケーションに手を入れないでなんとかするという制限がありました。