きゃべログ

2020年に読んだ本のうち17冊を紹介してみる

雑記読書

2020年は色々と本を読んだ1年でした。 リモートワークで自分の働き方や生活習慣に向き合うことが増えました。自ずとライフハック系の本を割と読んでいたような気がします。 仕事の担当領域も広がり、Web開発系の本も割と読みました。

ちょっとずつ感想を書きつつ紹介していこう、と思ったら、こってりと結構な分量になりました。 次に手に取る本を選ぶ参考になれば幸いです。

技術書

Real World HTTP 第2版

2020年の「読んでよかった本 of the year」はこの本です。 Goによる実装部分は時間がかかりそうなので読み飛ばしてしまいましたが、それでも十分密度が高い本でした。

根幹をなすのはHTTPという歴史あるプロトコルの説明ですが、その上でHTTP3/QUICや最新のWeb技術なども解説されており、非常にカバー範囲が広い一冊です。 業務や他の技術書を読んでいても、「Real World HTTPで読んだやつだ!」と進研ゼミのストーリー漫画ばりにこの本で読んだ知識が頭をよぎります。 個人的な感想だと思っていたのですが、最近書店で見かけたときに「あの本で見たやつだ!そう思う日がきっとくる知識満載」という帯が付いていました。

HTTPの仕様や歴史を追いながら、Webの仕組みの理解を深めることができます。 HTTPは「メソッドとパス」「ヘッダー」「ボディ」「ステータス」のシンプルな要素で構成されており、それらを肉付けして様々な要求を満たし、後方互換性を維持しながら拡張されていき、現在も進化が進んでいるということがわかります。

電子メールの仕組み・クッキーとセッション・キャッシュ・CDN・TLS・RPC・OAuth・WebSocket・AMP・WebRTC・RESTful API・SPA・DNS・Finger Print…。登場した時代が違うこれらのキーワードがすべてこの一冊に含まれています。4000円くらいしますが、めっちゃコスパがよいです。

リファクタリング 既存のコードを安全に改善する(第2版)

外出自粛が勧告されてから、家で過ごす時間が増え、読書量が増えた際に学生時代の友人であるseiyabと毎週土日にDiscordをつないで本を読む、読書会をやりました。456ページもある大作なので、2人で読むパートを分けて、印象によかった話や実務でこういうことがあるよね、という話をしながら読んでいきました。誰かと一緒に本を読むと、自分が持っていない視点から解釈した話が聞けるのでとても良いですね。

内容は様々なリファクタリング手法を12章にわたって紹介する、というものです。特によかったのはテクニックにとどまらず、なぜそのようなリファクタリングをするか、という考え方が書いてあるところです。細かいテクニックよりもこちらのほうが有益だったかもしれない。

リファクタリング手法には「処理を関数として抽出」したり「関数をインライン化」したり、など、場合に応じて逆の作用をもたらすことをやったりします。どんなケースでどちらを使うのか、ケースバイケースで、「いつもこうすればよい」、というものではないということが理解できるだけでもよいです。

また、コードは生ものなので、アップデートを続けていくと、やがて古くなる。継続的にメンテナンスすることが必要。しかしリファクタリング自体にもコストがかかるのでやればいいというわけではない、など難しい命題も存在する。

自身の頭で考えよ、と色々考えるきっかけがもらえる良書だったと思います。

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

ソフトウェアテストについてはJSTQBの学習用テキストなどでこれまで学習してきたことがあった。膨大なXXテストという用語と、様々なドキュメントが存在することは理解しつつも、現場でのテストはもっと混沌としたものです。実際のQAチームが作るテストの仕様書は教科書通りではなかったり、「テストとはなんぞや」というものの理解に苦しんでいました。しかし、この書籍を読んで、「テストとはこうあるべき」と凝り固まった考えをすることはないんだなと割り切る勇気をもらえたように思います。

プロダクトやサービス、開発体制、インフラなど様々な要因であるべきテストは変わってくる。ソフトウェア開発の研修を生業とするような方には怒られるかもしれませんが、教科書通りのテストを目指すことはないんじゃないかと思うようになりました。正確には、様々なテスト手法やドキュメンテーション方法がなくてもいい、という話ではなく、それを武器として自らのチームにあったテストを構築していくべきだと考えるようになったということです。

Googleのテスターは設立当初から現在に至るまで、ソフトウェアテストに関する壁にあたり、どう向き合うかを考えてきました。そして、その過程で様々なテストツールが開発され、テストにかかわる組織や分担、必要なスキルが変わっていく。ベストプラクティスを妄信して適用するよりも、目の前の組織や動いているソフトウェアに合ったやりかたを探す必要性を感じました。

開発の面からも、どれくらいテストコードを書くのか、テストしやすいコードとは、など様々なことを考えるきっかけをもらえます。おすすめ。

エンジニアのためのマネジメントキャリアパス

良き管理者であるために、そして良き部下であるために読んでおきたい一冊です。 エンジニアとしてのキャリアのうち、Individual Contributor と対比しての Management のキャリアパスについて書かれています。 Managementといっても、いわゆる管理職だけでなく、インターンのメンターから経営幹部まで、人を管理する職位に求められることや考えるべきことなどを順に追って解説しています。

自身の経験に立脚した程よい抽象度と、エゴの押し付けを感じない公正さで、文章は読みやすい。筆者自身の経験から書かれていることも多く、説得力があります。

そして、面白いことに、自分が業務で就いている職位の1つ、2つ先くらいまではなんとなく理解できるが、その上に行くと話が急にぼんやりとしたものに感じました。身の丈にあった部分はとてもよく理解でき、自分の経験と照らし合わせて、これからこう改善してみようというアイデアの種が発掘できることは間違いないです。ずっと上の職位のことも、まったく参考にならないわけではなく、経営幹部が何を考えているのか、覗き見ることが出来て良かったです。

今後、担う責任が増えた時に読み返すのが楽しみですね。

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版

俗にいう徳丸本です。 こちらはまだ読破できておらず、ようやく半分くらいまできたところです(かなり分厚い)。

セキュリティという分野が幅広いレイヤーにまたがるテーマであり、ソフトウェア技術の総合格闘技であることを思い知らされます。本当に奥が深い。 様々な脆弱性が丁寧に解説されています。こういう脆弱性があるのか、と知っておくだけでも開発や運用において余計なリスクを負う選択を減らせる気がします。

脆弱性を確認するために実際に動くサンプルコードもついてきます。サンプルは主にPHPで書いてあり、内容も言語依存の部分がありますが、内容は十分に汎用性があるものです。一度は読破しておきたい…。

現場で使える Ruby on Rails 5速習実践ガイド

これまでサーバーサイドではJavaのTomcatを使っていたのですが、仕事で一転Ruby on Railsを扱うことになりました。学生時代に一度Rails Tutorialを終えたり、簡単なアプリを作ったりなどはやっていましたが、本格的なリポジトリを読むとなると意外とわからないこと多い。現場で開発をしていく上で知っておくべきことは、「綺麗なチュートリアル」では得られないという風に感じていました。

タイトルに「現場で使える」と謳っているため、ズバリだと思い読んでみました。Railsの哲学、テスト、運用、よく使われるGemの話、チーム開発など、幅広く会社での開発現場において知っておくべきことが書かれています。もちろんこれを読むだけで十分、とは言い切れないですが、他のフレームワークを触ってきた人が、ポンとRailsプロジェクトにアサインされるような場合にはサラッと読んでおくと役に立つと思います。

読みやすいのもよかったです。

絶対に挫折しない iPhoneアプリ開発「超」入門 第8版

すっかり忘れていましたが、2017年に第5版を1度読んでいました。 その上で第8版を読んでみて、かなり内容が刷新されたような印象を受けました。

他の言語をやったことがあるなら1,2日ほど有れば、知っていることを飛ばしつつ読める。 表層的な説明だけでなく、swiftやios開発に関する思想的なところも書かれているため、応用幅が広い。 基本的なアプリ開発のやり方が身につく本でした。

元々この本を買おうと思ったのはSwiftUIを触ってみたからです。 SwiftUIを体験して、コンポーネント志向でUIを記述できるのが楽でよいですね。

少し踏み込んだ事柄なので当然なのですが、データの保持の仕方やデザインパターンなどはこの本ではカバーされておらず、悩んでいるところです。 いい書籍や記事があれば教えてください。

ビジネス書

イシューからはじめよ――知的生産の「シンプルな本質」

業務量がかなり増えてきて、本質的に重要でないことに振り回されているような感覚になったことがきっかけで、以前にも一度読みましたが、パラっとおさらいしました。本書のメインの話題とは少しそれるかも知れないですが、次の2点は肝に銘じています。

  • 悩むのではなく、少しでも進むために考える
  • 情報を集め過ぎない、知り過ぎない(最近読んだ同著者の安宅さんの著書『シン・ニホン』にも同じことが書いてた)

アフターデジタル オフラインのない時代に生き残る

アフターデジタル時代のサービスの在り方について書いています。 本書ではAmazonや平安保険、アリババなどの事例を取り上げて次のようなコンセプトを議論しています。

顧客に寄り添うサービスを提供し、そこで得た行動データをもとにサービスを改善する。そしてサービス改善により顧客体験が向上しユーザーが増える。ユーザーが増えると得られる行動データが増え、それをサービス改善に活用する。

つまり顧客獲得・データ収集・サービス改善のフィードバックの正のループにサービスを載せていくのがビッグデータ・AI時代には重要なんだ、という話です。 モノを量産すれば儲かる時代ではなくなった今、どうすれば事業が上手くいくのか考えるきっかけを与えてくれます。

サーチ・インサイド・ユアセルフ――仕事と人生を飛躍させるグーグルのマインドフルネス実践法

最近はやりのマインドフルネスについて書いてある本です。 単語としてはよく聞くが、具体的にどういうものかはっきりわからなかったので読んでみました。 この本を読んだから、あるいはhogehogeセミナーに参加したからといって理解できるものではなく、実践してみないとわからないというのが個人的な解です。

本を読んで、実践してみての理解を簡単に書いてみます。

マインドフルネスは自己の認知という言葉でシンプルに説明できます。 自分自身の注意は様々に散ってしまうことを認知して、受け入れ、注意が解き放たれるまで放置する。 気持ちが落ち着かない時には、自分がどう感じているかを認知し、それを事実として捉える。その場でインスタントに答えは出さない。

マインドフルネスの話になると呼吸の話がよく出てきます。これがどうしてか、ずっと疑問でしたが、私の体感としては、呼吸そのものが絶対に重要というよりは、呼吸がより意識を集中しやすいため、呼吸が利用されているのだと思います。マインドフルネスでは一度離れた注意をそっと自分のもとに戻すということをやりますが呼吸がそのインターフェースとなります。注意するといっても拠り所というか、土台のようなものが必要で、それが呼吸なんじゃないかなと。地に足がついている感覚、とか体の一部に集中する、とか色々方法はあるようですが、呼吸は生命活動に必要なので常に存在する。だから毎回どこに意識を集中するか目標を定めなおす必要がない。そういうものなのかなと感じています。

スタンフォード式 最高の睡眠

質の高い睡眠をとるための方法を、理屈で語る本です。話として筋が通っているので読みやすいです。

  • 睡眠の質、すなわち疲労回復の度合がどれだけ寝たかではなく、入眠タイミングに大きく依存するということ
  • 「人がどのようにして眠くなるのか」という原理を説明したうえで、どのようにすれば思った通りの時間に眠気をもたらせるか

という2点を骨子として、質の高い睡眠を取るための生活スタイルをデザインするための考え方が理解できてよかったです。 そして実践してみると確かにうまくいっているような気がします。 ブルーマンデーや寝覚めが悪くなるのはどうしてか、日常生活で浮かぶ疑問に対しても、説明がつく感覚があり、よかったです。

1440分の使い方 ──成功者たちの時間管理15の秘訣

限られた時間をどう管理し、使っていくか、といったことを書いています。 クリエイティブな仕事に集中できる時間をつくるにはどうするかという話や、ものごとの取捨選択の重要性など、時間を上手に使うためのノウハウが書いています。

特に印象的だったのは「未来は暇であるように見える」という話です。直近のカレンダーはぎゅうぎゅうに詰まっていても、未来のカレンダーは比較的空いている。でも実際にその時になると暇なんてことはないのに、ちょっと先のことは何も決まっていないので暇であるように見える。それを理解したうえでスケジュールを組もうね、という話です。確かにそうだよな、面白いなと思いました。

この本の内容について印象に残ったことについては、ポッドキャストでも12分ほど紹介しました。

『1440分の使い方』を読んだよ - fmfm.fm ふむふむえふえむ

仕事も部下の成長スピードも速くなる 1分ミーティング

文字サイズが結構大き目で1時間くらいでパラ読みできる感じの本でした。

チームを統括する人がメンバーのパフォーマンスをいかに高めるか、という課題に対するアプローチとして1分間ミーティングを提案するお話です。 先に紹介した「エンジニアのためのマネジメントキャリアパス」でも似たようなことが書いていたように思いますが、平たく言うと、半期に1回1時間の面談よりも、1分の1on1をこまめにやるほうがいいよね、それはどうしてか、みたいなことが書いています。

自分の仕事に価値が見いだせない自己肯定感が低いメンバーにとってはやる気に繋がるし、やってほしいこととやってほしくないことのフィードバックが早く出せるので、時間は短く頻度高く、というのがよいとのこと。やってほしいことのフィードバックは褒める。やってほしくないことは否定的なコメントをするのではなく相槌を打たないなどのマイルドなやり方でフィードバックする。

2020年のはじめに読んだのであんまり覚えていないですが、要点はこんなところだったと思います。

社会人1年目の教科書 「伸びる人」の習慣 「伸びない人」の習慣

新しい部署に異動するにあたり、初心を思い出そうということで読みました。

著者の方のバックグラウンドが営業ということもあり、営業に関する話や、ややマッチョな考え方が反映されている部分もあり、苦手な方は苦手かもしれません。 私自身こうしたマッチョな説法は得意ではありませんが、現実には人間関係とか意識の問題とか、心得ておくべきことだなと思います。 他人に強いるのは抵抗がありますが、自分に当てはめて行動を変えていくという意味では役立つ内容だったと思います。

その他

こちらは本という媒体で読んだのではなく、Audibleで聴きました。 ランニングしながら聴いたり、昼食をとりながら聴いたりしました。

人類・社会の歴史をこれだけ深堀りして語ることができるのか、と驚きの一冊です。

特に印象的だったことは、ホモサピエンスがここまで文明を発達させられたのは虚構を信じる力によるものである、という一節です。現代の貨幣や会社など、実体はないが、実質的に私たちに大きな影響力があるものの存在について、気づかされ、ハッとします。冷静に考えれば当然、ということかもしれませんが、様々な霊長類の自然淘汰の末、ホモサピエンスが生き残り、文明を形成してきたという人類の歴史を追っていくと、これが面白く感じられます。

漫画

SHAMAN KING

どうも2021年にアニメが放映されると話題になっています。 そして私が子供のころにアニメが放映されており、話題になっていましたが、これまでまったく触れずに来たので読んでみることにしました。

読んでいくうちにジャンプでの連載が打ち切りで終わったことを知り、その先のストーリーが完全版できちんとした形で終えたことも最近知りました。 打ち切り間際は話の展開が早すぎて置いていかれそうになりました。個人的には真ん中らへんの話が好きです。

進撃の巨人

新しい単行本が出るとすぐに買って読んでいます。 そして固有名詞や対立関係などが複雑で、毎度以前の話を読み返します。 それでもだいぶ前の話はすっかり忘れているので、雰囲気で読んでいます。 起承転結の転が多めのストーリーなので刺激が多く、よくわかっていないくてもそれなりに楽しめるので、それはそれでいいかなと割り切りつつ読んでいます。 完結したら読み直そうかな。


きゃべ (@cab_kyabe)
piyo piyo software engineer