入社3年目に読んだ本
May 24, 2023 | 20 min read | 1,552 views
昨年の『入社2年目に読んだ本』に引き続き、今年も1年間で読んだ仕事関係(明確な定義はありません)の本をまとめます。「あとで自分で読み返すため」という性質が普段以上に強い記事になりますが、どなたかの役に立てば望外の喜びです。
この1年は新規サービスの立ち上げにプロダクトマネージャとして挑戦したり、R&Dや産学連携にも関わったり、書籍執筆をしたりと、仕事内容が大きく変化した年でした。コンフォートゾーンから出過ぎて苦しいこともありますが、日々新しいことを学べていることには変わりありません。キャリアが分岐して「入社3年目」というラベルが意味をなさなくなってきたので、このタイトル、および年度での区切りは今回で最後にしようと思います。
さて、読んだ本の数は22冊で、昨年度と同じでした。
以降、ジャンルに分けて一冊ずつ簡単に内容をまとめます。
機械学習/データサイエンス
推薦システム実践入門
『推薦システム実践入門 ―仕事で使える導入ガイド』(風間正弘、飯塚洸二郎、松村優也 著、O’Reilly Japan、2022年)はタイトルの通り、「推薦システムを導入したいが、進め方がわからない」という際に役立つ実践的な入門書です。アルゴリズムの解説に留まらず、プロジェクトの進め方、UI/UX、実システムへの組み込み方、性能評価についても触れています。
実際、実務で推薦を扱うときに「アルゴリズムにだけ精通していれば良い」ということはほとんどないので、「実践」を謳う本でこのような構成を取ることには強く共感します。異なる専門性を持ったメンバーからなるプロジェクトチームで、共通認識を作るために輪読会をする、といった使い方も良さそうです。暗黙知や個別事例として埋もれがちな知識も含めてまとめあげた貴重な資料だと思います。
韓国語にも翻訳されているようです。
拙著『推薦システム実践入門』の韓国版が出版されることとなり見本誌が届きました。具体例もところどころ韓国バージョンに置き換わってて面白い(読めない)。 pic.twitter.com/ZfzUEC7ubS
— Yuya Matsumura (@yu__ya4) May 18, 2023
検索システム
『[検索システム 実務者のための開発改善ガイドブック(https://amzn.to/480gm1C)]』(打田智子、古澤智裕、大谷純、加藤遼、鈴木翔吾、河野晋策 著、ラムダノート、2022年)もタイトルの通り、検索システムの開発や継続的な改善の方法を解説した本です。
こちらもアルゴリズムだけでなくプロジェクトの進め方などについても取り上げており、勝手に『推薦システム実践入門』と対をなす本だと捉えています。私は情報検索について断片的にしか知らなかったので、業務で検索改善に取り組むにあたって非常に重宝しました。
ゼロから作るDeep Learning 4
『ゼロから作るDeep Learning ❹ ―強化学習編』(斎藤康毅、O’Reilly Japan、2022年)は、数値計算ライブラリ(NumPy)だけで深層学習モデルを実装することを通してその内部動作を理解するということをコンセプトにした、大人気シリーズの第4弾です。第4弾のテーマは強化学習です。バンディットなど基礎事項の説明から始めて徐々にレベルアップし、最後はDQNやActor-Criticなど最先端の研究へとつながるアルゴリズムを自力で実装します。数式と実装の両面から強化学習の基礎を理解することができました。
過去の3作も傑作揃いで、いつかシリーズ全体を取り上げた書評記事を書きたいと思っているくらいです。
- ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- ゼロから作るDeep Learning ❷ ―自然言語処理編
- ゼロから作るDeep Learning ❸ ―フレームワーク編
最適輸送の理論とアルゴリズム
『最適輸送の理論とアルゴリズム』(佐藤竜馬、講談社、2023年)は、近年機械学習の文脈でも注目されている「最適輸送」を解説した本です。ややマニアックかつ数学的にも高度なテーマですが、行間が丁寧に埋められているので私のような初心者でも読み進めることができました。例えば、導入部分では最適輸送を「確率分布を比較するのに使えるツール」と紹介した上で、様々な具体例をもって「なぜ機械学習に使えるのか」を説明しています。登場する定理には丁寧な証明が記されていますが、これらを飛ばして読んでも大雑把な理解は可能です。様々なレベルの読者に対応可能な本だと感じました。
著者の佐藤氏が内容を紹介したスライドがあるので、興味のある方はこちらもご覧になると良いかもしれません。
Kaggle Grandmasterに学ぶ 機械学習 実践アプローチ
『Kaggle Grandmasterに学ぶ 機械学習 実践アプローチ』(Abhishek Thakur 著、石原祥太郎 訳、マイナビ出版、2021年)は、Kaggleの実践的な例を使いながらテーブルデータと画像データ、テキストデータに機械学習を適用する方法を解説した本です。最近タイトルに「Kaggle」を含む本をよく見かけますが、本書の特筆すべき点は、簡単な手法から徐々に高度な手法を取り入れていくという構成や、コードが適切に抽象化されていて再利用しやすくなっているところにあると思います。
Kaggleに挑む深層学習プログラミングの極意
『Kaggleに挑む深層学習プログラミングの極意』(小嵜 耕平、秋葉 拓哉、林 孝紀、石原 祥太郎、講談社、2023年)は、最近のKaggleで大半を占めるようになった頻出となった画像やテキストを扱うコンペを題材として、取り上げる話題を深層学習に絞ったユニークな本です。コンペ期間中の試行錯誤の順番、実験効率化の方法、ファインチューニングを安定させるコツなど、トッププレイヤーだからこそ語れる貴重な情報が豊富です。
著者の皆様にサインをいただきました。家宝にします✨ pic.twitter.com/uEPImC7xBH
— Shion Honda (@shion_honda) March 22, 2023
Vision Transformer入門
『Vision Transformer入門』(山本晋太郎、徳永匡臣、箕浦大晃、邱玥、品川政太朗 著、片岡裕雄 監修、技術評論社、2022年)は、2021年頃からコンピュータビジョンの主要な研究テーマとなっているVision Transformerの関連研究を網羅的にまとめた本です。現在進行形で議論が行われているテーマも積極的に取り上げているため、批判的な読み方が要求されますが、2022年時点のスナップショットを取った日本語のサーベイとして希少な資料だと思います。
ゲームから学ぶAI
『ゲームから学ぶAI ——環境シミュレータ×深層強化学習で広がる世界』(西田圭介、技術評論社、2022年)は、ゲームAIの技術(深層強化学習と環境シミュレータ)を、チェスの時代から最先端のStarCraft IIやMinecraftまで歴史を追って解説した本です。こちらも、2022年時点のスナップショットとして希少な資料です。
ソフトウェア開発
データ指向アプリケーションデザイン
『データ指向アプリケーションデザイン』(Martin Kleppmann 著、斉藤 太郎 監訳、玉川 竜司 訳、O’Reilly Japan、2019年)は、今日のアプリケーションにおいて避けては通れないデータ処理に関する広範な技術を概観し、それらの特性とトレードオフを理解することを目指した野心的な本です。
詳しくは監訳者による紹介資料や私の書評記事をご参照ください。
Webを支える技術
『Webを支える技術 ――HTTP、URI、HTML、そしてREST』(山本陽平、技術評論社、2010年)は、Webを構成する重要な概念(HTTP、URI、HTML、REST)を実践的な観点から丁寧に解説した本です。前半では基本的な概念を学び、後半では簡単なWebサービスの設計を通して理解を深めるという構成になっています。
私はバックグラウンドが機械学習だったため、Web関連の技術に関する基礎知識を固めるために読みましたが、結果としては非常に勉強になりました。出版から13年が経ち、古くなってしまった記述も存在しますが、本書で取り上げていられているようなWeb技術の基礎を学ぶことは現在においても有意義だと思います。私もこの内容を血肉とできるよう、今後も読み深めていきたいです。
プリンシプル オブ プログラミング
『プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則』(上田勲、秀和システム、2016年)は、「よいコード」を書くために意識すべき事項を集めた本です。具体的には「現時点で必要とされていない機能は作らない(YAGNI)」「データはなるべくテキスト形式で持つべき」といったものです。『達人プログラマー』『Clean Code』『人月の神話』などの有名書籍を集約した本なので、まとめ資料として便利です。
「陳腐化しないように」という意図から具体的なコードやツールの名前が一切提示されていませんが、私には抽象的すぎてピンと来ない部分もありました。
読みやすいコードのガイドライン
『読みやすいコードのガイドライン ―持続可能なソフトウェア開発のために』(石川宗寿、技術評論社、2022年)は、読みやすいコードを書くために理解・実践すべきことを命名、コメント、状態、関数、依存関係、コードレビューという観点から体系的に解説した本です。いくつか紹介すると、以下のようなことが書かれています。
- 読みやすいコードとは、シンプルで意図を理解しやすく、独立していて、構造化されたコードである
- 命名は「何をするか」を端的かつ説明的に表したものにする。逆に、「どうやって使われるか」「いつ・誰が使うか」は書くべきでない
- コメントには、ドキュメンテーションとしての役割と、非形式的な読解補助の役割がある。後者は、コードだけではどうしてもわかりづらい場合に付加的に書くもの
- 状態を管理する変数は互いに直交になるように設計する
- 状態遷移は非巡回かつ冪等になるようにする
- 状態を変更するためのコマンド関数と状態を知るためのクエリ関数は明確に分ける
『プリンシプル オブ プログラミング』と違って具体的なコード例が充実しているので、経験の浅い部分でも理解がしやすかったです。
良いコード/悪いコードで学ぶ設計入門
『良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方』(仙塲大也、技術評論社、2022年)は、「コードの読みやすさ」だけでなく「保守しやすい設計」についても論じている本です。したがって、『読みやすいコードのガイドライン』ではスコープ外だったクラス設計についても多くのページが割かれています。
私は特段の違和感を抱かずに本書を読んでいたのですが、調べてみると批判的な意見もそれなりにあるようです(例)。コードの設計は、唯一の最適解があるようなものではないのだということがよくわかりました…
ビジネス
テクノロジーの世界経済史
『テクノロジーの世界経済史 ビル・ゲイツのパラドックス』(Carl B. Frey 著、村井章子、大野一 訳、日経BP、2020年)は、革新的な技術の登場によって雇用市場や社会全体がどのように変化するかを、産業革命を題材に論じた本です。
タイトルの「ビル・ゲイツのパラドックス」とは、彼が2012年に「イノベーションがこれまでにないペースで次々に出現しているのに、アメリカ人は将来についてますます悲観的になっている」と語ったことを指しています。産業革命の歴史を見てみると、機械化は長期的には間違いなく人類を豊かにしましたが、短期的に見れば雇用を奪い人々を貧しくする局面がありました。この議論は「AIによる自動化」についても成り立つはずで、現在を生きる(寿命がたかだか100年程度の)我々が「機械化で人類の仕事はなくなっていないから大丈夫」と安心するのは楽観的すぎるかもしれません。「AIによる自動化で我々の仕事はどうなるのか?」という問いについて考えるとき、産業革命の歴史は最も参考になる事例であり、膨大な関連研究を渉猟した本書は入口として最適な一冊でした。
ところで、著者は2013年に話題になった論文”The future of employment“で、アメリカの雇用の47%がコンピュータによる自動化のリスクをはらんでいると予測しました。特に、低賃金の仕事、学位を必要としない仕事ほど代替のリスクが高い傾向があるとしました。数字はともかくとして、この傾向は今の状況に照らしてどうでしょうか。私の意見では、現在のAIの発展(特に基盤モデルと呼ばれる領域)と実世界での無力さを踏まえると、むしろ傾向は逆なのではないかと思います。OpenAIも「高賃金な仕事ほどLLMの影響を受けるだろう」と予測しています。私も当然例外ではなく、5年後、10年後に労働市場で生き残れている確信はないので、環境の変化に合わせて自分のキャリアプランを更新しなければと悩んでいるところです。同じ悩みを持っている方がいらっしゃれば、ぜひお話ししたいです。
問題解決大全
『問題解決大全――ビジネスや人生のハードルを乗り越える37のツール』(読書猿、フォレスト出版、2017年)は、問題解決のための手段を古今東西から集めてカタログ的に紹介した本です。ハウツーに留まらず、その出自や周辺知識も紹介しているため、読み物としても楽しめます。例えば、プログラマにはお馴染みのブルートフォース(本書では「力まかせ探索」と呼称)の章では、Thomas Edisonがフィラメントの素材をブルートフォース的に探したエピソードが紹介されています。紹介されている手法群の中で言うと、特に後半で紹介されている手法は「結果が原因にフィードバックしてループができているような状況」に焦点を当てており、勉強になりました。
本書の方策番号26「フロイドの解き直し」で紹介されていたRobert W. Floyd(Warshall-Floyd法のFloyd)の言葉が印象深かったので引用します。
やっかいなアルゴリズムの設計を行ったときに味わった私自身の経験では、ある種の技術が自分の能力を高めるために非常に役立った。すなわち、意欲をそそる問題を1 つ解いた後で、そのときの『洞察』だけを頼りにして、同じ問題を再び最初から解く。この過程を解ができるかぎり明解かつ直接的になるまで繰り返す。そうして同様な問題を解くための、一般性があり、しかもそれがあれば与えられた問題に最も効果的な方法ではじめから接近できるというようなルールを探し出す。そのようなルールは永久に価値のあるものになることが多い」
アイディア大全
『アイディア大全』(読書猿、フォレスト出版、2017年)は、『問題解決大全』の著者である読書猿氏が同年に書いた「画期的な発想に至るための方法集」です。本書も、古代のスピリチュアル系のものからトヨタの「なぜなぜ分析」まで、古今東西の方法を周辺知識とともに紹介しています。自分の思考の枠組みから離れるために、人類はフレームワークを使ったり、他者の視点を内面化したり、セレンディピティを起こすために偶然性を取り入れたりと試行錯誤をしてきました。パラパラと眺めると、「こんなやり方もあるのか」という方法に出会えるのではないかと思います。
個人的に特に気に入った方法は「バーチャル賢人会議」です。これは、自分の最初のアイディアに飛びつくのではなく、脳内で作り上げた様々な賢人が出席する会議にそのアイディアを上げ、想定される意見をぶつけ合うことでより良いアイディアに辿り着くことを目指すというものです。出典をメモするのを忘れてしまいましたが、後述する『良い戦略、悪い戦略』でも、良い戦略の作り方として紹介されていました。ChatGPTのプロンプトにも使えそうですね。
独学大全
『独学大全――絶対に「学ぶこと」をあきらめたくない人のための55の技法』(読書猿、ダイヤモンド社、2020年)は、読書猿氏の最新作で、新しいことを挫折せずに独学するための方法集です。独学は私の趣味であり、とても興味深かったので、内容を少し詳しめに紹介します。
第一部では時間の活用やモチベーション維持などのハウツーを紹介しています。個人的に目新しく感じたのは、「2ミニッツスターター」と「ゲートキーパー」でした。前者は、やる気が起きないときに「2分だけ」と自分を騙してまずは机に向かわせる、というものです。これは実際に試して効果を実感しました。後者は、誰かに自分の進捗の管理者になってもらい、定期的に「振り返り」と「次までにやることの宣言」をするというものです。これは強力な効果がありそうですが、実施のハードルが高いので、切迫した状況のときだけ使うようにしようと思います。
第二部では文献の探し方を紹介しています。ここは、研究をした経験のある方にとっては馴染み深い内容なのではないかと思います。真面目に読んでいないので割愛します。
第三部では本の読み方、使い方を紹介しています。例えば、
- 決められた時間(通勤時間や休み時間など)で一定の量を読むのは良い訓練になる
- 要約すると記憶に残りやすい
- 難解な本はノートを取りながら読むと理解しやすい(「外部足場」による認知資源の節約)
といったものです。ふと考えてみると「本の読み方」というものを誰かに教わった記憶がありませんが、ここに書かれている内容は経験的にも納得できるものばかりでした。実際、このブログは「読みながら書いていたメモ」を「要約」することで書いています。それなりに時間のかかる作業ですが、理解と記憶のためには有効な投資だと考えています。加えて、第一部でモチベーション維持の方法として紹介されている「ラーニングログ」も兼ねています。
第四部は著者自身の独学体験談です。
良い戦略、悪い戦略
『良い戦略、悪い戦略』(Richard P. Rumelt 著、村井章子 訳、日本経済新聞出版、2012年)は、企業やプロダクトにおいて「良い戦略」を作るための指針を豊富な具体例とともに示した本です。
「戦略という言葉が世にはびこって久しいが、正しい意味で使われているケースは少ない」と著者は指摘します。戦略はビジョンや目標とは異なり、直面する状況の中から死活的に重要な問題を見定め、そこに資源を集中させる方法のことです。したがって、「顧客中心のサービスを提供する」や「売上高をX%のばす」といったものは戦略とは言えません。悪い戦略の特徴として、次の4つが挙げられています。
- 空疎である。戦略構想を語っているように見えるが内容がない。華美な言葉や不必要に難解な言葉で高度さを装っている
- 重大な問題に取り組まない。見ないふりをするか、軽度あるいは一時的だとしてごまかしている
- 目標を戦略と取り違えている。困難を乗り越えるための道筋を示すことなく、単に願望を語っている
- 間違った戦略目標を掲げている。戦略目標が重大な問題と無関係だったり、実行不可能だったりしている
これに対して、良い戦略とは、問題の原因、解決するための基本方針、そして優先順位付けされた実行プランからなります。ここで企業の強みが活かせていると、他社に真似できない戦略になります。
本を読んで理解するのと実行との間には大きな壁があるように思いますが、少なくとも読み物としては楽しめました。こちらの書評記事はより詳しく書かれているので、参考になると思います。
FACTFULNESS
『FACTFULNESS 10の思い込みを乗り越え、データを基に世界を正しく見る習慣』(Hans Rosling、Ola Rosling、Anna Rosling Roennlund 著、上杉周作、関美和 訳、日経BP、2019年)は、人間が陥りやすい認知バイアスを、実際の統計に関するクイズを用いながら明らかにした本です。未読の方には、まずこちらのクイズに挑戦してみることをおすすめします。クイズを解いてみて、「え、そうなの?」となった方には一読の価値があると思います。
本書で挙げられている認知バイアスは、過剰な一般化(大きすぎる主語)や恐怖リスクの過大評価など、基本的にはよく知られたものです。しかし、実際のデータを見せられると、自分がいかにこれらのバイアスに囚われているかがよくわかりました。
著者のOlaとAnnaが運営しているDollar Streetは、途上国vs先進国という単純な二項対立から世界に対する解像度を上げるためのWebサイトで、世界の人々の居住国・月収とその暮らしぶりを暮らしぶりを見ることができます。クイズを楽しんだ方にはこちらもおすすめです。
失敗の科学
『失敗の科学 失敗から学習する組織、学習できない組織』(Matthew Syed 著、有枝春 訳、ディスカヴァー・トゥエンティワン、2016年)は、組織の成長にとって失敗が「不可欠な要素」であることを航空業界や医療業界の事例を対比しながら説明した本です。
「失敗は成功のもと」という言葉がありますが、成功にたどり着くのに必要な要素は「ランダムな変更」と「フィードバックループ」です。
航空業界ではかつて事故が頻発していましたが、いまでは自動車よりもはるかに安全な乗り物となっています。ここに至るまでには業界全体の不断の努力がありました。「過去の失敗を無駄にしてはならない」という意識から、事故でも壊れないブラックボックスを開発し、事故現場の状況を詳しく分析できるようにしました。そして、失敗があれば、どんな些細なものでも再発防止策を立てました。
一方、医療業界では状況が異なります。失敗があっても「手遅れだった」「不測の事態だった」などとして詳細な分析が行われず、結果として医療過誤による死亡者数は高止まりしています。この顕著な例が19世紀まで行われていた「瀉血療法」です。百害あって一利なしのこの「治療法」は、患者が治癒すれば「瀉血のおかげで治った」、しなければ「瀉血ですら救えない重病だった」というクローズドループによって、2000年もの間採用されました。
これ等の事例を踏まえて、著者は組織の失敗からの学習を阻害する要因には以下のようなものがあるとまとめています。
- ヒエラルキーや権威主義
- 失敗が起きたら責任者を処罰すればいいという構造
- 仮説検証をせずに信じたいストーリーを信じること
これを裏返せば、失敗を前提とした改善サイクルを回せる組織は強いということになりますが、究極の失敗型アプローチとして、プレモーテムが紹介されています。これは、「このプロジェクトが失敗したとしたら何が原因か」をチームで予め考えて、その原因を潰しておくというものです。
日本語の作文技術
『<新版>日本語の作文技術』(本多勝一、朝日新聞出版、2015年)は、作家・ジャーナリストである著者が「読みやすい日本語」を書くための心得を論じた本です。「文字数の多い修飾語を先に示す」や「段落は思想表現の単位であり、一定の長さで切るものではない」などの心得が紹介されています。
例えば、
- 「私が震えるほど大嫌いなBを私の親友のCにAが紹介した」
- 「Aが私の親友のCに私が震えるほど大嫌いなBを紹介した」
の二つは全く同じ意味ですが、前者の方がパースしやすいと思います。また、段落が適切な単位で区切られていると、パラグラフリーディングのような読み方ができるようになります。
書籍執筆や雑誌への寄稿など、文章を書く機会が増えてきたので、改めてライティングの品質を上げたいと思い読みました。出版する原稿には最大限の注意を払っていますが、読みづらい点があればご指摘をいただけますと幸いです。
読み手としては、「読みづらいな」と思う文章は、確かに本書のルールが守られていないことが多いと感じます。特に翻訳書では、語順や文の構成が原語に引っ張られて読みづらくなりがちです。
まんがでわかる 理科系の作文技術
『まんがでわかる 理科系の作文技術』(木下是雄 原作、久間月慧太郎 作画、 中央公論新社、2018年)は、『理科系の作文技術』の漫画版です。原著の方は学生時代に読みましたが、執筆の機会が増えたので漫画版で復習しました。先に挙げた『日本語の作文技術』とは異なり、本書はテクニカルライティングに焦点を当てているため、以下のようなことが書かれています。
- 結論を先に書き、トピックセンテンスを読めばパラグラフ全体の中身を把握できるようにする(「起承転結」は現代の技術文書には向かない)
- 事実と意見は文を分ける。
- 文意が一意になるようにする
関心のある方には、サイボウズの新入社員向け研修資料もおすすめです。
番外編
仕事とは関係のない本もいろいろ読みました。特に読んで良かったものを以下に挙げます。お読みになった方がいれば感想を語り合いたいです。また、おすすめの本があればコメントなどで教えてください。
Written by Shion Honda. If you like this, please share!