海外コメンタリー

「Rust」が10周年--エレベーター故障から始まったシステムプログラミング言語の歴史

Steven J. Vaughan-Nichols (Special to ZDNET.com) 翻訳校正: 川村インターナショナル

2025-05-30 07:00

 オープンソース運動の創始者の1人であるEric S. Raymond氏は、次の言葉が有名だ。「全ての良いソフトウェアは開発者の個人的な希望から始まる」。Mozillaのソフトウェア開発者であるGraydon Hoare氏がプログラミング言語「Rust」の開発に着手したときも、まさにそうだった。

 2006年、Hoare氏は自宅マンションのエレベーターがたびたび故障することを不満に思っていた。同氏は後に、「コンピューターに携わるわれわれが、故障しないエレベーターも作れないとは、ばかげた話だ」と語っている。同氏は、エレベーターが頻繁に故障する原因として、制御ソフトウェアのメモリーエラーを疑っていた。このソフトウェアは「C」または「C++」で書かれた可能性が高く、どちらも広く使用されているシステム言語だが、コードを書くのが難しい。その大きな理由は、メモリーエラーを含む不完全なコードを簡単に書けてしまうことだ。

 そこで、毎日21階分の階段を上ることにうんざりしていたHoare氏は、新しいコンピューター言語の設計に乗り出した。同氏が目指したのは、軽量かつ高速で、メモリーバグが発生しないプログラミング言語だ。「Rust(さび)」という名称は、生命力が強いさび菌が由来で、同氏はこの菌類を「生存のために過剰に設計されている」と表現した。

転換点

 Hoare氏の目標は、安全性と並行性に優れた言語を作ることだった。RustはCやC++と異なり、独自の所有権システムによってメモリーの安全性を確保する。ヌルポインターの逆参照やバッファーオーバーフローなどの一般的なエラーを防ぐために、それぞれのデータが単一の所有者を持ち、スコープ外になると自動的に解放されるようにする。このアプローチにより、コンパイル時にあらゆる種類のメモリーバグを排除できる。Rustの並行性モデルは、コードの実行前にデータ競合を検出することで安全性をさらに高められるため、安全性と効率的な並行処理を兼ね備えたプログラムの開発が簡単になる。

 これは容易なことではなかった。Rustは個人的なプロジェクトとして始まったが、Mozillaはその可能性に着目し、2009年に公式に支援を開始した。Rustは2010年に正式に発表され、数年にわたるイテレーションを経て、「Rust 1.0」が米国時間2015年5月15日にリリースされた。

 今から10年前のことだ。

 Rustプログラミング言語の最初の安定版リリースは、大きな注目を集めることはなかったものの、ソフトウェア開発の世界における転換点となった。現在のRustは、技術的な偉業というだけではなく、コミュニティー主導のイノベーションの力を証明する存在だ。Mozillaの支援を受けた実験から、テクノロジー大手にもオープンソースコミュニティーにも採用されるメインストリームのツールへと姿を変えた。

始まりに過ぎない

 Rustの最初の安定版リリースは、始まりに過ぎなかった。それからの10年間で、Rustは飛躍的な成長を遂げた。Rustのパッケージレジストリーである「crates.io」だけを見ても、1.0の時点で約2000個だったパッケージ(「クレート」)が、現在では18万個以上に膨れ上がっている。標準ライブラリーのサイズは3倍になり、統合開発環境(IDE)をサポートする「rust-analyzer」や強力なパッケージマネージャー「Cargo」などの機能によって、ツールチェーンが成熟した。

 それに加えて、後方互換を維持しながら6週間間隔で定期的にリリースする取り組みによって、信頼性を犠牲にすることなく迅速なイノベーションを実現してきた。1.0以降でマージされた変更は24万6000件以上で、リリースごとに6700人のコントリビューターが関与し、約60万個のパブリッククレートがテストされている。

 Hoare氏は先ごろ、その点に言及し、「Rustでは、利害関係者が大規模なコミュニティーに集結して、共通の技術インフラストラクチャーを設計、構築、保守、拡張する。これは多くの登場人物が関わる物語だ」と述べた。その登場人物とは、開発者や言語設計者、著者、教育者、そしてRustをサポートする機関のことだ。Hoare氏によると、登場人物たちを結びつけたのは、「インフラストラクチャーに対する共通の関心」だったという。

 Hoare氏の言うインフラストラクチャーとは、「他のインフラストラクチャーを構築するツール、すなわちネットワークプロトコル、ウェブサーバー、ロードバランサー、テレメトリーシステム、データベース、コーデック、暗号技術、ファイルシステム、OS、仮想マシン、インタープリターなど」を指す。

 Hoare氏はさらに次のように述べた。「世界は強力で信頼性の高いインフラストラクチャーを必要としているが、以前のインフラストラクチャーではそれに対応できなかった。簡単に言えば、大規模な障害が発生して、多額の損失が生じることがあまりにも多かった。良ければクラッシュやダウンタイムで済むが、最悪の場合はセキュリティ脆弱(ぜいじゃく)性となる。効率的な『インフラストラクチャー構築』言語もあったが、非常に使いにくく、特に並行コードを書く場合は、安全な使用はほぼ不可能だった」。そこでHoare氏が出した答えがRustだった。

 筆者なら、これをシステムプログラミングと呼ぶだろう。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

所属する組織のデータ活用状況はどの段階にありますか?

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]