KADOKAWA Technology Review
×
世界で最も愛される
プログラミング言語
Rust誕生秘話
Jinhwa Jang
コンピューティング Insider Online限定
How Rust went from a side project to the world's most-loved programming language

世界で最も愛される
プログラミング言語
Rust誕生秘話

処理速度が問題になるプログラムや、ハードウェアを直接操作するプログラムを開発するなら、C/C++言語を選ぶのが当たり前だった。C/C++に取って代わる言語は長らく登場しなかったが、最近になってRustが注目を浴びている。 by Clive Thompson2023.06.12

多くのソフトウェア開発プロジェクトは、思いもよらないところから生まれる。解決しなければならない個人的な問題を抱えたプログラマーが生み出すこともある。

グレイドン・ホアレの身に起きたのも、多かれ少なかれそういう事態だった。2006年、ホアレはオープンソースのWebブラウザー「ファイアーフォックス(Firefox)」を開発するモジラ(Mozilla)に勤める、29歳のコンピューター・プログラマーだった。バンクーバーのアパートに戻ってきたホアレは、エレベーターが故障していることに気づいた。エレベーターの制御ソフトウェアがクラッシュしていたのだ。しかもこれが初めてというわけではなかった。

ホアレは21階に住んでいた。階段を登っている間、いらいらしていた。そして「馬鹿げている」とホアレは思った。「私たちコンピューターに携わる人間が、故障せずに動くエレベーターすら作れないなんて!」こうしたクラッシュの多くが、プログラムによるメモリの使い方の問題に起因することをホアレは知っていた。エレベーターのような機器に組み込まれるソフトウェアは、多くの場合プログラミング言語C/C++で書かれている。C/C++は非常に速く動作するプログラムを作成でき、プログラム自体のサイズもコンパクトに収まることで知られる。問題は、C/C++言語がメモリ・バグ、つまりクラッシュの原因となるエラーを誘発しやすいということだ。マイクロソフトは、同社のコードの脆弱性の70%はC/C++言語で書かれたコードのメモリ・エラーに起因すると見積もっている。

私たちのほとんどは、もし21階まで階段を上る羽目になったとしても、腹を立ててそこを離れるだけだろう。しかしホアレは自分で解決策を講じることにした。ノートPCを開き、新しいコンピューター言語の設計を始めたのだ。サイズが小さく、速く動作するプログラムを、メモリ・バグを起こすことなく書けるようにすることを目指すものだった。ホアレはこの言語を「Rust(ラスト)」と名付けた。いわく「生きのびるために過剰な改良を重ねた」非常に丈夫な菌類(さび菌)から取ったという。

17年後、Rustは地球上で特にホットなプログラミング言語の1つになった。もしかしたらもっとも注目されている言語なのかもしれない。Rustでコードを書いているプログラマーは280万人にのぼり、マイクロソフトやアマゾンなどの企業は、Rustが自社の未来を担う重要な言語だと考えている。チャット・サービスのディスコード(Discord)はRustを使用してシステムを高速化しており、またドロップボックス(Dropbox)はクライアント・コンピューターとのファイル同期処理にRustを活用している。クラウドフレア(Cloudflare)はRustで作成したプログラムで、全インターネット・トラフィックの20%超を処理している。

プログラマーが集うインターネット掲示板、スタック・オーバーフロー(Stack Overflow)では、毎年世界中の開発者から投票を募っており、Rustは7年連続で最も「愛される」プログラミング言語に選ばれている。米国政府でさえ、政府機関での業務のセキュリティ強度を高める手段として、Rustで開発したソフトウェアを強く推奨している。成功した多くのオープンソース・プロジェクトと同様、Rustはコミュニティが開発している。現在は数百人もの熱心なコントリビューター(開発に貢献するエンジニア)がおり、その多くがボランティアだ。ホアレ自身は2013年にプロジェクトの第一線から退き、モジラ社内のコア・チームを含むほかのエンジニアに後を託した。

誰かが新しいプログラミング言語を開発するというのは珍しいことではない。本業の傍らで、小規模なプログラミング言語を開発するプログラマーは多い。しかしこうした言語が根付き、 JavaScriptやPython、Javaなどの有名な言語と肩を並べるまで成長することは彗星が落ちてくるくらい稀なことだ。Rustはどうやってそれを成し遂げたのだろうか?

なぜそこまでRustが役立っているのかを理解するために、まずはプログラミング言語がコンピューターのメモリをどのように扱っているのか、その舞台裏を見てみよう。

非常に大まかにいえば、コンピューターの内部の動的メモリは黒板のようなものと考えることができる。ソフトウェアが動作すると、黒板には絶えず小さなデータが書き込まれていき、どのデータがどこにあるのかが記録される。そして必要がなくなれば消去され、データが書き込まれていた領域は解放される。しかしそのやり方はプログラミング言語によって異なる。C/C++などの比較的古い言語では、プログラマーがこの黒板を使う方法やタイミングを自由に決めることができる。この力は便利なものだ。動的メモリ管理の自由度が高いと、プログラマーは非常に速く動作するソフトウェアを作ることができる。このため、C/C++はしばしばハードウェアを直接操作する「ベアメタル」コードを書くのに使われてきた。透析装置や小売店で使うレジスターなど、ウィンドウズやリナックスをはじめとするオペレーティング・システムを持たない機械がベアメタル・コードで動作する(また、より高度な用途でも使用する。場合によってはオペレーティング・システムとハードウェアの相互通信が必要になる。特にウィンドウズ、リナックス、マックOSのカーネルはいずれも大部分がC言語で書かれている)。

しかしプログラムが高速に動作するという長所と引換えに、C/C++言語には弱点がある。メモリのどの部分に書き込むのか、また書き込んだデータをどの時点で消去し、その領域をいつ開放するのか、プログラマーが注意深く追跡しなければならないのだ。たまたま何かを消し忘れてしまうと、クラッシュにつながることがある。ソフトウェアが空だと認識しているメモリ領域を後から使おうとしても、実際はそこにデータが入っているからだ。あるいは攻撃者がそこから忍び込むかもしれない。メモリに書き込んだデータが適切に消去されていない(パスワードや銀行口座の情報など、消去されるべき情報がまだ残っている)プログラムをハッカーが見つけ出し、こっそりとそのデータを盗み出す可能性がある。C/C++のコードの規模が大きくなればなるほど、最も注意深いプログラマーでさえも、メモリ管理のミスを大量に犯し、ソフトウェアをバグでいっぱいにしてしまう可能性があるのだ。

「C/C++では、自分の書いたコードがいつ爆発するか分からないという恐怖がいつも付きまとっていました」。オランダに本拠地を置き、ドローン開発を手掛けるフュージョン・エンジニアリング(Fusion Engineering)の共同創業者兼最高技術責任者(CTO)であり、Rustの標準ライブラリ・チームで責任者を務めるマーラ・ボスはそう述べる。

1990年代になると、JavaやJavaScript、Pythonなどの新しい言語が人気を集めるようになったが、これらの言語はメモリ管理についてC/C++とは異なるアプローチを採っている。プログラマーにかかるストレスを減らすために、ソフトウェアの一部が動作しているときに、使用済みのメモリ領域を定期的に自動で解放する「ガーベジ・コレクション(ごみ収集機能)」のコンポーネントを使い、メモリを自動で管理するようにしたのだ。そのおかげでメモリ管理ミスがないコードを書けるようになった。ただし、メモリ空間をきめ細かく管理できなくなった。またプログラムの動作も緩慢になった(ガーベジ・コレクションにはかなりの処理時間がかかる)。さらにガーベジ・コレクションを使用する言語でプログラムを作成すると、多くのメモリを消費するプログラムが出来上がる。この結果、プログラミングの世界は大まかに2つの部族に分かれた。高速に動作するソフトウェアや、機器に埋め込まれた非力なマイクロプロセッサーで動作することが求められるソフトウェアは、C/C++で記述することが多い。近年急速に増加している、Webアプリケーションやモバイルアプリケーションは、ガーベジ・コレクションを使える新興のプログラミング言語を使用する。

ホアレは、Rustの開発において上記2種類のアプローチのちょうど境目に位置する言語とすることを目指した。メモリのどこにデータを書き込んでいるのかをプログラマー自身がいちいち把握する必要はない。その役目はRustが担う。ただしRustでは、プログラム内でデー …

こちらは有料会員限定の記事です。
有料会員になると制限なしにご利用いただけます。
有料会員にはメリットがいっぱい!
  1. 毎月120本以上更新されるオリジナル記事で、人工知能から遺伝子療法まで、先端テクノロジーの最新動向がわかる。
  2. オリジナル記事をテーマ別に再構成したPDFファイル「eムック」を毎月配信。
    重要テーマが押さえられる。
  3. 各分野のキーパーソンを招いたトークイベント、関連セミナーに優待価格でご招待。
人気の記事ランキング
  1. Inside the tedious effort to tally AI’s energy appetite 動画生成は別次元、思ったより深刻だったAIの電力問題
  2. Promotion Call for entries for Innovators Under 35 Japan 2025 「Innovators Under 35 Japan」2025年度候補者募集のお知らせ
  3. IBM aims to build the world’s first large-scale, error-corrected quantum computer by 2028 IBM、世界初の大規模誤り訂正量子コンピューター 28年実現へ
  4. What is vibe coding, exactly? バイブコーディングとは何か? AIに「委ねる」プログラミング新手法
日本発「世界を変える」U35イノベーター

MITテクノロジーレビューが20年以上にわたって開催しているグローバル・アワード「Innovators Under 35 」。世界的な課題解決に取り組み、向こう数十年間の未来を形作る若きイノベーターの発掘を目的とするアワードの日本版の最新情報を発信する。

特集ページへ
MITTRが選んだ 世界を変える10大技術 2025年版

本当に長期的に重要となるものは何か?これは、毎年このリストを作成する際に私たちが取り組む問いである。未来を完全に見通すことはできないが、これらの技術が今後何十年にもわたって世界に大きな影響を与えると私たちは予測している。

特集ページへ
フォローしてください重要なテクノロジーとイノベーションのニュースをSNSやメールで受け取る