トップ OSS紹介 Rust

Rust

NRIのOpenStandiaが提供するRust詳細情報

バージョンアップ情報

Rust情報

Rust情報更新日:2025/09/09

Rustとは

Rust(ラスト)はMozillaが支援するオープンソースのプログラミング言語です。
2006年の開発初期はC++の問題点を改善するためにGraydon Hoare氏が個人で設計・開発しているプロジェクトでしたが、2009年にMozillaが開発に関わり始め、Mozilla Researchの公式プロジェクトになりました。
その後、2021年2月8日には前年のMozillaの大規模なリストラに伴いAmazon Web Services(AWS)、Google、Huawei Technologies、Microsoft、Mozillaの5社によるRustの支援を目的とした独立非営利団体Rust Foundationが設立されています。
Rustは関数型プログラミング、オブジェクト指向プログラミング、手続き型プログラミングなどをサポートするマルチパラダイムプログラミング言語で、「メモリ安全性」「速度」「並行性」の3つを実現することを目標としています。
C++では困難であったメモリ安全性を容易にしながら高速に動作するアプリケーションを開発できる言語として成長を続け、Stack Overflow Developer Surveyの「最も愛されているプログラミング言語」第1位を2016年から2024年まで9年連続で獲得しています。
Rustは2010年に初版、2015年には1.0版がリリースされました。1.0版以降は後方互換を保って6週間間隔で定期的にリリースされるようになりました。
その後、2018年にリリースされた1.31版からエディション制度が導入され、Rustは複数のエディションに区分されるようになりました。この制度は同一エディション内のバージョン間では原則として後方互換性が保つ一方、エディション間では互換性のない変更を許容するものとなっています。
これに伴い、エディション制度が導入される前のRustをRust2015、それ以降をRust2018と呼称するようになりました。また、2021年にリリースされた1.56版からはRust2021、2025年にリリースされた1.85版からはRust2024となっています。

主な特徴

マルチパラダイムプログラミング言語

Rustでは関数型プログラミング、並列アクターモデル、オブジェクト指向プログラミング、手続き型プログラミング、ジェネリックプログラミングなど複数のプログラミングパラダイムをサポートしています。

所有権システム

Rustでは変数と実際の値の格納先であるメモリ空間を1対1に対応させるよう制約を設けており、同じ値(メモリ空間)を複数の変数から参照することは原則としてできません。つまり、特定の値は1つの変数によってのみ所有されるという考え方を基本としています。
これはプログラミング上の制約を伴いますが、その代わりに後述するメモリの自動管理、メモリの安全性、ゼロコスト抽象化を可能とします。

メモリの自動管理

Rustは所有権システムを導入していることにより、変数が不要になる時点でコンパイラがメモリ解放を判断できるようになります。そのため、「明示的なメモリ解放」などのメモリに関する操作がほぼ不要となっています。

メモリの安全性

強力な型システムとリソース管理の仕組みにより、メモリの安全性が保証されています。Rustのコンパイラはコンパイル時に所有権と借用のルールを厳密にチェックし、不正なメモリアクセスやデータ競合を防いで安全なプログラミングを実現します。

ゼロコスト抽象化

従来のプログラミング言語ではポリモーフィズムや高階関数などの抽象化を使用した場合、実行時にオーバーヘッド(コスト)がかかるという問題がありました。Rustでは所有権システムの考え方を導入することでこの問題をコンパイル時に解決し、実行時にはゼロコストになるように設計されています。

ムーブセマンティクス

ある変数へ格納した値を別の変数に移動させることで、所有権を移動させます。これにより、不要なリソースを破棄し、メモリの安全性を保っています。

参照と借用

オーナーシップの概念に従うとリソースの所有権が無い限りリソースを参照することもできなくなり、利便性が損なわれます。
そこでリソースの所有権を条件付で借用し、参照と書き込みを可能とするミュータブル参照という形でリソースにアクセスすることを可能としています。

ライフタイム

Rustでは全ての参照でライフタイムを持っています。これは変数のスコープのようなもので、ライフタイムが終了した参照は使用することができなくなります。これも所有権と関連し、メモリの安全性を保つための概念となっています。

並行プログラミング

Rustは並行プログラミングが安全かつ効率的に行えることを目標としており、所有権と型チェックの概念に基づき並行性に起因するエラーをコンパイル時に検知することができます。

メリット・デメリット

メリット・必要性

  • メモリの安全性

強力な型システムとリソース管理の仕組みにより、メモリ安全性が保証されます。

  • 高いパフォーマンス

C++並みの高い速度で動作します。

  • 安全な並行プログラミング

安全かつ効率的な並行プログラミングが可能です。

デメリット・注意点・課題

所有権やライフタイムの概念は他のプログラミング言語にはない考え方で、初心者には難しいと言われることもあり、学習に時間がかかる可能性があります。

類似プロダクト

  • C++
  • C#
  • F#
  • Kotlin
  • Nim
  • Go
  • Elixir

ユースケース

RustはデバイスドライバやOSのような他の多くの言語が苦手とする低レイヤから、アプリケーションなどの高レイヤまでカバーでき、以下の用途に使用されています。

  • コマンドラインアプリケーション
  • Webサーバ
  • 組み込みデバイス
  • 暗号化通信
  • IoTアプリケーション
  • 機械学習

主な例として、Mozilla社のWebブラウザであるFirefoxのCSS処理にRust製のコンポーネントが利用されています。またAWSの各種サービス、Google社のChrome、Android、Microsoft社のWindows の開発にも採用されています。

動作環境

  • Linux
  • macOS
  • Windows

Rustのライセンス

Rustのライセンスは、 「Apacheライセンスバージョン2.0」(Apache License version2.0)と「MITライセンス」のデュアルライセンスに基づいて公開されています。

製品ダウンロード

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Ruby

    Ruby

    ルビー。シンプルさ、読みやすさ、高機能が人気の国産オブジェクト指向スクリプト言語です。

  • Java

    Java

    ジャバ。サンマイクロシステムズ社(2010年にオラクル社に吸収合併)により開発されたプログラミング言語、及びその動作環境である Java VM(ジャバ仮想マシン) です。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。