エンジニアのためのブックスナレッジ_入門編

12 min read読了の目安(約11400字

はじめに

ゴリゴリの技術書ではなく、ジュニアレベルのエンジニア皆におすすめできるような本を選定する

目的

未経験の業務エリアを擬似体験できる読書をつうじて、成長速度を加速させること

想定読者

CS専攻でない未経験エンジニア
ジュニアエンジニア

書いた人

社会人歴11年目 非CS専攻ブートキャンプ卒のエンジニア1年生(の時点で書きました)

書いた人の目標

早めに良いエンジニアに成長する!

言葉のふんわり定義

成長する

  • 現在地からどこかしらの向きに進むこと
  • 全方向OK
  • 直線で考えると「前進」と「後退」となるが、思考実験を含む「試す」ということには経験値という成果物があるため、X軸的にはマイナスでもZ軸的には積み上がったね、というのが基本的な考え

オススメ本マップ

マッピングの意図

  • 縦軸
    • 上にいくほど、一般的な意見を集めた書籍。広く知りたい場合ににオススメ。自分の考えや実装に対して適切に自信を持ち、かつクリティカルでいるためには広く知ることは大切。
    • 下にいくほど、著者の意見がハッキリと書かれている。一つの考え方をしっかり理解した場合にオススメ。
  • 横軸
    • 右にいくほど、よりエンジニアっぽいよみもの。
    • 左にいくほど、エンジニアは関係ないが、エンジニアにも良い読み物を選んでいます。

選抜書籍たち(マップ左から)

具体と抽象 細谷 功

どんな本?

「抽象的な概念」を取り扱う方法を「具体」と対比しながら学べる本

どんなふうによかった?

仕組みづくりと切っても切り離せないエンジニアのお仕事。もちろんどんなお仕事でも仕組みづくりと関係ないお仕事はありませんが。アプリケーションやサイト、サーバーなどの仕組み作りの良し悪しで大きくパフォーマンスの数値が変わる、という意味で、やはりエンジニアのお仕事のなかで仕組みづくりは、常に大きなテーマになっています。具体的であるタスク指向と抽象度の高いオブジェクト指向、両方を往き来し「個別の事象」を「関係性という構造」に昇華できたとき、「仕組み」というものが自分の目に見えるのかな、と思いました。具体<抽象という重要度の違いはなく、両者をスムーズに往来できる視座の調整を訓えてくれる良き本だとおもいました。

  • 非常に応用の効く本で、「仕事を早くするにはどうしたらいいんだろう」とか「コミュニケーションギャップはなぜうまれるのか」などの細かな疑問へのTRYを思いつくカンフル剤にもなります。便利な本です。細かな疑問は経験の元にうまれてくるものなので、自分の経験値ではまだまだ本書を活かしきれていない、逆にいうと今後が楽しみ、という感想を抱きつつ読み終わりました。

おすすめポイント

  • 薄い、読みやすい、内容がめちゃくちゃ濃い
  • 図解が豊富でイメージがつきやすい
  • 1つの章が短くよみやすい
  • 4コマ漫画で、シチュエーション設定してくれるので前提・世界観にはいりやすい

再発見の発想法 結城 浩

どんな本?

IT用語を日常生活に当てはめてわかりやすく解説してくれている本

どんなふうによかった?

ITと関わりがない人向けに、ITでつかわれている概念を日常に取り入れて、日常を便利にする発想をうみだす方法を教えてくれる本なのですが、自分レベルだと、言葉の概念をちゃんと理解するのに非常に役立ちました。聞いたことはあるがちゃんと理解はしていないことって結構あるものなので。言葉自体は我々が聞き親しんでいるものばかりです。「バッファ」「オーバーエンジニアリング」「A/Bテスト」「テンプレート」「DRY」などなど。ズレ埋めという言葉が流行った?のも、元をたどれば言葉の概念が人によって少しずつ違うからかなと。ある言葉のインプットがあったときに、大事なのは、皆が辞書のように同じ言葉をリターンすること、ではなく、同じ概念・イメージをリターンすることなのかなと思うきっかけとなりました。

  • 当たり前すぎて疑問すらもたないけれど、意外とちゃんと説明できないことがかかれています。
    • ライブラリってなに?ライブラリのメリットは?ライブラリとアプリが分割されているメリットは?日常生活であなたはすべて自分でやろうとしていませんか?あなたがつくったものを他の人が利用してもらうことはできませんか?利用してもらいやすく整備していますか?
      みたいなかんじです。わかりやすい!

おすすめポイント

  • 薄い、読みやすい、内容がめちゃくちゃ濃い
  • 図解がありわかりやすい
  • 1つの章が短くわかりやすい
  • 言葉の解説で復習・勉強になると同時に、日常におきかえて感がられるので再現性がたかい

ハッカーと画家 Paul Graham

どんな本?

よいベンチャー企業やハッカーはどういう行動をおこすのか具体的にかかれたエッセイ集

どんなふうによかった?

  • 非常に具体的
  • 「良い」に対する著者なりの意見がしっかりいわかる。また非常に納得感がありました。
  • 「どのプログラミング言語がよいのか」「富はどのようにしてつくるのか」「良いデザインとは」「そもそもゲームにのらない」などなど魅力的なトピックを、エピソードを織り交ぜて書いてあるので、先輩エンジニアと対話しているような感覚で読むことができる。コロナ渦でそういった機会もすくないため、いっそうオススメです。

おすすめポイント

  • 1章は短くはないが、すべての章が独立しているのでつまみ読みでも問題なく読める。
  • 新聞や雑誌のコラムっぽい記事が好きな人は好きだとおもう。
  • 読むとやる気がわく。

オブジェクト指向UIデザイン 上野 学

どんな本?

オブジェクト、すなわち目当てをどのように表すか書かれている本

どんなふうによかった?

エンジニア向けの書籍から一歩外にでた、デザイナー向けの書籍だが、だからこそオブジェクト指向がよくわかりました。UIという言葉は、コンピューターの画面という意味ではなく、ユーザーとその対象をつなぐものであり、ユーザーがオブジェクト(目当て)にいかに滑らかに到達できるようにするか、といったことが書かれいてます。後半はデザイナーさん向けのワークですが、エンジニアこそこういったことをしっかり学ぶことで、設計や導線の良し悪しの判断ができるようになっていくのではないかと思いました。

おすすめポイント

  • とても本質的なことをいっている気がした
  • アプリケーションの具体例が、図、写真でたくさんのっており、わかりやすい。
  • よい例だけでなく、よくない例が豊富にのっているところ。

なぜオブジェクト指向でつくるのか 平澤 章

どんな本?

エンジニア界隈でのオブジェクト指向の定番読み物

どんなふうによかった?

  • コンピューターに対するコミュニケーションの作法を学ぶことができます。
  • 人間に出すのと同じ指示方法ではプログラムは動きません。そこにはある種のコツが必要ですが、そのあたりのコツを解説してくれている本です
  • ネットの記事には動物や車をつかってオブジェクト指向をさらっと解説している記事はたくさんありますが、本書はそういうことはしていません。またなぜしないのかも解説しています。ネットの記事でさくっと理解できない私にとっては、とても丁寧な解説内容に感じ、読んで良かったと思いました。

おすすめポイント

  • 図解がある
  • 現実世界とソフトウェアの違いとそのギャップを埋める方法が解説されている
  • オブジェクト指向を用いると、どうソフトウェア開発が楽になるのか解説されている

UNIXという考え方 Mike Gancarz

どんな本?

ソフトウェア開発で大事な哲学をクリアに解説してくれる本

どんなふうによかった?

ガツンと読み応えがありました。答えは自分で考えないと意味がないという考え方もありますが、読書という行為を擬似体験を行うことと捉えるならば、本書を読むことはとてもオススメになります。非常に一貫性の高い本で、何か良いのかという主張がはっきりしています。それに賛同するしないはそのあとの問題で、まずは主張を理解するというフェーズにおいてものすごく読みやすい本です。アンチパターンもしっかりかかれており、何が良いなにが悪いと明白な論調でわかりやすい。ソフトウェア開発で大事なことがギュっとつまっている本だと思いました。

おすすめポイント

  • 薄い、読みやすい、内容がめちゃくちゃ濃い
  • たぶんこれは絶対読んだ方がいい

プログラマが知るべき97のこと 和田 卓人 (監修), Kevlin Henney (編集)

どんな本?

  • 97+10の極論がきける本

どんなふうによかった?

翻訳97+日本語版10のテックエッセイ。1人がいくつか寄稿しているので、97名というわけではないですが、世界のトッププログラマといわれる人たちが失敗談をたくさんシェアしてくれていて面白いです。一人一人がバラバラのことを言っている本書は、たくさんのなるほどが詰まっている本でした。目新しいこと、知らないことばかりが書かれているかというとそういうわけでもなく、トッププログラマの人たちもたくさんの失敗と、愚直にやりつづけた結果、が今につながっているのだなと勇気をもらえました。

おすすめポイント

  • ふつうの目次とは別にカテゴリ別の目次があっておもしろい
    • バグとその修正
    • 技術・知識の習得
    • ビルドとデプロイメント
    • 設計原則とコーディングテクニック  など
  • 個人的すぎて申し訳ないですが宮川さんのエッセイを読んでやる気が爆上がりしました
  • 1エッセイが1見開きで、どこからでも読めるし読みやすい

リーダブルコード Dustin Boswell

どんな本?

読みやすいコードを書くためのシンプルな解説書

どんなふうによかった?

読みやすいコードを書くための解説書が読みにくいことがよくあります。この本は、きちんと読みやすいです。私の場合、とにかく開発環境の理解や、先輩の書いたコードの理解など、コードを目の前にしたときに「今、ここで、何が起きているのか」を理解することに必死で、自分の生み出すコードへの配慮は希薄な状態にあるんだなということが、この本を読んでよくわかりかりました…1回きりで読み流すのはもったいなく、リファクタリングのタスクを行う前にパラパラ見返すだけでも、とても良い本だと思いました。また、技術書にありがちな、書いてあることはなんとなくわかったけど、実務でどう活かせばいいのか…という迷うようなことはあまり書かれておらず、初心者であっても実践できることが書かれているのが、とても良いと思いました。

おすすめポイント

  • 図解があってわかりやすい
  • 薄くて読みやすい
  • ちょこちょこかかれている漫画がププっと笑ける

Clean Code

どんな本?

ソフトウェア開発における整理(sort)、整頓(systematize)、清掃(shine)、清潔(clean)、しつけ(self-discipline)の解説本

どんなふうによかった?

ちょっとむずかしく、語り口も独特で、分厚いのでこのナレッジベースの本の中では一番上級者向けの書籍。百科事典のようなもので、なにか困ったことがあったら、逆引きすればだいたい目当てのものが見つかるかんじです。すべてを一度に読むというより、折に触れて検索してみるかんじがおすすめです。本書が分厚くなっている主な原因は、アンチパターンとベストプラクティス、両方のサンプルコードが大量にのっていることです。コードを読むだけで、著者の言いたいことが理解できるレベルの人には、とてもおすすめできる本です。自分にとってはまだすこし難しかったと感じましたが、もうすこし経験を経てから読むとまた違う感想をもつだろうと思います。

おすすめポイント

  • 大量のサンプルコードと、それに対する丁寧な説明

番外編

Better Than Before Gretchen Rubin

  • おすすめポイント
    • 効率的に新しい技術を身に着けるために自分を知る本、みたいなかんじです。軽い内容なので息抜きに読めます。
    • 洋書ですがそんなに難しい英語ではないです。英語の勉強にも良いと思います。
    • Inner expectation と Outer expectationにどう反応するかで、人々を4タイプにわけており、習慣化へのアプローチを解説してくれています。
    • お遊びのような気持ちでよんで、オススメのアプローチを軽く試してみるだけでも、楽しいです。
    • テストはこちら

自己評価メソッド

  • おすすめポイント
    • 万人におすすめなわけではないですが、機嫌よく生きるコツみたいなのが書かれた本です。
    • 良いことも悪いこともいろんなことが起きる日常です。風になびきながらも芯があり、折れることなく健やかに成長する心を持つというのはどういうことか、解説してあるかなと思います。

Software Design

  • おすすめポイント
    • メイントピック以外もいろいろおもしろいです。iPhone12解体して比較してたりとか。
    • 新しい情報はネットのほうが早いのかもしれませんが、ある程度まとまって旬を届けてくれるので、情報キャッチアップにいいんかもしれません。

Atomic Habits

  • おすすめポイント
    • 大切なのは誰にでもできごく小さなこと
    • そしてそれをやり続けること
    • やりつづける環境を整備すること
    • 1を1000個積み上げることは単純に1000になるわけではない、ということを教えてくれます。
    • 書籍だとわりと分量があるっぽかったのと、そこまで難しい内容ではないので自分はAudibleでききました。
    • (余談)Audibleは速度調整もありますし英語のリスニングにもオススメです。オススメカテゴリとしてはビジネス系の書籍です。難しいことはなにひとつ言わないし、同じようなことを繰り返しいっているからです。また冗長でポエティックな表現もないです。短くシンプルで実用的な表現が多いので英語の勉強用としては良いです。

本読みTips

完全に個人的見解です…

読む前

  • 知りたいことを決めてから書籍選びをおこなう
  • 目次で選書
    • 自分が決めた知りたいことが本の2、3割占めていれば、それはあたなが読むべき本
  • 隅から隅までくなまく読まない
  • 目次で重点的に読む場所、および読みたい場所を決めてから読む

読んでいるとき

  • はじめに、はとばさず読む。
    • どういう意図・経緯でその本がうまれたのか理解したほうが効率が良い
  • 知りたいことが書かれているところから読む
    • あまり順番は気にしない。必要であればいったりもどったりする
  • 以下のことを考えながら読む
    • その章で言いたいことはなにか
    • その章が主張している価値を一言で表すとなんだ
      • 自分は目次に書き込みます、これは人次第でしょうが、再読する際に役立ちます
    • 自分が学びたいと設定したことに対し、何かしらの主張があるのか

読み終わるとき

  • 読む前にきめていた知りたいことが書かれていなければ即読むのをやめる
    • 今の自分にははやかっただけかもしれない
    • 時間は有限なのでとりあえず先にすすもう、本は待ってくれる
  • 章ごとの価値を再度見返して、「総じて」この本はどういう本だったのか考える
  • あまり好きではなかった本だった場合、「何が」好きではなかったのか考える
    • 同じような本は次は選ばない
      • もちろん必要であれば読んだほうがいいけど
        • でも本の良し悪しを見極める訓練になるとおもう

フォーマットについて

  • 目次を基点にいったりきたりできるので、知識をしっかり吸収する系の書籍は紙が良い
  • あまり難しくない系の書籍はAudibleがあれば非常におすすめ
    • デメリットとしてはyokattayobon 精算できないのと、まだまだ日本語の書籍数が少なく、テック系の書籍はさらに少ない
    • 紙、Kindleと比べ価格が高い
      • ただ、ながら聞きできることを考えると十分な価値があると思います
      • 著作費用に加えてナレーションがはいっているので、当然といえば当然
        • 気に入らなければ返品もできるので気軽につかえばいい
    • 現状十分ではないが、今後期待大
    • 自分はジムや散歩、買い物にいく時、お風呂などで聞いてますが、読書時間を割くほどでもないけど気になる本、難しすぎない本などには非常に良いです。読書効率あがります。
  • Kindleは読み物系がおすすめ。
    • 病院の待ち時間や信号待ちとか、なにかしらの隙間時間に読める。
    • お風呂で読みやすい
    • 飛行機や電車など移動中に読みやすい
    • 行きつ戻りつ読む技術系の書籍にはあまりむかない
      • メモもできないし

集中できないとき

  • 電車にのる(このご時世にあまりよくないソリューションではありますが一応のせときます)
    • 結構はかどります
    • 次の駅までにこの章のいいたいことをしぼりとる!と思ってやるとはかどります
      • 椅子に座ると寝てしまうかもしれないので、座ってはダメです。立ち読みです

そもそも

  • 読書とは2Dの情報を3Dに起こす作業である
    • 何を読みたいとか、どれが大事だ、この章の価値はなんだ、とかを抜き出すことであり、不要な箇所を捨てる作業のことである
    • 文字を目で追うこととは異なる
    • 娯楽用の読書はこの限りでない

おわりに

  • 思いの外、壮大になってしまいました。ここまで読んでいただきありがとうございます。
  • ブックスナレッジということで、データベースで作成し星でもつけてランキング形式にしようかとか、アウトプットの仕方は割と迷いました。
  • そもそもの目的が、「経験の少なさを読書という擬似体験で埋める」ということなので、オススメできる本であれば、ソートする必要もないかと思いこのような形式に至りました。
  • 約4ヶ月、このプロジェクトにコミットしてきたのでやや勇み足で読んだことも否めず、とはいえ選んだ書籍は「ぜひ読み返したい」と思った書籍たちばかりです。これから再読できると思うと嬉しいです。
  • エンジニアとしてのキャリアをスタートしたばかりの自分ですが、自分の学びが、もしどなたかの役にたったら嬉しいと思います。