
2026/01/15 20:01
ご用意いただいた文書の整形をお手伝いいたします。 整形してほしいテキストを貼り付けてください。余分なスペースの除去、改行の調整、リストのインデント化、不必要な記号のクリーンアップなど、すべて対応いたします。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary
著者は、効率的で柔軟なソフトウェアを作成するためには低レベルのプログラミングが不可欠であると主張し、高レベルフレームワークだけでは十分だという従来の考えに挑戦しています。
主要な証拠として、New Reddit(React + Redux)とOld Reddit の比較を挙げています。New Reddit はコメントを折りたたむまでに約200 msかかりますが、Old Reddit は DOM を直接操作することで約10 msで同じ処理を実行します。これは React + Redux が状態変更をすべての接続されたコンポーネントへ伝播させるため、多くの不要な再レンダリングを引き起こし、パフォーマンス制御が難しくなることを示しています。
議論は JavaScript フレームワーク(Vue, Svelte, SolidJS)だけでなく、ブラウザ API、WebGL/WebAssembly、および Qt、Unity、SDL などのネイティブ UI ツールキットにも拡大します。著者は「スタックツリー」がトップヘビーであると指摘し、ほとんどの選択肢がブラウザと HTML/CSS/JavaScript に基づいているため、パフォーマンスクリティカルまたはクロスプラットフォームニーズに対して低レベル代替策が少ないことを示しています。結果として、イノベーションを望む開発者と低レベルの専門知識を持つ開発者との間で重なり合う部分が小さく、基盤ツールへのイノベーションが制限されます。
低レベルプログラミングは、ドキュメント不足、モダンな開発ツール(プロファイラー、ライブリロード、IDE サポート)の欠如、および学習資源の断片化により依然として難しいです。Handmade Hero プロジェクトは、C でゼロからゲームエンジンを構築することが指導されれば手頃であることを示し、低レベル作業がアクセス不可能だという神話を覆しています。
将来に向けて、著者は新しい高レベルツールが堅固な低レベル基盤の上に構築される未来を想像しており、それによって追加の抽象化層を加えることなくパフォーマンスと柔軟性が向上すると述べています。低レベルスキルが Handmaed Hero のようなプロジェクトや改善されたツールを通じてよりアクセスしやすくなると、基盤ソフトウェアにおけるイノベーションは増加し、開発者、ハイパフォーマンスソリューションを求める企業、および広範なテックエコシステム全体に利益をもたらします。
本文
低レベルプログラミングに関心を持つべき理由
ハンドメイドコミュニティについて聞いたことがあるなら、私たちは「低レベルプログラミング」に取り組んでいると誤解されるかもしれません。確かに、Handmade Hero というシリーズからインスピレーションを得ており、そこではゼロからゲームとエンジンを作る方法を学びます。
私たちはしばしばソフトウェア業界の現状を嘆きます。現代のソフトは遅く、膨大すぎるほどです。コンピュータは10年前に比べて実質的に10倍以上性能が向上したにもかかわらず、ソフトウェアが悪いために逆に動作が悪化しています。ユーザー体験は年々低下し続け、最も重要なのは人々の期待値が底を打ち、誰もそれを「普通」と考えてしまっている点です。
低レベルプログラミング――より良いソフトウェアへの道
ハンドメイド層は、低レベルプログラミングこそが優れたソフトウェア構築の鍵だと考えています。この主張は表面的には理解しにくいです。平均的な開発者にとってどんな意味があるのでしょうか? すべての人が自分で UI フレームワークやメモリアロケータを一から書くことを期待しているのでしょうか? 実際にそうした手法で作業できるとしても、何か改善されるでしょうか、それともソフトウェアの世界はさらに断片化するだけなのでしょうか?
私は心から、低レベルプログラミングがソフトウェア産業をより良い未来へ導く道だと信じています。前述の批判は妥当であり、ハンドメイド開発者にとって真剣な懸念事項です。では、この「低レベル」がどのように未来に貢献するのでしょうか?
1. 適切なスタックを選ぶ
2019 年、メーカー兼 YouTuber の Simone Giertz が “Truckla” を発表しました。彼女は Tesla Model 3 をピックアップトラックに改造し、構造的健全性、充電機能、実用的ソフトウェアを確保するという驚くべきエンジニアリングを行いました。しかし Truckla はまだ悪いピックアップトラックです。ベッドサイズが小さく、重量の運搬が難しく、地面から設計されたトラックよりも効率的ではありません。
Truckla は欠陥あるアイデアの優れた実装例です。良いピックアップトラックを作るにはまずフレームから始めなければなりません。ソフトウェアにおいて「フレーム」に相当するものはテクノロジースタック――プログラミング言語、フレームワーク、ライブラリ、プラットフォーム――です。これらが車のフレームがボディを形作るようにソフトウェアを形作ります。
セダンをトラックに改造すると悪いトラックになるように、誤ったスタックから始めれば悪いソフトウェアになります。この基本的な不一致をエンジニアリングで救うことはできません。
2. スタックが問題だ
New Reddit と Old Reddit を考えてみてください。New Reddit は React アプリで Redux(現在は Web Components に書き換えられています)を状態管理に使っています。2023 年、1 件のコメントを折りたたむだけで New Reddit では約 200 ms の純粋な JavaScript が必要でした――Old Reddit の ~10 ms より 20 倍遅いです。この低下は怠惰によるものではなく、スタック自体に起因します。
React+Redux アプリは、ストアのどこかが変更されると、それに接続されたすべてのコンポーネントを更新させます。たとえその変更が特定の UI 要素とは無関係であってもです。このような設計では不要な作業を常に抑制しながら高速アプリを構築することは困難です。多くのモダン Web アプリケーションは同様に React や Redux を使うと遅いパフォーマンスに悩まされます。
しかし、私たちはこのスタックに限定されるわけではありません。すべてのレイヤーで代替案があります:
- 別の JavaScript フレームワーク ― Vue, Svelte, Solid JS
- ブラウザ API やカスタム UI スタック ― Flutter, WebGL, WebAssembly
- ネイティブアプリ ― Qt, Unity, SDL, 直接ネイティブ API
これらの選択肢は有効なスタックのツリーを形成します。異なる選択が異なる種類のソフトウェアに適しているため、多くのオプションに精通していれば、問題ごとに最良の選択ができます。
3. 低レベル知識はイノベーションを拡げる
低レベルプログラミングはそのツリーのより深い枝へ進むことを可能にします。CPU、メモリ、OS、ブラウザ、新しいプラットフォームなど、正しい基盤を選択し、その上で高レベルツールを構築できます。低レベル知識がないと、既存の抽象化層の上に建てるしかなく、別のベースが有利かどうか判断できません。
イノベーションを推進する多くの開発者はこのツリーの頂点(JavaScript フレームワーク)で働いています。彼らは 革新 へのドライブと同時に、意味ある変化をもたらす低レベル専門知識を兼ね備えている人が少ないです。低レベル知識を持つ人々の輪を拡大することで、新しいプラットフォームやツール、ライブラリが誕生し、過去の失敗から学びながら堅固な基盤上に構築される可能性があります。
4. 現状の低レベルプログラミング
今日の低レベルプログラミングは非常に難解です。ドキュメントが不足し、巨大なマニュアルや迷路のような man ページしかありません。学習リソースも希少で、見つかるチュートリアルは高価な書籍やニッチなブログに限られます。ツールも遅れをとっており、Web 開発が強力な開発ツールを持つ一方、ネイティブコードのプロファイルにはコマンドラインユーティリティとカスタムスクリプトが必要です。
このアクセス性の欠如は多くの人々が低レベルスキルを学ぶことを遠ざけ、高レベル抽象化が支配的になるサイクルを続けさせます。たとえ低レベルオプションが優れている場合でもです。
5. 目標:底から作られた新しい高レベルツール
私たちの目的は、すべての人に自分でテキストエディタやデバッガを構築させることではありません。むしろ、堅固な低レベル基盤から生まれる「高レベル」ツールを想定しています。これらのツールは現在のフレームワークと同じ利点を提供しますが、旧来の決定によって課せられた制約なしに動作します。
低レベルプログラミングは目的ではなく、ソフトウェア未来のためのより良い高レベル抽象化を生み出す手段です。
要点
- 優れたエンジニアリング選択 ― 低レベル知識があれば適切なスタックを選び、不適切な基盤への無駄な努力を回避できます。
- 将来を見据えたイノベーション ― 新しいプラットフォームやツールを地面から構築できる革新者の数が増えます。
- ギャップを埋める ― ハンドメイドコミュニティはこの交差点に位置し、広範な業界を力づける新しい高レベル抽象化を創造する使命があります。
低レベルスキルへの投資によって、パフォーマンス・保守性・ユーザー体験が膨大な抽象化に犠牲されないソフトウェアエコシステムの土台を築くことができます。