ウェブサイト検索

Rustが10歳になる:壊れたエレベーターがソフトウェアを永遠に変えた方法


Rust 1.0は2015年5月にリリースされました。これがどのようにして実現されたのか、そしてなぜソフトウェア開発の世界において転機となったのかを説明します。

オープンソースの創設者の一人であるエリック・S・レイモンドは、「すべての優れたソフトウェア作品は、開発者の個人的なニーズを満たすことから始まる」と有名な言葉を残しました。これは、Mozillaのソフトウェア開発者グレイドン・ホアがRustプログラミング言語の開発を開始したときにも当てはまりました。

2006年、ホアーは自己のアパートメントビルのエレベーターが故障し続けていることに苛立っていました。彼は後に「私たちコンピュータの人間が、クラッシュせずに動作するエレベーターを作れないなんて、馬鹿げている!」と言いました。彼は、その制御ソフトウェアにメモリエラーがあるためにエレベーターが故障し続けているのではないかと疑っていました。そのソフトウェアはおそらくCまたはC++で書かれており、両方とも難しいシステム言語であり、メモリエラーを伴う準機能的なコードを書くのが簡単すぎるため、大きな要因となっています。

ホエアは、毎日21階の階段を這うように上がることにうんざりし、新しいコンピュータ言語の設計を始めました。彼は、メモリバグの可能性がない、小さくて速いプログラミング言語を作りたいと考えました。彼はそれを、"生存のために過剰に設計された"と表現した強靭な真菌の一群にちなんで、ラストと名付けました。

転機

彼の目標は、安全で同時実行可能な言語を作ることでした。CやC++とは異なり、Rustは独自の所有権システムを通じてメモリの安全性を強制します。これにより、各データが単一の所有者を持ち、スコープを出ると自動的に解放されることで、ヌルポインタの逆参照やバッファオーバーフローといった一般的なエラーを防ぎます。このアプローチは、コンパイル時にメモリバグの全体カテゴリを排除します。Rustの並行性モデルは、コードが実行される前にデータレースを捕捉することで安全性をさらに高め、開発者が安全で効率的に同時実行されるプログラムを書くことを容易にします。

これは簡単ではありませんでした。最初は家庭用プロジェクトとして始まりましたが、Mozillaはその可能性を認識し、2009年にRustの公式スポンサーになりました。この言語は2010年に公に発表され、何年もの反復を経て、Rust 1.0は2015年5月15日にリリースされました。

それは10年前のことでした。

Rustプログラミング言語の最初の安定したリリースは、ソフトウェア開発の世界で静かに転機を迎えました。現在、Rustは単なる技術的成果ではなく、コミュニティ主導の革新の力の証であり、Mozillaの支援を受けた実験から、テクノロジーの巨人やオープンソースコミュニティによって受け入れられる主流のツールへと変革しています。

始まりに過ぎない

Rustの最初の安定リリースは、ほんの始まりに過ぎませんでした。その後の10年間で、この言語は飛躍的に成長しました。Rustのパッケージレジストリであるcrates.ioは、1.0で約2,000のパッケージ(「クレート」と呼ばれる)から、現在では18万を超えるまでに膨れ上がりました。標準ライブラリは3倍に増え、toolchainはIDEサポートのためのrust-analyzerや、堅牢なパッケージマネージャーCargoなどの機能で成熟しました。

同時に、Rustの非破壊的リリースと定期的な6週間のサイクルへのコミットメントは、信頼性を犠牲にすることなく迅速な革新を可能にしています。1.0以降、246,000以上の変更がマージされ、6,700人の貢献者と、各リリースのためにテストされた約600,000のパブリッククレートがあります。

ホアーは最近これを認めて、 "Rustは、利害関係者の大規模なコミュニティが集まり、共有された技術基盤を設計、構築、維持、拡張するという物語です。それは多くの登場人物を含む物語です。" 登場人物には、開発者、言語設計者、著者、教育者、そしてRustを支援する機関が含まれます。ホアーは、彼らを結びつけたのは "基盤に対する共通の関心" であると述べました。

ホア氏が言うインフラストラクチャとは、「ネットワークプロトコル、ウェブサーバー、ロードバランサー、テレメトリシステム、データベース、コーデック、暗号化、ファイルシステム、オペレーティングシステム、仮想マシン、インタープリタなど、他のインフラを構築するためのツール」を指します。

ホアは次のように付け加えました。「世界には堅牢で信頼性の高いインフラが必要であり、私たちが持っていたインフラはその任務に耐えられませんでした。簡単に言えば、それはあまりにも頻繁に、壮大で費用のかかる方法で失敗しました。クラッシュやダウンタイムは最良の場合であり、セキュリティの脆弱性は最悪のケースです。効率的な『インフラ構築』言語は存在していましたが、非常に使いにくく、特に並行コードを書く際には安全に使うことがほぼ不可能でした。」ラストはホアの答えでした。

これをシステムプログラミングと呼ぶでしょう。

基礎的な配管

PythonやJavaScript、Javaなどの他の人気のある言語とは異なり、Rustはエンドユーザーが操作する高水準のプログラムを書くためのものではなく、すべてのソフトウェアが動作するために必要な基盤を作るために使用されます。

これは誰もが行うようなプログラミングではありません。しかし、ソフトウェアやパイプ、フィッティングを扱う人々にとって、Rustは非常に人気があります。そのため、Stack Overflowの開発者調査によると、8年連続で「Rustは最も敬愛される言語です。Rustを使用している開発者の80%以上が、来年も再び使用したいと思っています。」

私は彼らの一人であることを告白します。長年本格的な開発者ではありませんでしたが、最近コードを書くときは、Rustが私の第一選択です。それは単に機能し、かつてCで苦労していたメモリの詳細を気にする必要がありません。

私は決して一人ではありません。Rustの採用者は、現代のコンピューティング界の有名人のような顔ぶれです。例えば、MozillaはFirefoxで、GoogleはAndroid、Chrome OS、Fuchsiaで、MicrosoftはWindowsのコアライブラリやAzure Confidential Computeで使用しています。

私の心の中で最も大切な存在であるLinuxカーネルが、Rustを取り入れようとしています。しかし、それはスムーズな旅ではありませんでした。最近、リーナス・トーバルズが言ったように、「私は[Rust]のアップデートがもっと早くなることを期待していましたが、問題の一部は昔のカーネル開発者たちがCに慣れていて、Rustを知らないことです。彼らは、ある意味で非常に異なる新しい言語を学ばなければならないことに、あまり興奮していません。そのため、Rustに対していくらかの反発があります。」それでも、トーバルズはLinuxにおけるRustの熱心な支持者であり続けています。

Rustを学ぶ

とはいえ、Rustを使い学ぶことは容易ではありません。その学習曲線、特に借用チェッカーとライフタイムに関しては、新comersにとっては急峻なままです。個人的には、それほど難しいとは思いませんでした。もし自分でRustを学びたいなら、まずはThe Rust Programming Language(いわゆるThe Book)から始めることをお勧めします。その後にRust for Rustaceansに進むと良いでしょう。また、Rust by ExampleやGoogleのWelcome to Comprehensive Rustのウェブサイトも役立ちますし、しかも無料です。

こうして、1.0がリリースされてから10年後、Rustはかつて不可能に思えたことを達成しました。それは、システムプログラミングを安全で楽しいものにすることです。

ホーアがRustの10周年を振り返りながら、『Rustは、利害関係者の大きなコミュニティが共にデザインし、構築し、維持し、共有された技術基盤を拡張する物語である。』と述べました。安全で信頼性が高く、高性能なソフトウェアにますます依存する世界において、Rustの次の10年はこれまで以上に明るいものに見えます。

毎日、私たちのテック・トゥデイニュースレターで朝のトップストーリーをあなたの受信トレイにお届けします。

関連記事: