第三つのハード・プロブレム

2026/05/14 22:00

第三つのハード・プロブレム

RSS: https://news.ycombinator.com/rss

要約

日本語翻訳:

本文で扱われている核心的課題は「ツリーマッピング」であり、複雑な情報のネットワークを硬直した階層に強制する際に、元々の接続が必ず歪んでしまうという困難な問題である。ツリーはデータベースの B ツリーやコンパイラのアブストラクト・シンタックスツリーなどの形式的構造を通じて物理空間を表現することには自然に適応しているが、重要なリンクを犠牲にして思想的な微妙さを捉えられないことが多い。組織化と複雑さの間にあるこの緊張関係を管理するためには、開発者がツリーベースのモデルを採用する際に、どの関係性を平坦化するか、あるいは捨てるかを意図的に決定せねばならない。この必要性は、生物学が単純な特性からクラディスティクスへ移行した歴史的変化、文学による都市計画への人工性の批判、そして Google の Bazel ビルドシステムのような工学上のジレンマなどによって示される。現在の影響範囲にはデータベースモデリング、Rust の借用チェックアロガの論理、

node_modules
などのディレクトリレイアウトが含まれる。今後、この分野はノード間のリンクをどのように削除するかについて決断を下すことで、構造的秩序と情報の複雑さのバランスを目指していく。究極的には、より優れた戦略により、業界はデータを構造化するプロセスにおいて重要な関係を失うことなく膨大なデータを整理することが可能となる。

本文

✑ 2026 年 2 月 28 日 glasperlenspiel プログラミング

スペース、ツリー、そしてウェブ

ファイルシステム | 書き込み | 建築 | 生物学 | 結論

フィル・カルトンの名を冠した古典的なジョークによれば、コンピュータサイエンスにおいて最も困難な問題は二つしかないという。それらは「名前をつけること」と「キャッシュの無効化」である。なぜなら、これらに算法によって解を得ることは不可能だからだ。優れた名称は共感と理解から生まれ、キャッシュの無効化にはシステム全体の視点と慎重な分析を要する。本稿では、もう一つの同様な問題を取り上げる。それは広範囲に及ぶのにかつくすしく見えながら、いまだによく認識されていない問題であり、「一般グラフを階層構造にマッピングすること」である。私はこれを「ツリーマッピング(tree mapping)」と呼ぶ。

スペース、ツリー、そしてウェブ

人間の脳は物理的スペースを取り扱う点において、驚くほど優れて進化したものである。私たちは未知の都市で直感的に方位を確立でき、数十年前に訪れた場所の正確な地図を描き出すことができる。当然のことながら、私たちはこの能力を生活のあらゆる側面で活かしたいと考えている。物理的スペースの決定論的特徴の一つは、その階層的かつ局所的な構造にある。私たちは各々の空間部分を自己完結的なものとして知覚し、近隣の部分との相互作用のみを認めるため、世界を階層的に捉えることができる:粒子から原子へ、原子から分子へ、分子から生物体へ、そして天まで続くように、銀河や超団塊へと至る。階層性は私たちにとってあまりに自然なものであり、それが支配的な整理ツールとなった。私たちは事物や考え事をラベル付けされた箱へ分類し、それらをさらに大きな箱の中に入れる。これは同時に一つの場所しか在ることができない物理的物体に対しては有効であるが、アイデアや情報はそのような階層的分類(タクソノミー)に抵抗する。むしろ、それは堅牢な境界を貫く複雑なウェブ構造を形成するのである。ツリーは階層性を形式化するものであり、コンピュータサイエンスで最も広く用いられる構造の一つである。ツリーはスペースと密接に関連しており、普遍的な空間整理装置として機能する:データベースでは B ツリーが順序付けられたキー空間を整理し、グラフィックスでは k-d ツリーが高次空間を区切り、コンパイラでは抽象構文木(AST)が線形的なトークン列を整理する。

解析は、トークン列に構文的役割を付与する必要があるという点で、一種の空間整理の問題である。

しかしながら、ツリーがいかに有用であっても、ウェブを直接モデル化することはできない。したがって、ウェブ構造を歪めながらそれをツリーの中に埋め込むという課題が「ツリーマッピング」となり、その例をいくつか検討してみよう。

ファイルシステム

デジタル世界はこうして、現実世界を整理する最も根本的なルール——つまり「すべてのものに固有の場所があること」——を超えることを可能にした。代わるに足るのは、「複数の場所に同時に割り当てられるべきである」という考え方だ(デイヴィッド・ワインベルガー『すべては雑多なもの』より)。

歯科医から請求書が届いたと想像してみてほしい。これをどう归档するか?一般的なアーカイブフォルダに入れるか、より具体的な「医療」フォルダに入れるか、将来の所得税申告用の「XXXX 年度 税務プロジェクト」フォルダに入れるか、それとも複製して一度にすべての選択肢を取るか?この問いはドロップボックスやグーグルドライブのようなクラウドストレージが普及した今日では議論の余地をなさそうだが、 викtoria らんの紳士たちが手紙を整理する際にも同様の悩みを抱えていただろう。私たちもまた、バーチャルな紙を整理する際に同じような問いを投げかけているのである。私たちの最先端の分散システムのユーザー向け設計には、物理世界に由来するほとんど全ての制約が継承されている。オペレーティングシステムもまた同じジレンマに向き合わねばならない:ファイルは、それに関連するアプリケーションによって整理すべきか、それともタイプによって整理すべきか?Windows や macOS は伝統的に前者を好み、アプリケーションを(ほぼ)自己完結型のバンドルとして配布してきた。一方、大多数の Linux システムは後者のアプローチを採用しており、パッケージをインストールした際、その断片がファイルシステムに散在するようになる:ライブラリは

/usr/lib
へ、ドキュメントは
/usr/man
へ、設定情報は
/etc/
へと分散配置される。この選択にはトレードオフが存在する:パッケージを細分化することはツールの運用を容易にし(man ページが見つかる場所が限られる)、再利用性を高めるが、ソフトウェア管理を複雑化する。現代のアプリケーションのパッケージ化とインストールに伴う苦労は、macOS スタイルのバンドル形式(Snap や Flatpak など)の開発へとつながった。あなたが非自明なコードリポジトリを整理しようとした経験があるなら、おそらく同様の問題に出会ったことだろう。現代のプロジェクトでは、フロントエンドに TypeScript、バックエンドに Rust といったように複数の言語で実装されたコンポーネントが存在するため、ファイルをコンポーネント単位(
/acme/payments/index.ts
/acme/payments/main.rs
のように)または言語別(
acme/ts/payments.ts
acme/rs/payments.rs
のように)にグループ化するという選択が迫られる。

コードリポジトリを整理する二つの一般的な方法:

  • コンポーネント単位による整理(左)
  • 実装言語別による整理(右)

コンポーネント単位での切り分けは人間にとって容易で、組織構造そのものを反映するが、多くのツールはこの設定をサポートせず、結果として技術中心主義的なアプローチを強制してしまう。グーグルを含む少数のエンジニアリング組織は困難を乗り越え、プロジェクト単位(

/search
/shopping
/maps
など)でリポジトリを整理し、その過程で言語に依存しないビルドツールの叢生を開発した(グーグルの Blaze は最初のそうしたツールの一つであり、Pants や Buck、Please を刺激し、後に Bazel としてオープンソース化された)。

しかし、これらのジレンマは大半が自業自得である。デジタルファイルシステムが棚に積まれたフォルダのようなスキューモーフ(skeuomorph)にならなければならないという内発的な理由は存在しない。いくつかのプロジェクト(BeFS や WinFS など)がウェブ様式のファイルシステムを試しに行ったが、いずれも現状に変革をもたらすことはできなかった。ただし、タグやリンクといった概念がウェブサービスを通じて一般意識に浸透してくるにつれ、ファイルシステムもそれに追随し、やがて時間とともに「ウェブ」として進化していくかもしれない。

書き込み

作家の目標は、表現すべき考え事のウェブを、構文ツリーを用いて言葉の列へと符号化することである(スティーブン・ピンカー『スタイル感覚』より)。

本は階層性の頂点に立つ:章があり、その中に段落があり、段落には文章があり、文章には言葉があり、言葉は文字からなり、すべて番号が付けられた整然と区切られたページへと切り分けられている。にもかかわらず、これらの頁上に表現される考え事は、決して直線的でも階層的でもなくある。多くの物語は線形的に書かれている:話者は事件を起こった順に記述し、章の境界で場面の変化や時間飛躍を示す。しかし、物語の背後には常に考え事のウェブが存在する。そのウェブを言葉の列へと解きほぐし、別の心のなかで再び同じウェブを再現させることは、あらゆる作家が直面する原初的な苦闘なのである。「書き込むのは簡単だ。ただ真っ白な紙にじっと見つめていけば、やがて額には血の滴が集まる」(ジーン・フォラー)。

創作小説においては、このウェブは登場人物間の関係性や、読者がそれらと築くべき感情的つながりを含んでいる。優れた小説は媒体の限界を利点に変え、最も謎めき且つ読者を惹きつける順序で事件を提示する。その究極の目標は、点を繋ぎ、完全なウェブを組み立てる喜びを読者に届けることにある。しかし、基盤となるウェブが密かで抽象的になればなるほど、作家と読者の両方の負担は増大する。数学入門書はその完璧な例である。数学は単純な概念を基礎に置き、階段を追うにつれ複雑さが高まっていくレゴブロックの塔のように見えるかもしれない。実際、エウクリッド『要素』から始まる一貫した数学の提示はこのパターンに従う。しかしながら、基礎となるブロックの選択はしばしば恣意的である。数学的対象は、他のすべてとの関係性を知る過程で形状を変え、ニュアンスを得ていく(私は微分方程式の授業を受けていた頃、実解析の授業を終えて数ヶ月後に覚醒し、「ついに極限の意味を理解した」と気づいたのを覚えており、また自然数の理解も読む教科書によって毎回変化しているように思える)。アイデアの選択とその提示順序は読者の体験を形作るため、どの数学書の目次も異なるのである。次に空の設計ドキュメントに向き合い、どこから手を付けていいかわからないときこそ、自分自身に優しくしよう。あなたは難しい問題に取り組んでいるのだ。

建築

人工的な都市を構成する単位は常にツリーの形態へと整理される(クリストファー・アレクザンダー『都市は木ではない』より)。

レヴィットタウンのパノラマ像(左、パブリックドメイン、出典:Wikipedia)とシエナの像(右、著作権 Vyacheslav Argenberg、CC BY 4.0 ライセンスより)。

建築家かつ数学者のクリストファー・アレクザンダーは 1965 年の論文『都市は木ではない』の中で、設計された都市と自然発生した都市の間にある違いを観察し、レヴィットタウンやチャンドイガルを設計された例、シエナや京都を自然発生型の例として分類した。彼は人工的な都市が窒息しており、生活感や安らぎをもたらす「秘密の成分」が欠如していると論じる。アレクザンダーによれば、この差異は都市設計を支える数学的構造の違いに由来する:人工的な都市はツリー構造で組織化されており、各々は隔離された近隣区域を持ち、それぞれに住宅複合体、学校、ショッピングモールといったものを有し、さらに文化センターや工業地区のような区画化された専門領域がいくつか付帯している。一方、自然発生型の都市は半格子(semilattice)構造を持ち、それによりより充実した相互作用が生じる。自然発生型の都市では、生活の側面間の境界が曖昧となる:仕事、余暇、遊戯が重なり合い、相互に作用する。都市設計とは、人間関係の半格子を特定の地形へと埋め込むというツリーマッピングの問題であり、canonical なマッピングが存在しないため、クリストファー・アレクザンダーが自然発生型都市のための普遍的な設計図を提供できなかったのも当然である。あなたが今、「半格子だが木ではない都市」はどのような外観を呈するかと疑問を抱くに違いない。

「私はまだあなたに計画やスケッチを示すことはできません。単に重なり合いを実演するだけでは不十分です。それは正しい重なり合いである必要があります。」(クリストファー・アレクザンダー『都市は木ではない』より)

つまり、自然発生型の都市は街区や建物の階層の中に人間生活のウェブを展開させながら、より深いつながりを保存するのである。これらのつながりが何かを算法が教えてくれるわけではない。

生物学

生物分類学は生きている生物を分類する分野である。それは形態学的分類学から始まり、動物に背骨があるかどうかや幼体への哺乳など、容易に観察できる特徴に基づいていた。このアプローチは誤謬の可能性がある:有用な形質が生命樹の遠く離れた枝で独立して進化するからである。例えば、頭足類の目は脊椎動物の目と驚くほど類似しているが、その共通祖先はおそらく光受容斑点を持つ盲獣のようなものであった。カメラ型眼を生物群の定義に用いれば、その成員は奇妙な集団となるだろう。歴史には実際の誤分類で満ち溢れている。菌類は 20 世紀半ばに独立の界を与えられるまで植物として分類されていた。カメレオンや鳥類はかつて兄弟分類群(両生類と鳥類)に属したが、実際にはカメレオンの方が他の爬虫類よりも鳥類に近い。形態学的分類学もまたツリーマッピングの一つである:形質の集合が概念を形成し、それらの所属関係は樹より一般なグラフ(格子)となるからである。

ホセ・ルイス・ボルヘスは論文『ジョン・ウィルキンスの分析言語』の中で、架空の古代中国百科事典『慈悲の知的館』からの引用を用いて、そのような分類体系を皮肉った:

  • (a) 皇帝に属する動物
  • (b) 製菓された動物
  • (c) 訓練された動物
  • (d) モルモット
  • (e) シレノイド
  • (f) 伝説上の動物
  • (g) 迷犬
  • (h) この分類に含まれる動物
  • (i) はしゃぐ動物
  • (j) 数えられない動物
  • (k) 非常に細かいウサギの毛筆で描かれた動物
  • (l) などなど
  • (m) お椀を割ったばかりの動物
  • (n) から見て蚊に見える動物

(ホセ・ルイス・ボルヘス『ジョン・ウィルキンスの分析言語』より)

クラディスティクスは現代の分類体系であり、共通祖先と遺伝子に基づいて生物を分類する。水平転移による不完全性はあるが、既存のつながりを保持するため、人為的なつながりを強制する伝統的な分類よりも正確で示唆に富むのである。

結論

あなたがこの問題について知った今、あちこちに存在するものを見つけることは難しくなくなる。それはデータベースモデリングの課題( MongoDB にこそ見られる)に潜み、オブジェクト指向のクラス階層を脅かし、Rust の借 Checker との葛藤の根底にある。また、

node_modules
ディレクトリの内容や、コンプブックの配置にも責任を持つ。ツリーマッピングへの主な対処法は「意図的であること」だ。私たちは階層性への依存が本能として働くため、選択を行っていることに気付きがちではない。一旦立ち止まって問わねばならない:どのようなウェブがフラット化されているのか?どのリンクが犠牲になったのか?そして最も重要なのは、そのターゲット媒体はそもそもツリーであるべきなのだろうか?

同じ日のほかのニュース

一覧に戻る →

2026/05/17 7:25

MCP はようページ

## Japanese Translation: HybridLogic は、ユーザーが直面している摩擦(直接ブラウザ経由で Model Context Protocol (MCP) サーバーにアクセスすると、生の JSON を伴う 401 Unauthorized エラーが表示されるという混乱を引き起こす問題)を解消しました。根本的な原因は、ユーザーが MCP エンドポイントをブラウザで開こうとするのではなく、LLM クライアントに統合しようとしていた点にあります。エンジニアらは、軽量かつ「ハック的」なリダイレクトを実装し、Accept ヘッダーが text/html を示すが application/json または text/event-stream を示さない場合に GET /mcp リクエストに対して HTML ページを返すようにしました。このページは、ユーザーがブラウザで表示する代わりにサーバーを LLM クライアントに追加することを案内します。デプロイ以降、サポートチケットは大幅に減少し、顧客サクセスの満足度が向上し、統合も早まりました。この解決策には運用負荷は一切必要なく、すべてのクライアントに対してコネクタを構築することなく、MCP 仕様の制限を補完するための手動アプローチの有効性を検証しました。AI も追跡もなく Luke Lanchester が作成した HybridLogic のホームページでは、顧客がより素早く環境整備を開始できるようになり、進化している仕様と現実世界のオンボーディングの間の不満に対処しています。

2026/05/17 2:12

キオクシアとデルが、薄型の 2 ラックユニット(2 RU)サーバーに 10 ピタバイトのストレージを収容することに成功。

## Japanese Translation: Dell は、AMD EPYC 9005 プロセッサを搭載し、最大 5 個の 400 Gbps NIC をサポートする新型 PowerEdge R7725xd サーバーに、Kioxia の高容量 QLC SSD「LC9」を統合しました。1 台あたりに E3.L フォーマットの 245.76 TB NVMe ドライブを 40 個使用することで、コンパクトな 2 RU フットプリント内で驚異的な 9.8 ペタバイトの総容量を実現しています。Dell の「コンピューティングおよびネットワーク担当執行副社長」Arun Narayanan氏によれば、この設計は AI インフラのスケーリングに不可欠なストレージ密度と電源効率を最適化しています。また、Kioxia アメリカの SSD 事業部の「執行副社長兼統括経営責任者」Neville Ichhaporia氏は、「顧客は物理空間のごく一部で巨大なインジェストストリームを展開することで、総保有コスト(TCO)を大幅に改善できます」と指摘しており、このサーバーを 20 台搭載したラックでは最大 196 PB のストレージを収容可能です。Micron(6600 ION)、SanDisk(UltraQLC SN670)、SK Hynix の Solidigm(AIN D)が独自の 256 TB クラスのドライブを開発し、Samsung は 1 PB のロードマップへ進んでいる中で、Dell がこのコンパクトな QLC 技術を採用することは、現代の AI デプロイメントに不可欠な高密度ストレージソリューションへの中道的な歩みとなります。 ## 欠落している要素(ある場合): * 競合他社の特定の製品名(Micron 6600 ION、SK Hynix AIN D、SanDisk UltraQLC SN670)および Samsung のロードマップ詳細は省略されています。 ## 推測・飛躍(ある場合): 重要なのは無し;要約は提供された点を正確に反映しており、根拠のない主張を行っていません。

2026/05/13 19:37

Windows Subsystem for Linux(WSL)

## Japanese Translation: WSL9x は、再ブートなしで Windows 9x カーネル内に最新の Linux カーネル バージョン 6.19 を協調的に実行する革新的なプロジェクトです。標準的な仮想化とは異なり、本システムはユーザースペースではなくスーパーバイザーモード(リング 0)で動作し、Windows 9x API を直接呼び出すことで古いオペレーティングシステムの深刻なハードウェア制限を回避します。このシームレスな統合は、以下の 3 つの主要コンポーネントにより実現されています:修正済み Linux カーネル(win9x-um-6.19 ブランチから)、専用 VxD ドライバ、DOS ベースのクライアントプログラム (`wsl.com`) です。特に重要なのは、元々の中断ベクトルテーブルでは適切なシステムコールに不十分なため、`int 0x80` の相互作用を効率的に管理するためにはジェネラルプロテクションフォルトハンドラへの依存である点です。Linux カーネルはユーザモード Linux から派生しており、リング 0 で実行するように変更されています。複雑な Windows 9x カーネル統合とコンテキストスイッチング論理の大部分はこのカスタムレイヤーに存在します。環境を設定するには、クライアントを起動する前にANSI ドライバ(例:`nnansi.com`)をロードし、色などのターミナル出力機能をサポートする必要があります。また、利用可能なシステムを作成するには、事前にインストール済み Windows 9x ベースイメージ (`hdd.base.img`) からハードディスクイメージ (`hdd.img`) を構築して生成する必要があります。本書全体は GPL-3 ライセンスの下で配布されており、ユーザーにはソフトウェアを修正し共有する明確な法的権利が保証され、そのオープンソース性が維持されています。

第三つのハード・プロブレム | そっか~ニュース