世界を動かす技術を、日本語で。

大きな抽象の「隠れた」コスト

2026年5月4日原文(jdgr.net)

概要

  • 抽象化 によるコンピューティングの進化とその影響
  • 技術的知識 の低下がもたらす課題
  • 大量生産 されたソフトウェアの品質問題
  • 個人的な経験 とキャリアの苦悩
  • 支援や対話 への呼びかけ

抽象化とコンピューティングの進化

  • コンピューティング世界 では、複雑さを抽象化する傾向
  • 抽象化によって 大局的な視野 を得られるメリット
  • 一方で 理解の精度 が低下しやすいリスク
  • 歴史的背景 として、以前はプログラム実行が高コスト・高難度
  • マシンの仕組み を熟知しなければ、まともに動かせなかった時代

技術的知識の低下と現代の開発

  • メモリ・計算資源 の増加による参入障壁の低下
  • 最適化 やリソース節約への意識の希薄化
  • 外部ライブラリ の安易な導入と品質・用途の理解不足
  • 前提知識の低下開発速度の上昇 という新常態
  • ソフトウェアの 量的拡大 と、それに伴う 品質低下・バグ増加

LLMとソフトウェア品質の新時代

  • LLM(大規模言語モデル) の登場で誰もがプロンプト作成可能
  • 見た目や動作は良くても 本質的な品質は低い ケースが大半
  • 良し悪しの判断 には専門知識が不可欠
  • 未経験者 がしばしば「愚者の金」に騙される現象
  • Alibaba で安価な鋼材を買う例えで 品質リスク を強調

「十分であること」と現実

  • 良い」ものでなくとも 十分な場合 がある現実
  • Wonder Breadartisan sourdough の比較でコストと満足度を説明
  • 健康や本物志向 よりも、手軽さや入手性を優先する人も多い現状

個人的な経験と現状

  • なぜこの話をするのか、 自嘲気味な問いかけ
  • 身体的な事情 で肉体労働ができない現状
  • 子どもの頃から マニュアル読破・自動化スクリプト作成・メモリエディターでのゲーム改造・OllyDbgによるマルウェア解析 などに熱中
  • 好きなことが仕事になる喜び を感じていた過去
  • 現在は 父親 として家族を支える責任
  • 2025年7月から無職 で、履歴書修正・応募・Claudeを使ったPoC作成・コールドリーチなどを実施
  • 就職活動の行き詰まり と焦燥感

対話・支援の呼びかけ

  • 話を聞きたい方、興味のある方 への面談依頼
  • スケジュール調整 の案内

Hackerたちの意見

今こそストイックになる時だね。物を持っていても、何も持っていないかのように生きるべきだ。でも、著者が言うように、これは予測可能でもあった。今の私の国では、4GBのRAMとセレロンしか搭載していないノートパソコンが高値で売られている。2000年代に、ハードウェアが安いから効率の悪いコードを書こうなんて考えなければ、素晴らしいことができたはずだ。同じハードウェアが2000年代にはYouTubeの動画を再生できたのに、今ではそのウェブサイトすら開けない。Electronが抱きしめてくれる... 今、人々はAIに怒っているけど、いつまで続くのかな?オブリビオンの映画みたいに海が干上がるの?専門家たちは?専門家の世代は過ぎ去ってしまう... もしこの流れが止まらなければ、あるいは少なくとも修正されなければ、人々は盲目的にAIに依存するようになるだろう。著者には未来に明るい日々が待っていると思うし(今も隠れたニッチで考えているだろう)、知識はいつでも貴重だからね。私が得た主な教訓は、TIや流行の約束を買うのを減らして、知識と技術が共に歩む場所を見つけることだ。

でも、そのアドバイスは全部役に立たなかった。ストイックになれ。支え合え。存在することを受け入れろ。エルドリッチな神々のランチになるのが運命だって。ストイックってのは、牛がスロープを上がるときに期待される態度だよ。静かに夜に消え去るな、光の消えゆくことに怒れ。

「重複は間違った抽象化よりもはるかに安い。」

ここ数年で、抽象化がどのように機能しているかを理解している人が、企業からは美徳よりも負担として扱われることが多いと結論づけた。ますます多くの場所が、誰かが反論したり、これが最良の方法かどうかを問いただすよりも、Jiraのチケットを早く終わらせることを求めている。彼らは物を欲しがるだけで、それがうまく機能するかどうかは気にしない。効率がどうかも気にしない。今すぐ欲しいんだ。私たちはReactに移行していて、10年以上使ってきた内部フレームワークを置き換えようとしている。移行の最大の部分は「採用」だ。私の一般的な感覚では、誰もReactがどのように機能しているかを理解していない。質問すると、一般的に返ってくる答えは「心配しないで」だ。すべてが巨大にオーバービルドされていて、ひどい状態だ。ほとんどの人が自分の仕事のレベルから一つ上のことを学ぶことすら気にしないから。学ぶ人は雇われなくなる。すべてが本来必要な何百倍、何千倍も多くのサイクルと電力を消費するのは、人々が自分のやっていることを理解することを面倒に思っているからだ。

ますます多くの場所が、誰かが反論したり、これが最良の方法かどうかを問いただすよりも、Jiraのチケットを早く終わらせることを求めている。これは、私が技術的な決定を下す立場でない限り、やりたくないことの一つだ。私がするのは、物を作ることだけど、防御的プログラミングを取り入れている。私のコードが良いことを保証し、インターフェースを強化して、新しいバグの原因が私でないことを示せるようにしている。人々は無頓着だから、あなたの仕事と彼らの仕事の間に防護扉を設けることが大事だ。それに、私は新しいツールの抽象化について学ぶ時間を取る。たとえそれがオーバーエンジニアリングされていても。目を閉じて間違いを犯すのは私のスタイルじゃない。

ここ数年で、抽象化がどのように機能しているかを理解している人が、企業からは美徳よりも負担として扱われることが多いと結論づけた。これは現代のソフトウェアエンジニアリング業界で最も疎外感を感じさせることの一つだ。5歳の頃からコンピュータで遊んでいた人が、16週間のブートキャンプを受けて、Claudeのサブスクリプションを持っている人と同じ立場にいるなんて。最近、ドラムとベースのショーに行って、他の人と話した。私があまりドラムとベースを聴いていないのが明らかで、最も人気のあるアーティスト以外の名前を挙げられなかった。人々は、あなたが彼らの音楽シーンの一部ではないと気づくと、反応が少し変わる。あなたは外部者、観光客、あるいはポーズを取っているだけの人だ。それは問題ではなく、サブカルチャーのあり方だ。あなたはそのライフスタイルを生きているか、そうでないかのどちらかだ。LLMがやっていることは、ポーズを取る人や文化の盗用者を大量に自動化している。あなたはこの領域の細かい部分を本当に理解していないし、IRCやbashターミナルで実際に生活したこともない。でも、簡略化された地図を振り回して、すべての裏路地や小道が欠けている中で、翻訳されたフレーズ集を使ってネイティブのふりをすることはできる。 > 私の一般的な感覚では、誰もReactがどのように機能しているかを理解していない。質問すると、一般的に返ってくる答えは「心配しないで」だ。ソフトウェアの問題は、コンピュータオタク文化の盗用者と、プログラミング言語をネイティブに「話す」人々の区別ができなくなっているように思えることだ。基準が低すぎて、ランタイムとコンパイルタイムの違いを理解することすら期待できない。そんな高度で難解な(つまり高校レベルのコンピュータ)トピックを持ち出す人は、軽蔑される。基礎的なトピックで無知をさらけ出す能力が、存在的(またはキャリアの)脅威を示すかのように。非STEMのバックグラウンドを持つ人々の間で、知識を求めることを軽蔑する反知性主義が増えている。勉強するのは全く無駄だ - 数学と同じように。特にトロントでは、抽象化の下に潜ることを気にするホビー愛好者を見つけるのがますます難しくなっている。

私は「ソフトウェアデザイン」を専攻して卒業した時から、これが明らかだった。大学ではソフトウェアデザインとソフトウェアアーキテクチャが私の中心的な興味だった。卒業した時、どの会社も私が学んだアーキテクチャの概念に興味を持っていないことにショックを受けた。UMLクラス図、シーケンス図、ER図などは、すでに廃れていた。インターネット企業がスケールアップする中で、シーケンス図への関心が一時的に復活したこともあった... 特に複雑なバグやメッセージパッシングのシナリオを説明するためのコミュニケーション手段として。しかし、それも長続きしなかった。今では、ほとんどのソフトウェアがレースコンディションや深刻な脆弱なアーキテクチャの欠陥に悩まされている。暗号通貨は多くの攻撃の被害を受けている。レースコンディションによって数十億ドルが失われた... それは発見されたものだけの話だ。実装後に見つけるのは非常に難しい。今日私たちが使用しているプログラミングのプリミティブは、レースコンディションを避けるように最適化されていないし、良い並行性パターンを促すことすらしていない。むしろ、便利だけど無秩序な並列化を促進し、型安全性に焦点を当てるように最適化されている。スキーマ検証のギャップに正当に警鐘を鳴らしていた多くの人々(APIの境界で重要なこと)は、型安全性に過度に執着するようになった。私はNode.js用の非同期プリミティブを構築したが、誰も気にしなかった!誰も!他の開発者もほとんどの他の言語で同じ経験をしている。Elixirのようなニッチな言語だけが、実際にそれを重要視していると思う。でも、誰も既存の言語で問題を解決できるとは認めなかった。ひどい状況で、まるで誰かがそうあってほしいと思っているかのようだ。「並行性の安全性」という用語すら存在しない!スレッドセーフティについて漠然としたアイデアを持っている人もいるが、それは特定の並行性プリミティブに特有のものだ。でも、非同期ロジックの並行性(今ではもっと一般的)についてはどうだろう?その点では、私はキャリアの中で完全に抑圧されていると感じている。アーキテクチャに関する唯一の声が「メインストリーム」に届いたのは、アジャイルソフトウェア開発の発明者の一人であるマーチン・ファウラーだった。その後、Reduxのダン・アブラモフが続いた。いくつかの著名な意見を持つアーキテクチャの本が出版されたが、良いアーキテクチャの根底にある本質的な哲学を特定したものはなかった。私がこのテーマについて読んだ中で最も簡潔な引用は、OOPの発明者であるアラン・ケイのもので、「このトピックのために『オブジェクト』という用語を早くに作ってしまったことを申し訳なく思っている。多くの人が小さなアイデアに焦点を当ててしまうからだ。大きなアイデアはメッセージングだ。」この引用が好きな理由はいくつかある。まず、知恵を示していること、次に、問題が何であるかを非常にシンプルに伝えていること、そして、私たちが数千の複雑な重なり合った部分的に矛盾するアイデアで飽和状態にあるこの分野で、「焦点」の重要性をほのめかしていることだ。FPのトレンドは、ある意味で赤いニシンだったと思う。型安全性も同様だ。はい、ある程度は役に立ったし、良いアイデアもいくつかあったが、人々はそれに夢中になりすぎて、最も基本的な改善の領域が完全に無視されてしまった。私にとって、FPの核心的な価値提案は「値渡しは参照渡しよりも安全だ」と言える。アラン・ケイの「大きなアイデアはメッセージングだ」という文脈で考えてみてほしい。オブジェクト参照はメッセージか?NO!ライブインスタンスはメッセージではない!まさにその通り!彼のポイントは値渡しを支持し、さらに簡潔で最小限のパラメータを促す。良いアーキテクチャは2つのコアコンセプトに根ざしている。1. 緩やかな結合。2. 高い凝集性。これらはロジックと構造

ハードウェアは安いけど、人間の労働はそうじゃない。企業は、顧客からお金を引き出す最善の方法は、今はほとんど機能しないものを提供することだと気づいたんだ。後で素晴らしいものを提供するよりもね。

まあ、もっとReact開発者が内部の仕組みを知ってたら、別のものを選ぶかもしれないね。冗談はさておき、双方向データバインディングが必要ないなら、Reactフレームワークを使うと、必要のないクソみたいなものがたくさん引っ張られてくるよ。ほとんどのウェブアプリにはReactは必要ない。-------- [1] 私が無神論者である理由は、あなたの宗教についてあまり知らないからじゃなくて、逆に知りすぎてるからだっていつも冗談を言ってる。

この移行の最大の部分は「雇用」だ。つまり、アウトソーシングのことを指している。

10年以上使ってきた内部フレームワークを置き換えること その内部フレームワークが何か教えてくれる?

彼らはそのものを欲しがっていて、うまく動くかどうかは気にしない。効率的かどうかも気にしない。今すぐ欲しいんだ。それは、成功するプロダクトを何を作るべきか分からないから、いろんなアイデアを試してみて、どれがうまくいくかを見ようとしているからだ。この早い反復ループの中で、人々は適当にいろんなものを組み合わせて何かを作り、その何かが traction を得ると、その不安定な基盤の上にさらに積み重ねていく。

Hacker Newsで議論の続きを見る