エンジニアに贈る2016年発売の良書3冊!

エムティーアイ Advent Calendar 2016 の24日目です。

こんばんは、三田です。 クリスマス・イブですね。世の中はすっかりクリスマスムード。 いろいろなところにサンタクロースが出現していました(笑)

というわけで、「エンジニアに贈る2016年の良書3冊」と題して、2016年に発売されて(私が個人的に)読んだ本の中から、ぜひエンジニアにおすすめしたい3冊を紹介したいと思います。ただ、3冊だけだと少ないかなと思ったので、過去に読んだおすすめ本も3冊紹介させていただくことにしました。ぜひ、参考にしてみてください。

2016年発売の良書3冊!

さて、それでは早速紹介していきたいと思います。

Cloud First Architecture 設計ガイド(日経BP)

「クラウドファースト」 な 「アーキテクチャ設計」 について学べます。クラウドファーストというのは、システムを開発するときにまずクラウドを前提に考え、クラウドで提供される多種多様なサービスを「所有せずに利用」していくことです。

この本では、前半でクラウドファーストとは何かということを技術的な内容や2000年代のソフトウェア開発の歴史をひもときながら解説してくれています。特に、3章の「クラウドファーストに至るまでの歴史」では、アジャイルやDevOpsなどがなぜ、どのように登場して今に至るのかを知るとてもわかりやすい読み物になっています。

後半は、アーキテクチャ設計の基礎とかかえる問題、それらをクラウドを使って解決するための手法としてマイクロサービスアーキテクチャについても触れられています。

なぜクラウドを使うのか、なぜアーキテクチャが必要なのかを考える最初の1冊にぜひ!

マイクロサービスアーキテクチャ(オライリー)

2016年はマイクロサービスアーキテクチャを語らずには済まされないのではないでしょうか。広まってきたが故に、最近ではマイクロサービス化した時のチーム運営の難しさなども話題に上ることも多くなってきています。

この本は、モデル、アーキテクト、テスト、デプロイ、環境、セキュリティといったマイクロサービスに関連する内容を網羅的に扱っています。前述の「Cloud First Architecture 設計ガイド」の次に読む1冊としてぜひ。

個人的には「逆向きのコンウェイの法則」の話が好きです。適切なシステム構造によってチームや組織の構造を適切な状態に変えていくという内容で、難しいテーマですが常に挑戦していきたいと思っています。

SOFT SKILLS ソフトウェア開発者の人生マニュアル(日経BP)

エンジニアに向けた自己啓発書的な本で、ビジネス書を読み慣れない方にはとっつきづらいかもしれないなと思います。実際、文中では「金持ち父さん、貧乏父さん」(ロバート・キヨサキ)や「人を動かす」(デール・カーネギー)などの著名なビジネス書が紹介されていたりもします。

最後の方の解説パートがRubyの生みの親である、まつもとゆきひろ氏によって書かれているというのも興味深いなと思いました。内容的には、エンジニアとしてのキャリアの築き方や学び方、体や心のケアなどの実践的な内容がたくさん書かれています。個人的に好きなのは2章です。現時点で自分自身に足りていない行動も多いのでこれからもっとトライしたいと思います。

  • コードを書く
  • ブログを書く
  • 人前で発表する
  • 恐怖を克服する 「バカにされることを恐れるな」

この本は、これからエンジニアを目指す学生の方、キャリアアップを考える現役エンジニアの方、エンジニアという人種を理解しようと考えている人事担当の方など様々な方にオススメできる1冊です。

過去のおすすめ3冊!

過去に出会った良書たちを紹介したいと思います。

新装版 達人プログラマー 職人から名匠への道

プログラマになりたての頃に新装版じゃない方を読んでとても感銘を受けました。自動化とかユニットテストとか今では当たり前のことが当時はほとんど普及していなかったので、読んでいて目から鱗だったのを思い出します。

個人的に好きなのは「石のスープと蛙の煮物」という章です。

  • 石のスープ=変化の触媒
    • あらすじ書こうと思いましたが、このお話は面白いので是非読んでみてください。
  • 蛙の煮物=変化に気づかない。いわゆる「ゆでガエル」のお話です。
    • 初めから熱い鍋に蛙を入れたら逃げるが、最初は水で徐々に熱くしていくと蛙は自分がゆでられていることに気づかず「蛙の煮物」になってしまう

ちなみに、原題は「Pragmatic Programmer」で、「Pragmatic = 実践的な」を「達人」と訳してくれたのは秀逸!と思いました。

同じ著者の「リファクタリング・ウェットウェア」という本もおすすめです。

エリック・エヴァンスのドメイン駆動設計

元祖DDD本です。原著は2003年の発売ですが、日本で翻訳されたのは2013年です。存在を知った2007年頃は日本語版がなかったので、原著の読書会に参加したり後述するQuicklyなどの日本語版(2009年)で学習していました。

設計のパターン本と思われていることが多いですが、実際は設計についての思想というか考え方の本といった方が適切です。語弊を恐れず超要約するとこんな感じです。これらをベースにドメインや設計について語られています。

  • とにかくモデルが大事(モデル駆動設計)
  • 業務よりの人もエンジニアも同じ言葉で話す(ユビキタス言語)
  • プログラマーがモデラーであれ(実践的モデラ)

最近のクラウド技術の進歩でマイクロサービスアーキテクチャが語られるときに、DDDについても語られることが多くなったと思います。特に「コンテキスト境界」あたり。

Domain Driven Design Quickly

・・・600ページのボリュームと(冗長とも思える)文章も多く読みにくいと感じることもあるのですが、得られる価値はとても大きいと思いますのでおすすめです。

この本の後に、「実践ドメイン駆動設計」を読むと理解が深まると思います。

関連書籍で、ファウラーのいわゆるPofEAA本 「エンタープライズアプリケーションアーキテクチャパターン」も読めるとなおy。DDD本とPofEAA本で、ドメイン、サービスといった同じ用語を当てているが意味しているところが少しちがうものについて、理解を深めることは大切だと思います。

テストから見えてくる グーグルのソフトウェア開発

Googleのテストに対する取り組みについて書かれた本です。テスト駆動開発やテストファーストを組織ぐるみで取り組んでいるとも言えるGoogleの職種、組織、テストの考え方などについて書かれています。

「グーグルでコードを書く人はすべてがテスターであり、品質は彼ら全体の問題なのである(1章から引用)」とあるようにテストや品質がスピードと同様に重要視されています。Gooogleでは、これらを両立させるための仕組みとしてテストに関して役割の異なるいくつかの職種があり、テストプロセスも構築されています。

個人的には、「ソフトウェアエンジニア・イン・テスト(SET)」という職種に少し憧れを感じます。ソフトウェアエンジニアが書くプロダクトコードにテストコードを書いて品質とカバレッジを向上させる役割で、テストのスキルを持ったソフトウェアエンジニアなのです。プロダクトコードを書くエンジニアよりも高いスキルを要求されるこの役割の人を、組織としての取り組みで増やすことに成功したことがGoogleのすごいところだと思います。

Googleでもテストには苦労していたし、今もきっとし続けているということを知りつつ、それに立ち向かうために彼らが何を考えていたのかを知ることはとても役に立つと思います。

おまけの2冊

ここからは番外編で、書評というより感想を中心に。

Think Simple ―アップルを生みだす熱狂的哲学

スティーブ・ジョブズの強烈な個性に目が行くことも多いのですが、一貫してシンプルに考えているんだということを読んでいて痛感した1冊です。同僚に紹介してもらって2年くらい前に読みましたが、あまりにインパクトがありすぎてその後何人もの人に紹介してしましました。

新エバンジェリスト養成講座

勉強会などでのLTをはじめ、プレゼンをする機会が増えてきている中で、良書だと思います。単なるプレゼンの教科書ではなく、相手の行動を変えることを目的としてノウハウが余すところなく書かれていました。以前に一度養成講座を受講したことがありますが、著者ご本人のプレゼンスタイルが最新のノウハウであると感じました。

まとめ

さて、最後までお読みいただきありがとうございました。関連書籍も含めると10冊以上紹介してきましたが、いかがだったでしょうか。これからの年末年始、少しでもみなさんの読書生活が有意義になることに貢献できたら幸いです。