バージョンアップ情報
Rust情報
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は下記ページをご参照ください。