🔖

サポート終了間近 しがない30代エンジニアの本棚(2024年版)

2024/12/06に公開

はじめに

本記事はフラー株式会社 Advent Calendar 2024 の6日目の記事です。

5日目は@Daiji256色彩工学とUIデザインでした。本職Androidエンジニアでありながら、組版に造詣が深いちょっと変わった面白い方です。ペヤングを食べるのがめちゃくちゃ早いです。

なぜ「サポート終了間近」?

私たちエンジニアにとって身近な「サポート終了」というフレーズ。

「Windows XP のサポート終了」「Internet Explorer(IE)のサポート終了」のように、愛しさとせつなさと心強さを感じさせる出来事を彷彿とさせます。

そして今、30代中盤を迎えようとしている「しがないエンジニア」である私も、どこかソフトウェアのように「サポート期限」が迫っているような気がしてなりません。若手エンジニアの勢いと新しい技術の波に押され、いつの間にか「レガシー化」の予兆を感じる日々。かつて最先端だった知識も、気づけば「非推奨(deprecated)」のタグが付きそうな危うさを感じます。

まるでログローテーションされていく古いログファイルのように、20代の頃に買い込んだ技術書たちは、少しずつ本棚の奥へと追いやられていきます。しかし、これは決して悲観的な「サポート終了」のお知らせではありません。むしろ、新たなバージョンアップへの準備期間と捉えています。本棚に並ぶ書籍たちは、まるでソフトウェアのバージョン履歴のように、私のエンジニア人生の成長記録でもあるのです。

新旧混在する本棚と共に、セキュリティアップデート待ったなしの30代中盤への移行準備を始めたいと思います。「互換性の維持」と「新機能の実装」の両立を目指して...。

むずい。

物理本棚(1~40)

1

「コンピュータの深淵。現実世界に戻る際に上昇負荷を感じる」と目を丸くしながら読み進めた基礎理論の本。OSやCPUの仕組みを学ぶ本たちとの格闘は、まるで量子の世界に迷い込んだアリスのような心持ちでした。時には理解が追いつかず、電子の海で溺れそうになることもありましたが、不思議と諦められない魅力がありました。

一度に全てを読もうとすると、きっと脳がスタックオーバーフローを起こすことでしょう。今なお「わかった!」と「わからん!」の間を高速でコンテキストスイッチしている気分です。

2

カーネルについて学ぶ過程は、まるで地球の核心部に向かって潜っていくような体験でした。時には高温高圧の環境に耐えかね「私は貝になりたい」と領域を閉ざしそうになることも。それでも、システムの根幹に触れる喜びが、岩戸の前で踊り狂うアメノウズメのように心を沸き立たせてくれます。

3

プログラムのリンクとロードの世界は、まるで精密な積み木細工を組み立てるような魅力に満ちています。最初は「なんでこんな複雑な仕組みが必要なんだろう?」と首を傾げていた私でしたが、オブジェクトファイルの中身を覗き込むうちに、その美しさに取り憑かれてしまいました。

シンボル解決の仕組みを理解した時は、まるで郵便配達員の気分。「この関数はどこに住んでいるの?」「このグローバル変数はどの家に届ければいいの?」と、アドレス空間という街の地図を片手に、リロケーション情報を頼りに配達する日々。時には「Undefined Reference」という不在票を切らざるを得ないこともありましたが、それも良い思い出です(フィクションです)。

4

通信プロトコルの階層構造を理解した時は、まるで海運会社のロジスティクスを覗き見たような興奮がありました。アプリケーション層からデータリンク層まで、ペイロードという貨物が様々な港で積み替えられながら、目的地へと向かう様子に魅了されました。時には「Connection Reset」という暗礁に乗り上げることもありましたが、それも良い経験となっています。

マイ・ハート・ウィル・ゴー・オン。

5

公開鍵暗号方式は、まるで「南京錠は誰でも閉められるが、開けられるのは鍵を持つ者だけ」という、シンプルかつ革命的な発想。数学という魔法で守られた城塞の美しさに、デザインの真髄を見た気がします。

6

マルウェアの動的解析は、まるで闇の魔法との戦いでした。サンドボックスという結界を張り、未知の呪文の効果を安全に観察する。時には「あ、これは自己書き換えの術か!」と、マルウェアの変身する姿に驚かされることも。アンチデバッグ技術との戦いは、まさに正義の魔法少女vs闇の魔術師という構図でした。

7

新しい脆弱性報告を読むたびに、未知の化学反応との遭遇のような興奮を覚えます。

8

プログラミングのパターンと設計原則は、まるでソフトウェア建築の総合資料館のようです。シンプルさと統一性を追求する姿勢は、ルイス・サリヴァンの「形態は機能に従う」という理念を彷彿とさせます。特にコードの整理整頓の作法には、まるで茶室の設計のような繊細さを感じます。

9

デザインパターンとの出会いは、建築における古典様式との邂逅のようでした。GoFのパターン集を読むたびに、「ああ、これはソフトウェアのパルテノン神殿だ」と感動したものです。Factoryパターンは職人の工房のように部品を生み出し、Observerパターンは都市の監視システムのように変化を伝播させる。それぞれのパターンが持つ意図の美しさに、心を奪われました。

10

マイクロサービスアーキテクチャの学習は、特に印象的でした。巨大な単一システムを、適切な責務を持つ小さなサービス群に分割していく作業は、まるで計画都市をコンパクトな自治区に再編成するような感覚。「この境界線は正しいのか」「このサービス間の通信は本当に必要なのか」と、バランス感覚の問われる難しい問いが押し寄せてきます。運用期間を経て、最終的には合併する自治体も出てきます。

11

コンテナの仕組みを理解した時は、まるで異次元ポケットを発見したような感動がありました。「なるほど、これは引っ越し先でも完全に同じ部屋の配置を再現できる魔法の箱なのか」と。イメージのレイヤー構造は、まるで透明な箱を重ねていくような美しさがあり、差分管理の効率性改善も外せないポイントです。

12

内部構造の学習は、まるで古代図書館のアーカイブシステムを解き明かすような体験でした。インデックスの仕組みを理解した時は、「ああ、これはアレクサンドリア図書館の目録システムのようだ」と感動したものです。B+ツリーは知識を整然と配置する書架のように、ハッシュテーブルは素早く情報にアクセスできる司書のように、それぞれが絶妙な役割を果たしています。

パフォーマンス改善プロジェクトにアサインされた際のクエリチューニングとの格闘は、特に印象的でした。実行計画を読み解く作業は、まるで古文書の解読のよう。「なぜこのクエリはフルスキャンを選んでしまうのか」「どうすればインデックスを効率的に使ってもらえるのか」と、データベースエンジンの気持ちになって考えた日々。時にはクエリが「table scan」という迷宮に迷い込んでしまい、インデックスという道標を置いて救出するしかないこともありました。

13

「誤差逆伝播法」。その響きには不思議な魅力があります。最初は「Back」と「Propagation」を直訳しただけの無機質な技術用語かと思っていました。しかし、その仕組みを理解するにつれ、この日本語訳の妙に魅了されていったのです。「誤差」という人間的な不完全さを、「逆」という反直感的な方向に「伝播」させていく。その過程には、まるで禅の公案のような深遠さがあります。

14

バックリファレンスは過去を参照する時間旅行のような魔法に見え、先読み・後読みのアサーションは、まるで文字列という時空の境界線を行き来する瞬間移動の術のようです。

15

単体テストとの出会いは、まるで顕微鏡で細胞を観察するような精密な体験でした。「ああ、これはプログラムの最小構成単位の健康診断なんだ」と。テストケースを書く作業は、実験室で培養液を調合するように繊細で、各メソッドの振る舞いを検証する過程は、まるで生命活動を観察するような緊張感がありました。一発で検証に成功した場合は、なぜか実装の失敗を疑ってしまいます。

インテグレーションテストの設計は、複雑な化学実験のようでした。異なるコンポーネントを組み合わせた時の予期せぬ反応を予測し、適切な検証方法を考える。時には「テストが重すぎる」という副作用に悩まされ、テストの粒度という触媒の調整に苦心することも。

16

グラフアルゴリズムの学習は、特に印象的でした。ダイクストラのアルゴリズムは、まるで古の航海士が描いた最短航路の地図のよう。「各頂点を訪れる順序のなんと洗練されていることか」と、その美しさに見とれた日々。最小全域木を求めるクラスカル法は、まるで群島を最小のコストで結ぶ架橋計画のようで、その効率性に感銘を受けました。そして、すべてを忘れました。

17

障害対応の学習は、まるでデジタル世界の防災マニュアルを編纂するような経験でした。フェイルオーバーの設計、バックアップ戦略、監視体制の構築。それぞれが重要な意味を持つ施策として、システムの信頼性を支えています。今では、新しいWebサービスを設計するたびに、その可用性とメンテナンス性のバランスを考えています。

18

形態素解析との出会いは、まるで言語学者が微生物を観察するような精密な体験でした。「ああ、これが言葉という生命体の最小単位なのか」と。文章を形態素に分解する過程は、まるで言語DNAの解析のよう。特に同音異義語の処理を理解した時は、「日本語って本当に奥が深いな」と感動した日々でした。

19

Gitとの出会いは、まるでタイムマシンの発明者になったような体験でした。コミットログという歴史書に、コードの変遷を刻んでいく作業は、職人が自らの作品の製作過程を丁寧に記録するような慎重さが必要です。特にマージの仕組みを理解した時は、「ああ、これは異なる時間軸の歴史を統合する魔法なんだ」と感動したものです。fix, fix, fix, イイカンジニ というコミットログは絶対に許しません。

20

全ての認定を取得した今、振り返ると全ての試験が私のクラウドエンジニアとしての成長に不可欠なピースだったことがわかります。ただし、AWS認定試験の全範囲を一晩で理解しようとすると、きっと脳のEBSボリュームが枯渇してしまうことでしょう。この探求は終わりのないクラウドの旅。今日も私は、新しいサービスのアップデートを追いかけながら、より洗練されたクラウドアーキテクチャを夢見ています。

2024 Japan AWS All Certifications Engineersに掲載いただきました。

21

要求工学との出会いは、まるで建築家が施主の夢を形にしていくような創造的な体験でした。「ステークホルダーの本当の要求とは何か」「それをどうやって形にしていくのか」という課題と向き合う中で、要求という抽象的な概念を具体的な要求仕様へと昇華させていく技術の奥深さを知りました。新しいプロジェクトを始めるたびに、この知識体系という地図を頼りに進むべき道を探っています。

22

UMLとの出会いは、まるで新しい言語体系を習得するような知的興奮に満ちた体験でした。クラス図を描く際の継承関係の表現は、まるで家系図のような優雅さがあり、シーケンス図でオブジェクト間の相互作用を表現する時は、まるでオブジェクト達の会話を記録するような繊細さが求められます。日々、mermaid記法でデジタルの海を遊泳しています。

構造化分析との格闘は、特に印象的でした。DFD(データフロー図)を描きながらシステムの本質を理解していく過程は、まるで生命体の循環系を解き明かすような知的冒険。「このプロセスの粒度は適切か」「このデータの流れは自然か」と、図形の配置に没頭した日々。

23

新しいプロジェクトを始めるたびに、技術とマネジメントの両輪をいかにバランスよく回すかを考えています。

24

Goの並行処理との出会いは、まるで交通整理の達人になったような体験でした。チャネルを通じたゴルーチン間の通信は、まさに整然と制御された道路網のよう。「ゴルーチンの生成はこんなにも軽量なのか」「チャネルを使った同期がこれほど直感的なのか」と、並行プログラミングの新しい世界観に目を開かされました。思わず「ほ〜あ」と口もあんぐり開いてしまいます。

エラー処理の明示的なスタイルは、まるで武道の基本動作のような厳格さと美しさがありました。「if err != nil」という定型句は、初めは冗長に感じましたが、その誠実なエラーハンドリングの姿勢に、プログラミング言語の設計思想の深さを感じるようになりました。

25

C/C++との格闘は、まるで厳格な武道の修行のような日々でした。「苦しんで覚える」という言葉は、特にポインタとメモリ管理との死闘を思い起こさせます。しかし、この苦しみには確かな意味がありました。メモリ管理を理解することで、プログラムの動作が見えてくるようになりました。

26

関数型プログラミングの純粋さは、まるで禅問答のような悟りの体験をもたらしました。再帰と高階関数の組み合わせは、複雑な問題を美しく解きほぐしていく。mapやreduceを使いこなすうちに、「プログラミングとは本質的に何なのか」という問いに、新しい視座を得ることができました。そして、今では立派に emacs キーバインドになりました。

Awesome Emacs Keymapをいれましょう。

27

ViewModelとの対話は、まるで外交官のような存在との出会いでした。ViewとModelの間に立って、両者の言葉を翻訳し、調和を保つその姿は、まさに外交の達人。Android界隈の麻生太郎さんです。

28

TypeScriptとの出会いは、まるで工具に目盛りを付けるような体験でした。JavaScriptに型という制約を加えることで、より安全な開発が可能になる。「ああ、これが静的型付けの安心感か」と、型推論の力強さに感動したものです。困ったらAny。

29

PHPとLaravelは、まるでウェブ開発の料理レシピ本のような親しみやすさがあります。最初は「なぜこんなにも多くのマジックメソッドやヘルパー関数があるのだろう?」と、フレームワークの規約に戸惑っていた私でしたが、徐々にLaravelの"artisan way"という哲学に魅了されていきました。

30

型システムとの出会いは、まるでプログラミングの世界に秩序をもたらす文法家との邂逅のようでした。型安全性がもたらす確かな安心感に触れるうちに、その思想の深さに魅了されていきました。型は設計を語る。なかには、理解するために何杯ものコーヒーを強いられる物語も。

31

組織開発と組織学習は、まるで人間という複雑な生態系を研究する生物学者のフィールドノートのようです。「なぜ人は変化に抵抗するのか」「どうすれば変革への免疫を和らげることができるのか」と、人間の本質的な性質との対話を求められます。時には「変革の痛み」という避けられない現実に直面することもありましたが、それも成長の糧となりました。「組織は生きている」という言葉の持つ深い意味を、日々実感している今日この頃です。

32

戦略なき戦術は戦いに至る最も遠い道程である。

33

人間の非合理性を表現しようとする試みは、まるで感情という霧の中から法則性を見出そうとする古代錬金術のよう。「このバイアスは本当に普遍的なものなのか」「この心理的効果は定性化できるのか」と、いまでもなお終わらない問いが続いています。

34

新しい問題に直面するたびに、論理の構造化と直感的な理解のバランスを考えています。こうした書籍を読んでおきながらですが、私自身は論理よりも飛躍を孕んだ直感が先行します。

直感:「そんな気がする!」
論理:「根拠を示してください」
直感:「なんとなく!」
論理:「(ため息)では、順を追って整理していきましょうか...」

大抵、こうしたやり取りが行われています。

35

『失敗の本質』との出会いは、まるで軍事史という鏡を覗き込んで、そこに現代の組織の姿を見出すような衝撃的な体験でした。日本軍の作戦構想と実行過程を分析することは、まるで現代の組織がつまずく瞬間をスローモーションで観察しているような体験。「この意思決定プロセスの歪みは、今の組織にもあるな」「この情報伝達の分断は、どこかで見たぞ」と、背筋が寒くなるような既視感の連続です。

なぜ優秀な個人の集まりが、集団となった途端に致命的な判断ミスを犯すのか。その一方で、時として集団は個を超えた知性を発揮することもあります。組織とは「個の賢さ」と「集団の愚かさ」が絶妙なバランスで共存し、ときに反転する、不思議な生態系なのかもしれません。

36

三國シェフのレシピに外れはありません。

37

囚人のジレンマを理解した時は、まるで人間社会の根源的なパラドックスを覗き見たような衝撃がありました。「なぜ個人の合理的な選択が、集団として見ると非合理的な結果をもたらすのか」という問いは、薄皮に包まれた自身の内面をひっくり返されたような居心地の悪さを感じてしまいます。

38

私だけが儲かればいい。

39

オルテガ思想との出会いは、まるで時空を超えた哲学的な対話のようでした。最初は「なぜ大衆社会論がこれほどまでに現代に響くのだろう?」と、その先見性に戸惑いを感じていた私でしたが、『大衆の反逆』の洞察の深さに触れるうちに、その普遍性に魅了されていきました。

特に「現代人は過去の蓄積の上に生まれ、それを当然の権利と思い込んでいる」という指摘との出会いは衝撃的でした。まるで現代のテクノロジー社会を予言していたかのような鋭さ。スマートフォンを何気なく操作する私たちの姿は、まさにオルテガが警鐘を鳴らした「文明の恩恵を当然視する大衆」の典型とも言えます。

民主主義の劣化は「すべての過去よりも現在が優れているといううぬぼれ」から始まります。

40

データの可視化やWeb技術の本が、化学の教科書と英文法の間で微妙な距離感を保っているさまは、会社の異業種交流会のような雰囲気です。勇気を出して参加はしたものの、ボッチ。手を伸ばせばすぐそこに人はいるのに精神的にはボッチ。悲しい社会の縮図を表現しているかのようです。

すみません。本棚の整理が追いつかなくなっているだけでした。

電子本棚

電子書籍の蔵書もありますが、技術書以外の書籍がメインのため割愛します。

Amazon Kindleユーザーということもあり、電子書籍リーダーには Kindle Oasis というページ送りのための物理ボタンを備えた端末を愛用しているのですが、終売が公式に発表されてしまいました。唯一のページ送り物理ボタン搭載モデルが...。

ユーザーの気持ちわかってない。

おわりに

水をのむように本を読んでいます。

私たちの体が必要な水分を保持し、余分な水分を自然に排出するように、読書を通じて得た知識も、必要なエッセンスは自然と体系化され、それ以外は知らぬ間に意識の外へと流れ出ていきます。一時的に体内を巡る水分のように、読んだ内容の大部分は記憶から消えていきます。しかし、エッセンスは自ずと蓄積されているように感じます。忘れたっていいんだと思います。

特にエンジニアにとって、技術書は「水分補給」のようなものかもしれません。新しい言語やフレームワークを学ぶとき、私たちは大量の情報を短期間で摂取します。すべての構文やAPIを永続的に記憶する必要はありません。必要なのは、渇きを感じたときに、どの「水源」にアクセスすればよいかを知っていることです。

そして、時にはゆっくりとした「お茶」のような読書も必要でしょう。技術書の「ミネラルウォーター」だけでなく、教養書という「お茶」を楽しむことで、より豊かな知的生活が育まれていきます。

ほんまに?

ちなみに、お気に入りの出版社はラムダノートさんです。
私自身がインターネット活動に消極的なため、当然ながら接点はないのですが、いつも素敵な書籍を出版していただき大変ありがたい限りです。

ここまでお読みくださった方、ありがとうございました。

フラー株式会社 Advent Calendar 2024まだまだ続きます。
乞うご期待。

Discussion