アプリケーションエンジニアが2016年読んだ(積んだ)技術書と2017年読みたい技術書 雑まとめ

January 1, 2017

ブログを毎日書くとかOSSにちょっとずつ貢献してgithubに草生やすとか毎日本をNページ読むとか、日々の積み重ね系の目標は立ててもどうせ達成できないことは(このブログがほぼ更新されてないことからも)目にみえているので、今年も引き続きそのときその瞬間にやりたいことに関する本に全力で課金して熱いうちに読む作戦で行きたいと思います!!!!!

スケジュール

そのときのテンションで読むとは言いつつも長期的にどんな本読むかはなんとなく決めていて、2015年夏くらいにたてた読書スケジュールによると

  • 2015年: 設計系(DDD、PofEAAなど)
  • 2016年: FP関連と意味論、型システム系
  • 2017年: コンパイラ系(ドラゴンブックもしくはタイガーブック)
  • 2018年: 未定

なのでざっくりとは達成している気がするけど、意味論・型システム・コンパイラあたりは「読んだ(理解したとは言ってない)」みたいな感じなので引き続き。。。。。

2016年 読んだ本と積読してる本


DDD / IDDD

新規プロダクトにて、実践する機会があったのでまた読み直し。 思い返すとIDDDを早い段階で読んだほうがよかったなぁと感じた。 手軽にコードに起こせるRepositoryやらなにやらを取り入れてDDDをやった気になっていたけれど、本当に大事なのはモデリングや戦略的手法や整合性(集約)の設計の方で、IDDDは重要なものから順に書いてある気がする。なんかの記事でみた「DDD本の戦術的手法の章は最後に読め」の意味がとてもよくわかった。

Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド

カラフルなコップ本。たぶん今年一番読み直した。というかこればっか読んでた。 Swiftでも関数型プログラミングしたい → Scalaを勉強しようとなって読んだ本で、Scalaはもちろん、SwiftやKotlinのようにOOPとFPが同居している系言語でのFP実践に役に立ちそう。純粋だ〜副作用が〜イミュータブルな〜みたいな基本的なところからFreeモナドまで書いてある。 この本は Webで公開されているChapter Note、もしくはそれをまとめたコンパニオンブック(PDF)を合わせて読むと良いかも。特に モナドの章は知っておくべき圏論の最小限の事(圏、関手、自然変換、随伴、モナド…)がScalaの世界の言葉で書いてあるのでイメージがしやすかったなぁとオモタ。

個人的にはiOSエンジニアは、objc.io - Functional Swift日本語版を読むなら、難しいけどこっちを読んだほうがいいと思いつつも、これを読むことで”FP in Swiftでなにができてなにができないのか”が見えてしまうので、日々Swiftに不満を言いながら仕事することになってしまうかもしれないというデメリット(?)がある。

Real World Haskell―実戦で学ぶ関数型言語プログラミング

めっちゃ分厚いけどすごいH本より丁寧に書いてある。全部は読んでないけど、だいたい書いてあることはカラフルなコップ本と同じな気がする。 Haskellを実務で使うことはないものの、英語が読めれば情報ソースが増えるのと同じで、HaskellができればFPの情報ソースが増えるという理屈でとりあえず勉強は続けている。 最近やっと慣れてきた。。。

プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則

今年出た本の中では一番よかったかもしれない。 というか僕自身オブジェクト指向だ〜hogehoge〜とか言いつつも

APIClient.shared.send(request)

みたいな「インターフェースに対してプログラミングする」すらできていないことが一昨年くらいまで多々あった。もちろんプロダクトの性質やフェーズによってあえて採用しないという 手もあるけれど、原則を守ったからと行って大きく開発スピードが落ちるわけではないので、可能な限りちゃんとして行きたいですね!!

余裕がある人は「オブジェクト指向入門 第2版 原則・コンセプト」の方を読んでもいいかも。

型システム入門 −プログラミング言語と型の理論−

通称TaPL。意識高く毎日図書館に通って読んでたけど、1週目はsubtypingあたりで挫折して積読した。 型力は引き続き高めていきたいので、今年もっかいチャレンジする。

コンピュータの構成と設計

パタヘネ本。上巻読んで、下巻は積んでる。FPみたいな抽象的な方から攻めてくのと同時に下からも攻めようと思って3版を中古で買った。 自分自身はコンピューターサイエンスの専攻ではなかったこともあって、アプリケーションエンジニアとしてコード書いてるだけでは身につかなかったCSの知識をちょうど埋めてくれた気がする。

今年もコンパイラ関連本を読むときのお供にする予定。

Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka

イベントソーシングだーアクターモデルだーとかがマイブームだったときに買って1ミリも読んでない。綺麗に積んであるし、今後どのタイミングで読むべきかわからない。。。。 (読書会もわりと行われたりしているっぽいので、いい本であることは間違いないと思う)

Java並行処理プログラミング ―その「基盤」と「最新API」を究める

最初数章読んで積読してるけど、めちゃめちゃ良い本。もう廃刊してるので中古で高い金払って買った。古い本ではあるけれど、あまりこのあたりの知識を体系的に書いてある本がない(少なくとも僕はしらない)のでどっかで読みたい。

2017年読みたい本


圏論 原著第2版

Awodey本。英語版ならWebでみれるしそれでも良かったかも。 まだ全然読んでないけれど、この本と圏論勉強会の資料動画で圏論の入門くらいはできそう。 「圏論なんて勉強しなくてもいい、モナドなんてデザインパターンくらいに考えておけばいい」とよく言われていたし自分自身もまぁその通りかなぁと思うけれど、やっぱ「モナドは自己関手の圏におけるモノイド対象」とか「Lensは余状態コモナドの余代数準同型」とか説明できたらなんかかっこいいじゃないですか!!!!!! それだけです。そんなもんでいいと思います。

最新コンパイラ構成技法

通称タイガーブック?(検索したらエロサイトばっかでてきた…) ドラゴンブックと迷ってこっちにした。2月くらいからちょいちょい読み始めたい。

その他

きしださんの良いまとめを参考にしつつ、やっぱりTaPLに再チャレンジしたいですね〜〜〜〜

ラムダ計算の勉強のしかた、プログラム意味論 - きしだのはてな

おわりに

こう改めてみると積んでばっかじゃねーか!!!と思うけれどいいんです。全部は読めなくてもそのとき勉強したい知識を本の一部からでも得ることができたら成長だと思うんです。

基本的にはiOSエンジニアとして働いていて、日々Swiftコンパイラと戦っているので、今年こそはぶっ壊れたときにSwiftコンパイラのソースを追ってごにょごにょできるくらいにはなりたい。です。

このエントリーをはてなブックマークに追加