【Rust入門】そもそもRustとは?
RustはMozilla社が支援するオープンソースのプログラミング言語であり、2015年に登場した比較的新しいプログラミング言語です。MicrosoftやGoogleがOS開発にRustを採用するなど、C言語やC++に代わる新たなカーネル開発のプログラミング言語として注目されています。
Rustでできること
RustはC言語やC++でこれまで開発されてきたOSコアの開発で利用されることが多い言語です。先程も軽く触れたとおり、Microsoftは2019年11月からWindowsの開発にRustを採用しており、GoogleもAndroid OSの開発にRustを採用すると発表しています。また、Linuxカーネルの開発にRustを採用する動きもあり、まさにC言語やC++に代わる新たな言語と言えるでしょう。
それ以外にも、組み込み系の開発やWebアプリケーションのバックエンド開発も可能です。
入門者がRustを使うメリットとは?
Rustは「効率的で信頼できるソフトウェアを誰もが作れる言語」として公開されています。Rustは実行速度が速く、安全性が高いという特徴を持つ言語です。加えて、新しい言語であるため多くの言語を参考にした扱いやすい文法であり、入門者にも最適な言語と言えるでしょう。特に、OS開発や組み込み系の開発に携わりたいと考えている方にはおすすめの言語です。
実行速度の速さ
Rustは仮想マシンを使用せずに直接機械語にコンパイルできるため、C言語に匹敵する実行速度が実現できます。加えて、プログラム実行時に不要となったメモリ領域を自動で開放する「ガーベジコレクション」の機能がない代わりに、独自のメモリ管理機能を持っています。
C言語やC++では手動でメモリを管理する必要がありますが、ガーベジコレクション機能も含めてこれらは実行速度の低下につながる要因です。Rustは独自のメモリ管理機能によって実行速度の速さと安全性まで実現できます。
安全性の高さ
C言語やC++を利用する際には、安全性の面でメモリ管理が特に重要視されます。セキュリティ上の脆弱性の多くはメモリ利用に関するバグに起因するとされており、C言語やC++におけるOS開発での弱点の一つとなっていました。
Rustでは、独自のメモリ管理機能によってメモリ安全性を実現しています。具体的には、所有権・借用・ライフタイムという概念を持ち、自動的なメモリ管理によってメモリリークやリソースリークなどのバグを防ぐことが可能です。
メモリの安全性はコンパイル時にチェックされ、MicrosoftやGoogleはこの安全性の高さを最も評価し、Rustを採用しています。
いざ、Rust入門!具体的なやり方を解説!
それでは、実際にRustを触ってみましょう。 ここでは、環境構築から簡単なプログラムを作成するまでの具体的な手順を紹介します。
Rust入門1 インストール
RustのインストールはWindowsとMacでそれぞれ手順が異なります。
また、Windowsの場合は「Visual Studio C++ Build tools」も併せてインストールする必要がある点にも注意してください。
【Windowsでのインストール手順】
1.公式サイトにアクセスし、インストーラをダウンロード
※32bit/64bitはご利用の環境に合わせて選択してください
2.インストーラを実行した際に次の画面が表示された場合は2-1へ、表示されなかった場合は3へ進んでください。
※「Visual Studio C++ Build tools」がインストールされていない場合に表示される
2-1.「Microsoft C++ Build Tools」のサイトを開き、「Build Toolsのダウンロード」をクリックしてください。
※Microsoft C++ Build Toolsは、Visual Studioを利用せずに必要なライブラリ類をインストールできるツール
2-2.インストーラを実行し、「続行」をクリックしてください。
2-3.ワークロードタブで「C++によるデスクトップ開発」にチェックを入れ、右ペインで「Windows 10 SDK」にチェックが入っていることを確認してください。
2-4.言語パックタブで「日本語」「英語」にチェックを入れ、インストールボタンをクリックしてください。
2-5.インストール完了後、Rustのインストール画面に戻り、「y」を入力してください。
3.インストール設定画面で「1」を入力し、Rustのインストールを開始してください。
※Rustのバージョンやインストール場所を変更したい場合は「2」を入力してください。
4.「Rust is installed now. Great!」と表示されればインストール終了です。
5.コマンドプロンプトで「cargo –version」と入力し、バージョンが表示されれば正常にインストールが完了していることを確認できます。
【Macでのインストール手順】
Macの場合は、ターミナルを開いて以下のコマンドを実行することでインストーラを実行できます。
1
|
curl —proto ‘=https’ —tlsv1.2 –sSf https://sh.rustup.rs | sh
|
コマンド実行後はWindowsでのインストールと同様の手順で進めます。
ここでも、インストールオプションはデフォルトの「1」を選択しました。
必要なライブラリのインストールが始まり、「Rust is installed now. Great!」と表示されればインストール完了です。
新たにターミナルを開き直し「cargo –version」を入力してバージョンが表示されることを確認してください。
Rust入門2 Hello World!
プログラミング言語の最初の一歩「Hello World!」をRustで実行してみましょう。
1.任意の場所にディレクトリを作成して、カレントディレクトリを変更してください。
2.「cargo new hello_world」を実行してください。
3.カレントディレクトリを「hello_world」に変更し、「cargo run」を実行。「Hello, world!」と表示されることを確認してください。
cargo runはカレントディレクトリにCargo.tomlがないとエラーになる。
と思ったけど、srcの中でやってもうまく動いたのでわからん。
Rustは新たにプロジェクトを作成した時点で、Hello Worldと表示されるコードが自動的に作成されます。ソースコードはプロジェクトを作成したディレクトリ内の「src」の中に「main.rs」として保存されています。
「println!」の中身を変えることで、出力結果が変更できるため試してみましょう。
Rust入門3 簡単なプログラムを作成
ここからはもう少し踏み込んだコーディングを行いましょう。変数や条件分岐、繰り返し処理をRustで行ってみます。
以下のコードは変数を定義し、条件分岐によって出力する内容を変更するものです。
Rustではさまざまな基本データ型をサポートしており、次に上げるようなタイプがあります。
- 符号付き整数:i8,i16,i32,i64,i128,isize
- 符号なし整数:u8,u16,u32,u64,u128,usize
- 浮動小数点:f32,f64
- 文字型:char
- 論理値:bool など
コードの中では明示的に変数numをi32(32ビットの符号付き整数)として宣言していますが、宣言をしない場合は自動的に変数の型が決められます。整数はi32、浮動小数点はf64がデフォルトです。
それぞれの変数に格納された数値を表示し、合計値も表示するコードとなっています。加えて、if文を使った条件分岐によって合計値が1000未満の場合は「total under 1000」、1000以上の場合は「total over 1000」と表示するようにしており、今回は1000以上となるため実行結果は次のようになります。
続いて、繰り返し処理を使って九九の表を作成するコードを見ていきましょう。今回の繰り返し処理ではfor in文を使用しています。for in文を使用すれば特定の数値の繰り返しが簡単に記載可能です。
ここでは「1..10」が「1~9」の繰り返しであることを表し、その数値をxに代入しながら繰り返し処理を行うことを意味しています。また、次のような書き方でも「1~9」の繰り返しとして処理できます。
1
|
for x in 1..=9 {
|
xとyの二重ループの中で、計算した結果をprint!を使ってフォーマットを整えながら出力。出力するフォーマットの意味としては、「変数numを2桁で表示し、桁数が足りない場合には0を追加する」となります。
最後に、print!は出力結果に改行を含まないため、yのループが終わった後に改行を入れる意味で「println!();」があります。
これを実行すると、九九の表が表示されることが確認できるでしょう。
変数、条件分岐、繰り返し処理はプログラミングの基本であり、Rustではこのように簡単に実装できます。あくまでも一例であり、その他にもさまざまなコーディング手法があるため、実際に触りながら覚えていきましょう。
Rustは近年C言語やC++の代わりとして注目されているプログラミング言語です。これまでC言語やC++で開発されてきたOSコアや組み込み系の開発だけでなく、Webアプリケーションのバックエンド開発も可能な言語となっています。
Rustの特徴は実行速度の速さと安全性の高さです。C言語などに匹敵する実行速度を持ちながら、メモリ安全性の高さが評価され、MicrosoftやGoogleでもOS開発に利用されています。
今後、OS開発や組み込み系の開発では特に需要が伸びると考えられます。C言語などと比べても新しい言語であり、多くのプログラミング言語の記法から良いところを取り入れているため、入門者にも最適な言語と言えるでしょう。
これからプログラミング言語を学びたい、将来的にOS開発や組み込み系の開発に携わりたいと考えている方は、ぜひRustを使ってみてはいかがでしょうか。