【書評7冊】エンジニアが長風呂で読みたい本を感想付きで紹介します

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

我々がお風呂に入る理由を挙げるときりがりません。

  • 寒いから
  • 暑いから
  • すっきりするから
  • 風呂あがりのBeerがとてつもなく美味しいから
  • ひいきの野球チームが大差で負けてるから

浴槽につかっている時間はよいものです。ぶちあたっている問題の解決策を思いついたり、革新的なアイデアが湧くのは会議室でも現場でもなく、風呂です。頭の整理にもすごく良いですが、本を読むのも良いです。そんな、ゆったりタイムのお供におすすめしたい本をいくつか紹介します。

エッセンシャル思考 最少の時間で成果を最大にする

カバー画像 タイトル
Amazon.co.jp: エッセンシャル思考 最少の時間で成果を最大にする eBook: グレッグ・マキューン, 高橋璃子: Kindleストア Amazon.co.jp: エッセンシャル思考 最少の時間で成果を最大にする
eBook: グレッグ・マキューン, 高橋璃子: Kindleストア

エンジニアにかぎらず、すべての社会人にとって「整理するとは何か」というところに立ち返るための1冊です。常に、「自分にとって、大事なもの、ゆずれないものは何か?」を自問自答することがエッセンシャル思考のベースにある、ということが一番伝えたい内容だと解釈してます。ものごとを判断するときに、「やらない」「捨てる」という選択肢が(採用するかどうかは別として)増えたと感じてます。

  • より少なく、しかしよりよく。大事なことは少ない。何をとり、何を捨てるべきか?自問自答せよ。
  • 大事なこと以外は断る。その結果として、質の高い仕事ができ、他の雑多な仕事に振り回されることなく、毎日を楽しむことができる。
  • 絶対的にイエスだと言い切れないなら、それはすなわちノーである。みんながやっているからやるのではなく、まさに自分が求めていたからやる。
  • すすんで損切りをする。もしまだ1円も払っていないとしたら、今からこの計画に投資するだろうか?

Webを支える技術

カバー画像 タイトル
Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus) : 山本 陽平 : 本 : Amazon Webを支える技術 -HTTP、URI、HTML、そしてREST
(WEB+DB PRESS plus) : 山本 陽平 : 本 : Amazon

あまりにも有名すぎて説明がいらないかもしれない1冊。入社当時、APIの設計や実装にがっつりたずさわることになったので、改めて読みなおしました。HTTPのナレッジリファレンスとして活用するのも非常に良いですが、私が気に入っているのはWebの原点、思想、妥協点を、歴史から再認識できるところです。

1990年11月12日、スイスのCERN(欧州原子核研究機構)で働いていたTim Berners-Leeが、インターネットベースの分散情報管理システムとしてWebの提案書を書いた。それを、イリノイ大学のNCSA(米国立スーパーコンピュータ応用研究所)が公開したブラウザMosaicによって普及した。相互運用性を確保するため、Berners-Leeが中心となってW3Cを設立した。HTTP1.0と1.1の使用策定に関わったカリフォルニア大学アーバイン校の大学院生だったRoy FIeldingがWeb成功を決定づけたとしてアーキテクチャスタイル「REST」を博士論文として提出した。

エンジニアのための図解思考 再入門講座

カバー画像 タイトル
Amazon.co.jp: エンジニアのための図解思考 再入門講座 電子書籍: 開米瑞浩: Kindleストア Amazon.co.jp: エンジニアのための図解思考 再入門講座
電子書籍: 開米瑞浩: Kindleストア

思考は大部分が文章です。ただ、それだけではうまく結論が出なかったり、遠回りしてしまうことがよくあります。プレゼンや資料作成を行うとき、すなわち「誰かに思考してもらうとき」と同様、自分のための解釈を助ける図があると思考の進み具合が圧倒的に違います。本書は、実現したいことのシーン別に、図解戦略をプロセス重視で解説してくれます。

また、図解は自身の思考だけでなく、コミュニケーションも助けます(書籍の中でも言及されています)。議論が噛み合わなくて、よくよく話してみると前提が全く違った、想像しているコンテキストが正反対だった…というのはどうしてもあるものです。そんなとき、「表」や「モデル」を使って意見を分類してみると、前述のような事実がすぐにわかることもあります。ものごとを効率的にすすめるための「図解」という武器を手に入れる意味ではそばにおいておきたい一冊です。

私はものごとの仕組みを理解するために「メカニズムモデル」を描く(想像する)ことで前提認識誤りやコンテキスト不足が解消できるようになってきたと感じています。これは何も実装の話だけではなく、ビジネスモデル、組織構造、家計収益モデル、いろいろなところで活躍すると信じています。

そして「情報を図解する」ことは、「考える」ために大いに役に立ちます。図に描くことで、断片的な情報がつながり、意味が見えるようになり、情報の過不足が明らかになり、間違いに気づくことができます。情報の過不足や間違いがわかれば、それを手がかりに人は考えることができるわけです。

Javaマルチスレッド入門: 並行処理の最新API対応

カバー画像 タイトル
Amazon.co.jp: Javaマルチスレッド入門: 並行処理の最新API対応(改訂第2版) 電子書籍: 小松正樹: Kindleストア Amazon.co.jp: Javaマルチスレッド入門: 並行処理の最新API対応(改訂第2版)
電子書籍: 小松正樹: Kindleストア

安いです。業務でAkkaを触ることになり、「そもそもなんでAkkaという仕組みが誕生したんだっけ」を再認識するために買いました。若干日本語が怪しいところもありますが、Javaのマルチスレッド戦略から始まって、それらの利点と問題点、そして後半で Software Transactional Memory やアクターモデルが登場します。実装言語としてJavaが使われていますが、「並行・並列処理を実現するときの戦略と、その弱点」という観点では現代の実行環境すべてに通じる物があると思います。恥ずかしい話ですがJavaのSemaphoreやCyclicBarrierは触ったことがなかったので、実装例が見れたのは収穫でした。複数インスタンス、複数リージョンをまたいでサーバが動作することが当たり前になりつつある昨今では、やはりアクターモデルがしっくりくるなと思います。安いです。

スレッドプログラミングのバグの多さに辟易して、JMS/MQベースのメッセージドリブンアプリケーションに移行してから、本格的なマルチスレッドアプリケーションを開発していない方には本書はスレッドプログラミングの問題点を部分的に克服したアクターモデルや、データベースのトランザクションに似たトランザクションAPIを提供するAkkaのSTMを使ったプログラミングをするきっかけになると考えます。

Web API: The Good Parts

カバー画像 タイトル
Web API: The Good Parts : 水野 貴明 : 本 : Amazon Web API: The Good Parts : 水野 貴明 : 本 : Amazon

Web APIの目的は大きく2つです。1つは、いろいろなデバイスから共通のロジックを切り出し、サービスとして提供するため。もうひとつは、サードパーティを巻き込んで巨大なエコシステムを構築するためです。デバイスやプログラミング言語が多様化の一途をたどる中で、Web APIがサービスの中央政権を握るような構成も増えたと思います。そんなとき、誰に見られても恥ずかしくないAPIを設計するために、手元においておきたい一冊です。

と、いいたいところですが、実際は、目の前のサービスを構築するときに真似できるところは真似してAPIの設計を楽にするために使っています。すごく助かってます。

  • 設計の美しいWeb APIは使いやすい
  • 設計の美しいWeb APIは変更しやすい
  • 設計の美しいWeb APIは頑強である
  • 設計の美しいWeb APIは恥ずかしくない

デザイニング・マルチデバイス・エクスペリエンス

カバー画像 タイトル
デザイニング・マルチデバイス・エクスペリエンス ―デバイスの枠を超えるUXデザインの探求 : Michal Levin, 青木 博信, 大木 嘉人, 笠原 俊一, 瀬戸山 雅人, 矢野 類子 : 本 : Amazon デザイニング・マルチデバイス・エクスペリエンス ―デバイスの枠を超えるUXデザインの探求
Michal Levin, 青木 博信, 大木 嘉人, 笠原 俊一, 瀬戸山 雅人, 矢野 類子 : 本 : Amazon

マルチデバイス化のウェーブはなにもバックエンドだけに波及しているわけではありません。当然見せかたも工夫する必要がさらにでてきました。立場にかかわらず、「複数のデバイスを使って、ひとつの体験を実現する」ことはこれからの世の中常に考えておくべき軸です。この本は、マルチデバイスでひとつの体験を実現するためのアプローチは具体的にどのようなものがあるのか、を、知ることができる1冊です。具体的なデザインもそうなのですが、どちらかというともっと広い、サービス設計、情報設計を行うときに威力を発揮する内容になっていると思います。

個人的には、内容そのものもそうなのですが、なんでもスマホ1本で生活する(印象のある)日本と比べて、スマホ→タブレット、スマホ→テレビなどシームレスに移行することを考慮したデザインパターンがあって、海外のライフスタイルや文化の違いを感じました。単純に読み物として面白いです。

マルチデバイスの時代においては、自然界のそれと似たエコシステムが生じます。マルチデバイスのエコシステムでは、さまざまなデバイスが1つの生態系として互いに影響し合います。また、その相互作用はユーザーがデバイスをどう使うかによって決まります。ユーザーが情報面やエンターテイメント面での目的を達成していくまでの、コンテキストのありようによって変わるのです。

偉大なる失敗 天才科学者たちはどう間違えたか

カバー画像 タイトル
Amazon.co.jp: 偉大なる失敗 天才科学者たちはどう間違えたか 電子書籍: マリオ リヴィオ, 千葉 敏生: Kindleストア 偉大なる失敗 天才科学者たちはどう間違えたか
電子書籍: マリオ リヴィオ, 千葉 敏生: Kindleストア

科学的な失敗談にスポットを当て、なぜその失敗がおきたのか、その失敗がどのような影響をもたらしたのかを、ダーウィン、ケルヴィン、ポーリング、ホイル、アインシュタインそれぞれの主要な科学業績を背景に論じている本です。最初、失敗から学ぶこともあるよねと期待して読んだのですが、個人的には失敗談そのものよりも当時の時代背景であったり、誰もが知っている科学理論誕生のきっかけなど歴史的なできごとがよく整理されていてそちらに価値があると感じました。スケールがでかくてちょっとした映画を見た気分。

この本を読んでいると、一流の科学者たちが犯す失敗は、往々にして、単なる勘違いや思い込みで片づけられるものではなく、むしろその中になにがしかの「美」を包摂するものなのだと実感させられる。究極を突き詰めるからこそ、たったひとつのボタンの掛け違いで、現実と乖離したアウトプットが出てしまうものなのかもしれない。でも、それをただの失敗と呼ぶのは、あまりにも結果論的すぎるに違いない。

おわりに

紙の本で読んだ 電子書籍で読んだ
Webを支える技術
エンジニアのための図解思考
Web API: The Good Parts
デザイニング・マルチデバイス・エクスペリエンス
エッセンシャル思考
Javaマルチスレッド入門
偉大なる失敗 天才科学者たちはどう間違えたか

電子書籍と紙の本、みなさんはどちら派ですか?どちらも活用していると、紙が良いときもあるし、タブレットが楽なときもあるし、どっちも欲しいなと思いました。風呂で読むのはタブレット in ジップロックが良いです。紙はふやける。少し多めにお金払っても良いので、一度購入すれば紙の本も届くし、電子書籍でも見られる、という仕組みを希望します。