読んだ本 2023年5月号 6冊

数学書を1冊、ビジネス書を1冊、専門書を3冊、読み物を1冊読んだ。


確率と生活

★★★☆☆
ボレル集合のエミール・ボレルの本を見かけて、生活に根ざした確立の概念についてのお話が読めるかもと思って読んでみた。

訳者の補足によって多少複雑な数式が紹介されているものの、日常生活に根ざした内容で、難しい話は一切ない。

「ルーレットには良心もなければ記憶もない」といったユーモアのある話からはじまり、確率的に起こらなそうなものは現実的には起こらないという観点から、どういう出来事が確率的に無視できるかという話を展開していく。一人の人間として無視できるであろう確率の大きさ、地球上で無視できるであろう確率、宇宙的に無視できるであろう確率の段階的な説明などがある。

数学的な本というより、エッセイとして楽しめる内容だった。
5/3

位相入門―距離空間と位相空間

★★★★★
本書は「基礎事項」「距離空間」「位相空間」の3章構成になっている。

「基礎事項」では集合や写像、連続の定義、ε-近傍による開集合の定義など、本書を読み進めるにあたって必要な概念ついての説明が書かれている。また、本書の数式の記述に慣れるには丁度よく、初学者にとってありがたい内容となっている。

「距離空間」ではユークリッド空間を例として、距離空間でのε-近傍による開集合の定義から連続写像の定義へと進み、コンパクト性、連結性の説明へと進む。この章で距離空間において開集合から連続写像を説明できることを示し、距離空間での議論を抽象化することによって自然に位相空間の定義へと進めるように工夫されている。

「位相空間」では前章「距離空間」で行われた議論に基づいて、位相、開集合の定義からコンパクト性、連結性の定理の説明が行われる。また、その過程に開基・加算公理、分離公理の説明があり、2点の分離について空間の分類が行われる。

各章の構成は、定理の後に例や例題が書かれていて、議論を展開していくために必要な要素が小分けに記述されている。順番も考えられていて、それぞれの定理が後の議論のどこで使用されているのかが分かりやすく、理解の助けになる。

本書の議論の終着点であるコンパクト性や連結性についてはその恩恵がどこにあるのかは本書の中では触れられないので、実感が湧いていない(+単に理解できていない)。活用例など他の文献である程度触れた後に本書に戻ってくる必要があると感じる。

演習問題は実際に手を動かすことによって、本文を読むことと問いに答えることの難易度の差を実感することができた。巻末に解答が添えられていて、初学者でも写経をすることで頭の整理と解答の書き方について体感できる。

入門にはまだ程遠いと感じるが、他のテキストを読むためのいい心構えになった。
5/7

スタッフエンジニア マネジメントを超えるリーダーシップ

★★★★☆
『ソフトウェアアーキテクチャの基礎』第三部 テクニックとソフトスキル の内容に近しいものを感じるが、組織への振る舞いの観点をプラスして、広い役割を持つスタッフエンジニアに特化して書かれている。

すでにマネジメントに触れている人にとっては共感できたり参考になる要素がいくつかあるだろうと思う。

本書は大きく第1部と第2部に分かれている。

第1部「スタッフとして活躍するために」は4章構成になっており、スタッフエンジニアの全体像、役割、スタッフプラスの肩書を得るために求められることなどが、関連するいくつかのテーマごとに書かれている。

第1部の中で特に共感する部分が多かったのは第2章「スタッフとしての役割」で、スタッフとして発展し続けるために必要な要素について書かれている。

例えば、「会社にとって重要で、かつ活動の余地が残されている領域に取り組む」「エンジニアリング戦略を立てるためにデザイン文書を書く」「技術的に深い洞察を持つことと自分に懐疑的であることを両立する」「解決策なしに質問を提示しない」などがあり、これらと同じような課題を感じた経験のある人は少なからずいるのではないかという気がする。

「権威と歩調を合わせる」セクションなどはタイトルは若干いかがわしいが、上司を驚かせない、上司に驚かない、といったことはたしかに日頃から気をつける必要があり、これらの振る舞いを間違えるとスタッフとして円滑に動けないだろうことは容易に想像できる。

第2部はスタッフエンジニア(と見なされている)計18人のインタビューが掲載されている。

第2部はかなり個人的で具体的な内容が書かれているので、しっかり理解するためには各エンジニアの所属企業のサービスや規模について知る必要があるだろうと思う。

社名や役職とともにインタビューが掲載されていて、学習に用いたリソースの紹介などは、各人が普段どのような情報をインプットする傾向があるのかが分かっておもしろい。

総じて散文的な文章が多いが、書籍やブログ、SNSアカウントなどの参考文献の紹介も多く、興味のある文献を読み手が調べてさらに深掘るような読み方ができる。
5/17

入門 考える技術・書く技術

★★★★★
日本語で文章を書く際に、論理的な主張の妨げになる要素が分かる。本書を読む前と読んだ後で書く文章に明らかな違いが現れるという点で即効性があり、読む価値がある。
特に、論理的な関係性を明らかにしない and に相当する接続詞は少なくとも考えを整理する時には使用すべきでない、という指摘は実践する価値がある。

ビジネス上のレポートを書く色々なシチュエーションを例に挙げ、漠然とした課題に対する結論を支持するための情報を論理的に組み立てて、どのようにして文章を構成していけばいいかの指針が書かれている。
全体を通じて例文が多く書かれていて、内容も易しい。

本書は、バーバラ・ミントの著書 The Pyramid Principles(邦訳『考える技術・書く技術』)を参考にした「日本人による日本人のための実践ガイド」とされている。

レポートの読み手の疑問を明らかにするための「OPQ(Objective, Problem, Question)分析」というフレームワークが提唱されていて、たしかに理論を展開する際のサポートに役立つだろうという印象は受ける。
一方で、The Pyramid Principles で提唱されているとされる「SCQ(Situation, Complication, Question)分析」も有益だろうという予感があるので、そちらも知った上でどのような考え方が有益なのか判断したい。
5/20

考える技術・書く技術―問題解決力を伸ばすピラミッド原則

★★★★★
「論理的なアウトライン(文章)を書け」という課題は漠然としている。この課題に対して著者は The Pyramid Principles という考え方を提唱し、書き手が論理的に考えて、問題解決に繋がる文章を書くための指針を与えてくれる。

和訳がよくないというレビューも世の中に多くあるが、そうは思わなかった。たしかに「Complecation(複雑化)」など文字面からは意味が分からない用語もある。しかし、周囲の文章から用語の意味するところは読み取れる。分かりづらいのはそもそも日本語にはない概念だからだろう。

本書の内容を習得するには実践が必要で時間がかかるだろうが、それでも有益な内容であると感じた。


本書は4部構成になっている。

第一部「書く技術」では、ピラミッド構造の概要、冒頭のストーリーを書くための S(Situation) C(Complecation) Q(Question) の基本構造の説明、演繹法と帰納法の使い方などが書かれている。

読み手が知っていて合意することが分かっているものから伝える、キーラインでは分類を書くのではなくメッセージを書く、など応用の効く考え方がいくつかある。

第二部「考える技術」では、グループ化を通じて考えを整理するための方法が示される。

「白紙の主張を避ける」は重要な指摘がある。これは「3つの理由により...」というよりも「同じ種類の人間なので...」という方が読み手の頭が続く情報に対して準備される、また自分の考えも整理されるので、よく考えて言葉の裏にある裸の構造を明らかにせよという主張である。

第三部「問題解決の技術」と第四部「表現の技術」はかなり実践的な内容である。問題を定義し分析を構造化する方法について、視覚表現を利用してロジックの理解を助ける方法についてなどが書かれている。
5/23

ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには

★★★☆☆
「設計のトレードオフ」というワードから期待したものは「日々の業務の中で技術的に決断を迫られた時に、判断の材料となる情報」だった。しかし、本書から期待していたものを得ることはできなかった。テーマにばらつきがある、シチュエーションに具体性や現実味がないことなどが要因だろう。

個別のテーマについては、他に参考になる書籍がある。
例えば、『ソフトウェアアーキテクチャの基礎』には複数のアーキテクチャの比較とトレードオフについて詳しく書かれている。『データ指向アプリケーションデザイン』には、パーティショニング(6章)、分散システム(8章)とその一貫性(9章)、バッチ処理(10章)とストリーム処理(11章)について詳しく書かれている。『Googleのソフトウェアエンジニアリング』には、ライブラリの依存関係管理(21章)が実例を交えて書かれている。

章によっては日本語訳がほとんど直訳になっていて、読み取りに戸惑うことがあるが、意味は読み取れるので致命的ではない。


本書は13の章で構成されている。第1章はイントロダクションなので、計12のテーマについて書かれている。扱う内容はコードの重複から分散システムまで幅広い。プロクラムの例文はすべて Java で書かれている。

個別の記述についての感想は、書くと雑多になるので書かない。全体的に、個別の技術の紹介に終始していて、トレードオフの観点で複数の技術を比較するところまでは至っていない印象を受けた。

日頃から Java を業務で使用していたり、本書の内容に関する技術的な選択をしてきた方にとっては、実体験から共感できるような箇所も多いのだろうと想像した。一方で、今後の技術的な判断の材料として独学で読み進めるような場合では、本書の活用はなかなか難しいだろう。本書で書かれている領域についてすでに知見のあるような方と勉強会形式で読み進める、といった活用方法であれば、有益だろうと思う。
5/28

この記事が気に入ったらサポートをしてみませんか?