比較的新しいプログラミング言語として知られるRust。
MoFo(Mozilla Foundation)が支援するプログラミング言語として有名でしたが、2020年以降のプログラミング技術のトレンドとして、Rustを挙げる記事も見られるようになってきました(2020年以降のプログラミングトレンド予測)。本稿ではこのRustについて、概要が学習するメリットを解説しています。Rustが気になっている方は、ぜひ参考になさってください。
Rustとはどのような言語か?
Rustは「安全性、速度、並行性」の3つに焦点を合わせた開発が進められているプログラミング言語です。2006年の開発初期はグレイドン・ホアレの個人プロジェクトでしたが、2009年にMoFoが開発に関わり始めてから、Mozilla Researchの公式プロジェクトになっています。2015年に1.0版がリリースされるまで破壊的な仕様変更を繰り返しましたが、1.0版以降は後方互換を保って6週間間隔で定期的に新しいバージョンがリリースされています。
プログラミング言語の中にはC++のようにコンパイル(コンピューター言語への翻訳)を必要とするコンパイル言語(静的プログラミング言語)と、Pythonのようにコンパイルを必要としないスクリプト言語(動的プログラミング言語)の2種類があります。コンパイル言語は、人が理解できるように記述したソースコードを、機械が実行できる形に変換する必要があり、スクリプト言語は変換が不要です。
RustはC++と同じコンパイル言語に分類され、Windowsではexeファイルを作成できます。C++の特徴であった高速性を維持したまま、安全なメモリ管理が容易に実現できることから将来性が期待されています。ブラウザシェアの2位~3位を保持しているFirefoxで採用されている言語であることも、これからの発展を支えるでしょう。
Rustの特徴(安全性、速度、並行性)
Rustのプログラミング言語としての特徴のいくつかを以下でご紹介します。
安全性
Rustは変数に“寿命”を与えることによって、メモリリークやリソースリークのバクの多くをコンパイル時点で発見することができます。さらに、変数に“所有権”を与えることで、複数の箇所から同時にメモリを書き替えることを防ぎます。いずれもコンパイラによってチェックされています。
また、Rustはnull安全な言語であることが公式に記述されており、安全性と開発の生産性を高めるポテンシャルを持った言語であるといえます。
速度
ネイティブに近い環境で実行されるプログラミング言語なので、高速に動作するのが特徴です。多数のベンチマークにおいて、C言語やC++に匹敵する速度を持っています。Rustの実行速度を検証しているブログなどもあるので、興味がある方は検索してみてください。
並行性
安全性の項でも説明した"所有権"を与える仕組みがあることで、マルチスレッドでも安全に実行できます。CやC++では難しかったマルチスレッドが実装しやすいという点は大きな特徴です。
Rustの特徴(その他)
Rustには上記以外にもたくさんの特徴があります。1つ1つ見ていきましょう。
インストールがとても簡単
本稿の後半で「インストールから"Hello, World!"の出力まで」をご紹介するのですが、使い始めるのがとても容易です。Windowsではインストーラの実行だけで準備OK!MacやLinuxはターミナルにコマンドを入力するだけです。
メモリ管理の特徴 “所有権”
Rustはメモリ管理に特徴があります。変数をコピーする際にいくつか制限がかかり、この制限のうちの1つが“所有権”です。要するに変数をコピーしても、コピーした変数からはアクセスができないため、「変数を不用意にコピーしない」という考え方をコンパイラがサポートしてくれるのです。
C++では解放済みメモリにアクセスしたり、未割当のメモリにアクセスしたりしてしまうことがあります。メモリの管理が完全に開発者に依存しているためです。メモリの安全性が低くなると、システム全体を危険にさらしてしまう可能性があります。そこでRustではメモリの安全性を保障するために、所有権というシステムを導入しています。
具体的に説明しますと、変数へ値を割り当てることを“変数束縛”を呼び、値Xを変数Aに束縛することで、その値Xは変数Aによって所有されていることになります。その後に、変数Aが所有している値Xを別の変数Bに束縛した場合、所有権が自動的に譲渡され、変数Aから値Xを参照することができなくなります。これは、“ムーブセマンティクス”と呼ばれるRustの標準動作です。これによりメモリの競合を避け、メモリの安全性を保証しています。
さらに、高速に動作するアプリケーションを開発するという目的を実現するために、コンパイルを実行する際にチェックを厳重に行い、実行時の負荷を小さくして高速に動作できるようにも設計されています。
Rustをインストール、実行する
Rustは他のプログラミング言語に比べてインストールが非常に簡単、というメリットがあります。ここでインストール方法をご紹介しますので、ぜひ挑戦してみてください。ちなみに環境はWindows 10を想定して記載してあります。
インストール
最初に、Rustの公式サイトからコンパイラをインストールします。Windows 10で公式サイトにアクセスすると専用ページが表示されるので、「Get Started」をクリックしてコンパイラをダウンロードしましょう。ダウンロードしたインストーラーを起動し、画面の指示に従ってインストールを進めていきます。デフォルトの設定でインストールすれば、rustc(コンパイラ)、cargo(ビルドツール)といったツール一式の準備が完了します。
プログラムの作成と実行
次に、実際のプログラムを作成してみましょう。メモ帳アプリを開き「hello_world.rs」を作成します。Rustの拡張子は慣例的に「rs」です。任意の場所に「hello_world」というフォルダを作成し、そこに「hello_world.rs」を保存します。
1 fn main() { 2 println!("Hello, world!"); 3 } |
次にコマンドプロンプトを起動し、「hello_world」フォルダへ移動した後、「hello_world.rs」をコンパイル、続けて「hello_world.exe」と入力すれば実行できます。
$ rustc hello_world.rs $ hello_world.exe |
ここで画面に「Hello, world!」と出力されていることを確認したら成功です!
(コンパイルでエラーが出た方は、まずこちらの記事をご参考に。Rustのコンパイルでつまずいた)
Rustを使って何ができる?
Rustは特に安全性に優れたプログラミング言語なので、大規模なシステム開発においても活躍する特徴があります。複数開発者でシステム構築する際も安全性を維持しつつ開発を進められるため、汎用性が高いJavaやC言語よりもセキュアなシステムが完成すると考えられるでしょう。
もちろん、アプリケーション開発にも採用できますし、デバイスドライバやオペレーティングシステムのような低レベルのコードなど他の言語が苦手とする多数のユースケースを得意としているので幅広い開発が可能です。
さいごに
本日はRustについて、以下の内容をご説明しました。
- Rustとはどのような言語か?
- Rustの特徴(安全性、速度、並行性)
- Rustの特徴(その他)
- Rustをインストール、実行する
- Rustを使って何ができる?
ますます注目が集まるプログラミング言語Rustについて、この機会により深く学んでみてはいかがでしょうか?
- カテゴリ: