6 ポイント 投稿者 GN⁺ 2026-02-26 | 1件のコメント | WhatsAppで共有
  • UbuntuのRust導入は、技術採用ライフサイクルにおいてRustがアーリーアダプターからキャズムを越えて主流段階へ移行しつつあることを示している
  • CanonicalはRustを新しい基盤ソフトウェアのデフォルト言語として採用し、C、C++、一部のPython利用を置き換えつつあり、メモリ安全なユーティリティ開発に資金面・評判面の両方で投資している
  • 初期多数派(Early Majority)の利用者は**「業界標準」と既存ワークフローとの互換性**を求めるため、ドロップイン方式のユーティリティ置き換えがキャズムを越えるための中核戦略となる
  • Rustの標準ライブラリ拡張の問題が再浮上しており、2016年に退けられた「Rust Platform」の概念が初期多数派にはむしろ適している可能性があるという再評価
  • 採用拡大を投資へつなげる仕組みと、オープンソースコミュニティの共感(empathy)に基づく包摂性がRustの次の成長段階に不可欠

Rustの「キャズム越え」は領域ごとに異なる

  • RustがTechnology Adoption Life Cycleでキャズムを越えたかどうかは領域によって異なる
  • Amazon社内では大規模なデータプレーンやリソース認識エージェントの構築でRustが確固たる地位を築いている一方、一般的な開発には依然として過剰だという認識もある
  • Safety Critical Softwareの領域では成功事例があるが、業界の大半はいまだ「様子見モード」にとどまっている

「リファレンス顧客」の重要性

  • キャズムを越えるための鍵は**リファレンス顧客(reference customers)**の確保
  • 初期採用者は「変化の担い手(change agent)」を買うが、初期多数派は既存運用の生産性向上を求め、不連続性を最小化しようとする
  • 自分たちと似た組織が成功した事例を見ることが、新技術導入において最も説得力のある要因になる
  • S3チームにおけるRustの成功は大規模サービスチームには説得力がある一方で、CRUDサービスチームには直接的な説得力が乏しいことがその例である

Ubuntu(Canonical)のRust導入戦略

  • Rust NationでCanonicalのVP of EngineeringであるJon Seagerが「Rust Adoption At Scale with Ubuntu」のキーノートを発表
  • Canonicalは自社開発言語をPython、C/C++、Goに限定してきたが、近年Rustを追加し、新しい基盤作業のデフォルト言語として採用
  • Lars BergstromによるGoogle社内でのRust採用キーノートと同様に、ビジョンと実用性を兼ね備えたアプローチ
    • これはアーリーアダプターから初期多数派へ移行するために必要な、まさに的確な特性である

メモリ安全なユーティリティへの投資

  • Jon Seagerは、Ubuntuが**メモリ安全な基盤ユーティリティの構築を「pay it forward」**の観点から支援すべきだと述べた
  • CanonicalはTrifecta Tech Foundationのsudo-rs、ntpd-rs開発と、uutilsによるcoreutilsの取り組みを資金支援している
  • Ubuntuが新しいものを先に試して検証し、その後ほかのディストリビューションが恩恵を受けられるようにする構図
  • 既存ワークフローにそのまま入るドロップイン型ユーティリティは、初期多数派の「不連続性の最小化」という要件に合致する

新たな採用者の要求: 標準ライブラリの拡張

  • 会食の場でJon Seagerは、Rustの小さな標準ライブラリ方針を見直すべきだと発言
  • これは長年繰り返されてきた要望であり、単に大きな標準ライブラリを提供するのではなく、**「Battery Packs」**というプロジェクト形態の代替案が構想されている
  • 2016年に提案されたRust Platform(特定のcrateを拡張標準ライブラリとして認める概念)は、当時の初期採用者には退けられたが、初期多数派には適している可能性があるとの再評価
    • 当時はCargo.tomlに依存関係を追加すれば十分だという意見が優勢だった

成長のために必要な変化

  • アーリーアダプターから初期多数派へ移るには、**「最先端(state-of-the-art)」ではなく「業界標準(industry standard)」**というメッセージが必要
  • Rustは業界での認知獲得には成功しており、今後は**「なり得るもの」ではなく「実際に何であるか」**を基準に最良の選択肢である必要がある
    • この2つは時に緊張関係にある
  • 実務家に向けてマーケティングするには、忍耐、その業界課題への理解、業界カンファレンスへの参加などが必要になる

採用を投資へつなげる仕組み

  • Rust採用の拡大は、Rustプロジェクトとエコシステムに対する需要増加を伴う
  • Canonicalのようなオープンソース組織にとっては、$$よりも組織間の関係構築と貢献の方が重要
    • Rust for Linuxの開発者たちは当初Rustメンテナーの支援を受けていたが、徐々に自らバグ修正を行うようになり、メンテナーはメンター役へ移行した
  • 興味深い傾向として、資金はRustをすでに導入した企業よりも、導入を検討中の企業から出ることが多い
    • 社内のアーリーアダプター個人が組織導入を推進し、「テーブルステークス」機能の開発に予算を割り当てる
  • Rust Foundation Silver Member DirectoryのAlexandru Radoviciによれば、多くの安全性が重要なソフトウェア企業はRustのギャップを埋めるための資金はあるが、どう使えばよいか分かっていない状況にある

オープンソースの役割と共感の重要性

  • オープンソースはキャズムを越えるための優れたプラットフォームだが、**派閥(cliques)や「口伝文化(oral traditions)」**が参入障壁になり得る
  • 用語の使い方を間違えたためにアイデアが退けられたり、たった一度の無礼な返答が新しい貢献者を離れさせたりすることがある
  • Rustの次の成長段階に最も必要なのは、オープンソースにおける共感(Empathy in Open Source)
  • Rustが人々を助けられる場所を見つけ、支援し、力を与えることが核心である

1件のコメント

 
GN⁺ 2026-02-26
Hacker Newsの意見
  • UbuntuがGPLではないライセンスのuserlandを使うということは、Linuxエコシステムでより多くのTiVoizationを許すことになり得るという意味だ
    systemd陣営のAmutableが向かっている方向と組み合わされると、ユーザーによる改変が不可能な閉鎖的Linuxディストリビューションが登場するかもしれない
    企業の立場からすると、完全な署名検証が可能な閉鎖環境は魅力的かもしれない。「ls」や「cd」すらクローズドソースになる世界とは、どこか黙示録的だ

    • util-linuxやBSDが消えるわけではない。Ubuntuが気に入らないなら使わなければいい。Debianの方がずっと安定していた
    • そもそもGNU/Linuxと呼ばれていたのには理由がある。Android/LinuxもGPL userlandではないし、組み込み系の競合も大半はGPLではない。結局のところ、Linuxはただのカーネル
    • 歴史的に見れば自分がナイーブなのかもしれないが、こうした変化が必ずしも悪いとは思わない。オープンソースのユーティリティを好んではいるが、仕様を守るクローズドな代替が存在しても構わないと思う。企業がそうすることでオープンソースプロジェクトにより多くの資金を投じる可能性もある
    • 正直、Ubuntuは品質よりマーケティングで勝負するLinux界のAppleのようなものだ。Debian系は保守コストが低いから使うのであって、個人的にはFedoraやOpenSUSEこそ未来だと思う
    • もしこうした変化によってLinuxユーザーの95%が同じOSを使うことになるなら、それほど悪いことではないのかもしれない
  • Rustが越えるべき本当のチャズム(chasm) は、安全なABIを備えた動的リンク対応
    あるライブラリを修正しても安全性が保証され、CレベルのABI安定性を確保できてこそ、C/C++陣営でRust採用が可能になる

    • RustはすでにC ABIで通信可能だ。C++と同程度の動的リンク機能を提供している
    • C++のABI安定性は言語の進化を妨げる主犯だ。STLのクラスレイアウトは変えられないし、ヘッダーに実装されたテンプレートは後から最適化するのも難しい。Rustはこの**「stable ABI」**をサポートすべきではない
    • Rustの効率性はコンパイル時モノモーフィゼーションに依存している。ABIを作るにはリンク時特殊化を考慮する必要がある。単にリンカーへコード生成を移すだけの話ではなく、関数パラメータの「shape」を慎重に扱わなければならない
    • 動的リンクはデバッグビルドでのコンパイル時間短縮にも有利だ。変更されていないライブラリは再ビルドする必要がなく、ランタイムオーバーヘッドもごく小さい
    • RustコミュニティがGPLよりMITを好むのは残念だ。GPLはユーザーフレンドリーで、MITは企業フレンドリーだ。「Rewrite-it-in-Rust」運動がユーザー保護より言語普及にばかり集中しているのが問題だと思う
  • UbuntuがRustを導入することより大きな問題は、いまだにcurl|bashスクリプトで重要なビルドを処理している点だ
    firefox-snapのsnapcraft.yamlを見れば明らかだ

    • 「curl|bash」と聞くと普通は無作為な設定変更や.bashrcの書き換えを連想するが、今回は単に静的ツールチェーンのインストールスクリプトを実行している程度だ。90年代的なやり方ではあるが、比較的安全だ
    • Rustのバージョンが古すぎるディストリビューションが多い。DebianやUbuntu LTSのRustは時代遅れのバージョンで、だから静的リンクを嫌っているように見える
    • curlで何かを実行するとしても、ハッシュ検証さえきちんと行えば問題ない
  • Rust CoreutilsプロジェクトがMITライセンスである点が気になる
    FSFの哲学は批判されることもあるが、GPLはオープンソースを守る。CanonicalがUbuntu全体をMITに変えたら何が起きるのか分からない

    • GPLは昔は強力だったが、今では自動著作権ロンダリングシステムのおかげでMIT/BSDや商用コードに変換されることが多い。FSFにも解決策はない
    • ライセンス論争に終わりはない。GPLは採用を制限するが、MITはより柔軟だ。結局は何を目標にするか次第だ — 誰でも使えるOSSを望むのか、それとも企業が貢献なしに利益を得るのを防ぎたいのか
    • CoreutilsがMITになったことで、具体的にどんな「悪事」が可能になるのか気になる
  • rust-coreutilsのせいでCUDA Toolkitのインストールができなかった。関連するイシューはNVIDIAフォーラムにある

    • リンク先のスレッドはgzip関連の問題だった気がする。ddのせいではなさそうだ
    • 正直、rust-coreutilsには存在意義がない。Ubuntuをインストールした後に最初にやるべきことは、本物のcoreutilsとsudoを入れ直すこと
  • 「Crossing the chasm」という概念は興味深い。Ubuntuのcoreutilsの件以外にも、Rustが越えようとしているギャップは多い
    Rust for Linuxや自動車産業向けRustもあるが、まだドライバーレベルにとどまっているようだ

    • Rustは多方面へ拡大中だ。pyo3(Pythonモジュール代替)、Dioxus(React風のWebフレームワーク)、Ferrocine(自動車向けコンパイラ)などが代表的だ。DARPA TRACTORプロジェクトもRust採用を加速させている
    • RustのProject Goals文書(リンク)を見れば、コミュニティが重点的に投資している方向が分かる
    • Rust自体は素晴らしいが、一部コミュニティが既存の安定したソフトウェアを「Rustで書き直す」ことばかりしてブランドを乗っ取るような振る舞いをしているのが問題だ。Ubuntuもそうした美徳シグナリング(virtue signaling) に陥っているように見える
  • 標準ライブラリを後で変えるという論理は危険だ。ユーザーが求めているのは「チャズム」より安定して高品質なシステム

    • Rustの場合、stdlibを「変える」というより追加するのは簡単だ。6週間ごとに新しいリリースが出て、そのたびに10個以上の機能が追加される。すでに数百の機能がstdlibに入っている
  • Rustエコシステムの未成熟さが採用を阻む要因だ。多くのcrateは1.0未満のバージョンか、単なるCラッパー程度にとどまっている。暗号関連は悪くないが、SAMLのようなものは見つけにくい

    • pre-1.0バージョンはそれほど心配しなくていい。SemVerを厳格に守る文化のため、1.0宣言を遅らせる場合が多い。libcのようにAPIに深く絡むcrateはバージョンを上げにくいこともある。個人的にはblessed.rsのようなキュレーションされたリストを参考にしている
    • gettextも30年経ってようやく1.0になった
    • PythonのcryptographyモジュールがRust toolchainを要求するせいで、Termux環境ではインストールできなかった。Rust依存のせいでPythonプロジェクトまで重くなるのは不便だ
  • RustでC++コードを「雰囲気だけ翻訳(vibe-translate)」してライセンス変更する動きがある。たとえばsudo-rsはむしろC版より安全性の実績が悪い

    • RustとAI、安全性というプロパガンダが過剰すぎる。最初はRustが大好きだったが、MITライセンスをめぐる論争や過剰な宣伝がだんだんしんどく感じられる
  • .NETの巨大な標準ライブラリは本当に快適だ。たいていの作業が標準的なやり方で可能で、変な実装があれば多くの人が標準化を進める

    • Rustの小さなstdlibは失敗だと思う。stdlibは常に存在する唯一の依存関係なのだから、完璧でなくてももっと多くのツールが含まれているべきだ
    • しかしシステムプログラマの立場では、大きなstdlibはかえって問題だ。.NETはGCベースなので構わないが、RustやC++はベアメタル環境でも動かなければならない。大きなstdlibはメモリ制約(<64K)の環境では負担が大きい
      Rustのstd/coreはすでに大きすぎて、マイクロコントローラではweak symbolのようなトリックが必要になる。
      小さなstdlibはAPI安定性の維持と保守負担の軽減に有利だ。C++がこの問題で苦しんできた以上、Rustは慎重であるべきだ