Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

2023年、読んで印象に残った本

あけましておめでとうございます。年がもう明けてしまいましたが、2023年に読んでよかった本について簡単に書いていこうと思います。noteで書いていましたが、こちらのブログをしっかり使わないといろいろもったいなと思ったので、技術に関係ない話題ではありますがこちらに書いていきます。

技術書

昨年は子育てに加え、そもそも技術書の執筆と翻訳を行なっていたこともありほとんど時間を取れませんでした。が、何冊か読んだので紹介しておきます。

単体テストの考え方/使い方

2023年に読んで一番よかった一冊かもしれません。テスト周りはわりとチームのエンジニアによって考え方が違うことが多いように思います。たとえば、モックをするべきかすべきでないか、あるいは単体テストでモックするか、インテグレーションテストでモックするかなどは、大きく考え方が分かれます。考え方が分かれる場合、さまざまな意見を整理して採り入れつつも、最終的には何かしらのチーム全体のマニフェスト(方針)を策定する必要があると思います。その際、この本を参考にしながら取捨選択すると、議論を空中戦にさせずに済むなと感じたのが一番大きな感想です。

また書籍内では「どういったテストが不要か」を議論していたのもよかったです。テストコードも結局のところ成果物でありメンテナンス対象となります。コードを書かされるものの得られる成果が少ないテストはできるだけなくしておいた方が、メンテナンスする対象を減らせてよいといえます。たとえば読み込みのみでほとんど複雑なビジネスロジックを持たないようなテストは、リグレッションの防止等の得られるリターンが少ない割にメンテナンステストが大きくなるだけで嬉しくない、などです。

フロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識

たぶん産休育休中だったと思うけれど、フロントエンドのセキュリティを全然知らないのはまずいかなと昔から思っていたのを思い出して読みました。フロントエンドはそれなりに仕事上関わる機会があるものの、社内向けの管理画面の実装などが多く、なかなか本格的にやる機会のない分野でした。そういう人でも十分理解できるように書かれているいい本だと思います。

とくにこれまでの現場で迷いがちだったのは、ログイン周りの情報をどこに保存しておくべきかという問題でした。個人的にはCookieにHttpOnly属性をつけて入れておくのがよいと漠然と思っていましたが、これがなぜよいのかについて詳しく理由を知ることができました。このような日頃から疑問に思っていたことは一通り学べたという意味でよかった一冊だと思います。

私のように普段はバックエンドに軸足があるものの、ときどきフロントエンドも触る必要があるようなソフトウェアエンジニアにおすすめです。

プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで

基礎的な文法はある程度知っていて、実際になんとなく書いているものの、体系的に言語仕様を理解していないなと思っていたランキング1位(個人)TypeScriptを学ぶ際に使った一冊です。これも育休中に読みました。著者が言語処理系に詳しそうな印象をもっており、そこを期待して購入した一冊です。もちろん期待通りでした。

この本のすばらしいところは、TypeScriptの仕様に関連する言葉をふわっと利用せずきちんと定義し、説明し切るところです。入門書を書いたことのある方ならもしかすると共感していただけるかもしれませんが、そうした本を書いていると、どうしても初学者のうちは理解の妨げになるかもしれないと思い、説明を少し緩めにして誤魔化すといったことを時折することがあると思います。本書ではそういったことはせず、読者の理解力を信じてきちんと説明し切っているように見受けられました。

技術書でないもの

月に1、2冊は読んでいたと思いますが、とくに印象に残ったものを紹介します。

サピエンス減少 縮減する未来の課題を探る

投資をしていると未来の人口動態というのはとても気になるものです。労働者人口が伸び続ける限りは、基本的には経済は成長を続けるだろうという予測がこれまでの歴史から立つためです。というわけで人口動態については、私は結構キャッチアップするようにしています。

これはさまざまな本や予測で論じられていることですが、世界人口は2060年ごろにピークを迎えてその後減少に転じるという予測が今のところ有力なようです。日本ではすでに人口増加率が落ちてきて人口減少に転じていますが、これが世界の多くの地域で起こる未来が来る、ということです。つまり、全世界株式インデックスの長期保有は私たちが生きているうちは大丈夫そうなのですが、私たちの子どもの世代まで有効な投資戦略かどうかはちょっとわからないかもしれない、ということです。人口減少は資本主義の歴史上初めて到達する局面であり、単純に何が起こるかよくわかりません。

そしてそれより衝撃的なのが、一度人口が減り始めると結構がんばらないと人口は戻らず、300年もしないうちにそのまま一気に100分の1程度にまで減少してしまうというモデルです。人口は一度減少しだすとどうやら戻すのが難しいようで、場合によってはそのまま大幅に自然減少してしまうもののようです。車に乗っていてスピードを結構出しているとブレーキをしたとしても少し効くまでにラグがあると思うのですが、あれと似たようなことが人口減少でも起きると言うわけです。

人口減少は地域に関係なく起こりうる未来であることも示されます。平均寿命の伸びが関係します。平均寿命が伸びると、女性の再生産期間の残存数が伸びます。たとえば平均寿命が25歳の地域と50歳の地域とでは、35歳を適齢期の上限とすると単純に考えても10年ほど子を産める期間が延びることになります。これにより、結婚出生のタイミングが自由化します。自由化すると、たとえば私たちの世代が今まさに悩んでいるように、キャリアと出産の天秤をかけはじめるようになります。あるいは、恋愛も自由化しているので相手を吟味して数年費やします(私たちの世代が今マッチングアプリでやっていることだと思います)。私たちの世代では30歳前後で産むのが最適解っぽく感じられるので、そのくらいで子どもを産むわけですが、そうすると適齢期の上限問題に行き当たります。25歳で第一子を産むのと、30歳で第一子を産むのとでは、第二子、第三子を産むためのハードルが全く異なります。これにより、生涯に産む子どもの数が減ります。

この本もやはり似たような話が書かれていた記憶があり、おすすめです。

ネガティヴ・ケイパビリティで生きる

タイトルのネガティブ・ケイパビリティというのは最近はやりつつある概念だと思います。一言で説明するのは難しいですが、「答えを出すことを急がずに一旦そのまま事実を受け止めしばらく抱えて考えておく」みたいなイメージでしょうか。ここ最近は、どうもスパンと物事を言い切る人に人気が集まりがちですが、物事というのはそもそもどういう側面から見るかや、解釈する側がどういう立場かによって味方が変わるものであり、そう簡単にスパンと峻別できるものでもないです。この辺りを意識しつつさまざまな事象に向き合う姿勢がネガティブ・ケイパビリティというものだと思います。

タイトルはあくまで標語みたいなもので、本書の中身は哲学者や公共政策学者が、ここ数年の現代社会についてさまざまにああでもないこうでもないと対話する本になっています。哲学の役割のひとつに、その時代に生きる人々がなんとなく思ってはいるものの言語化できていない考えや思想をスパンと言語化していくというものがあるのですが(だから哲学を形容して、ミネルヴァの梟は迫り来る黄昏に向かって飛び立つ、などと言われる)、これをまさに果たせている本だと思います。

この本を知ったのは著者のうちのひとりの本を読んだからでした。やはり同様に現代社会に対して感じていることを言葉にしてくれる一冊になっていて、ある種のカタルシスを読後得られると思います。

2050年の世界 見えない未来の考え方

未来予測はあまりあてにはならないので参考程度に読みました。個人的には未来予測よりも最初の章の方の現状の各国や各地域の分析のところをおもしろく読みました。人口が伸びる地域伸びない地域があり、金融危機はヨーロッパで起こる可能性が少しありそうで、暗号資産は価格変動が大きすぎる関係で基軸通貨にはなれず、民主主義はあまり人気のない政体であり、テクノロジーは引き続き人類のさまざまな問題を解決し続けるといったところでしょうか。ただ、いかんせん扱われる国や地域、話題が広いため、おもしろかったです。

訂正可能性の哲学

東浩紀氏の新作です。まだ前半しか読んでませんが印象に残っているので記しておきます。「家族」という概念を手がかりに訂正可能性を軸とした共同体という新たな発見をし、これを政治社会に適用してみるみたいな構成なように今のところは見えています。

最初の方はプラトンの国家を参考に家族がどう扱われていたかを見つつ、そこから閉ざされた社会と開かれた社会の対立軸を見出します。プラトンの思想には若干全体主義的要素があるのは有名な話ですが、そこを批判したことでさらに有名なポパーを引きます。が、ポパーは実は微妙な勘違いを元にプラトンを読んでいるという読みをします。ここからプラトンから脈々と続く家族の否定という思想史は、実は家族を完全に否定し切ることができていないということになってしまいました。家族を出た人間関係は作れず、家族の枠の中で議論する必要があるのでは、というところから、今度はウィドゲンシュタインとクワインの議論を引いていきます。この辺りから訂正可能性という概念を導き、これを政治社会に適用できないかを検討するために、アーレントやローティの力を借りていくみたいな構図でしょうか。

後半はルソーの一般意思や、人工知能民主主義あたりが議論されるようです。楽しみです。

GitLabに学ぶ 世界最先端のリモート組織のつくりかた ドキュメントの活用でオフィスなしでも最大の成果を出すグローバル企業のしくみ

GitLab社の働き方や文化について解説されている一冊です。GitLab社はフルリモートワークかつ分散オフィスを上手に回していることで有名です。どうやったらそうした組織を上手に回せるか、そのための文化や制度について網羅的に解説されています。私も同様にフルリモートかつ分散拠点をもつアメリカの会社に勤務していますが、ここまできっちり制度化されてはおらず、非常に興味深く読みました。また、日系企業に勤める方にとっては外資の会社の回し方を知るいい機会になると思います。

全体的な感想としては組織運営をかなり「科学している」と感じました。たとえばおもしろかったのは、人間関係に専門性を持つチームがいて、人間関係に関連するトラブルを一定に引き受けることがあるらしい、などです。また、再現性が高まるようなオンボーディングの設計や、さまざまに用意されたガイドラインの存在などがそうした印象をより強めました(ところで本書のサブタイトルは結構微妙で、ドキュメントが中心というわけではなく、私はこうした科学的手法のとり入れに伴う再現性の担保による属人化の防止が大きなポイントなのかなと思っています)。

本書の魅力はGitLabの紹介にとどまらないと思っています。おそらく著者の方による解説だと思いますが、GitLabの施策がなぜ有効なのかを、最近の経営論や組織論の学説を踏まえて解説してくれるところがすばらしいです。仮にGitLabの紹介だけにとどまっていたとしたら一社だけの事例でしょ、で済んでしまった話が、こうしたアカデミックな議論も踏まえて解説されることにより、実は他の組織でも重要な話であり応用可能なのだ、ということに気づけると思います。

2024年の展望

技術書でない本は引き続き、自分のおもしろそうと思った本を読んでいると思います。技術書の方は、今年買ったもののキャッチアップできなかったChatGPTやLLM関連の書籍をいくつか読みたいと思っています。具体的には下記です。

ゼロから作るシリーズの生成AI編も楽しみですね。