Rust(ラスト)とはC/C++言語のように実行速度や実行効率に優れていながら安全なプログラムが作れることで人気のプログラミング言語です。最近では、Linuxカーネルの開発言語に加わるとのことで話題になっています。そんなRustで有名アルゴリズムを解くことで、Rustについて理解を深めましょう。
OSやブラウザ開発にも使われているRustをはじめよう
Rustは「パフォーマンス、信頼性、生産性」に焦点を合わせて開発されたプログラミング言語です。C/C++言語を置き換えることを目標に開発が進められてきました。
これまで、OSの開発やブラウザの開発に使われるプログラミング言語の主流はC/C++言語でした。それは実行速度が速く、実行効率が良く、コンピューターの性能を最大限発揮できる言語だからです。 ところが、C/C++言語で正しくメモリを扱うのは非常に難しく、セキュリティ脆弱性の原因となってきました。そこで、Rustでは「所有権」と呼ばれる独自のメモリ管理の機構を言語に組み込むことで、安全にプログラムを作成できるようにしています。
Rustはとても難しい言語?愛されるのには理由がある!
主要OSやブラウザの開発にRustが使われはじめていることから、安全のためにも新規のプロジェクトや既存プロジェクトのリニューアルには、C/C++よりもRustを使うのが良いという場面も増えてきています。
しかし、RustはPythonやJavaScript、Rubyなどのスクリプト言語に比べると「難しい」というのも事実です。とは言え、どんな言語であっても、最初はそれなりの労力が求められます。しかも、既存言語に存在していた問題を解決する新しい考え方を取り入れた言語であるなら尚更です。
また、RustはStackoverflowの2022年の調査では7年連続で最も愛されている言語に選出されています。ちょっと覚えるのが難しいかもしれないけれど、一度覚えてしまえば、手に馴染む道具となるのがRustなのです。
そこで、有名なアルゴリズムをRustで実際に実装してみるなら、Rustがより身近に感じられることでしょう。本連載の一回目は、最も簡単なFizzBuzz問題を実行することで、Rustの思想に慣れていきましょう。
Rustのインストールについて
Rustを最も早くマスターする方法は、実際にRustを自分のPCにインストールし、サンプルプログラムを自分でコンパイルしてみることです。自分で手を動かして、プログラムを書き換えてみることで、理解がぐっと深まります。
Rustをインストールする方法ですが、macOSやLinuxであれば、ターミナルを起動して、以下のコマンドを実行するだけで、インストールできます。(Windowsの場合でも、WSL(Windows Subsystem for Linux)を使えば、下記コマンドを実行してインストールできます。)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
WindowsでWSLを使わない場合や、インストールに関するより詳しい方法に関しては、公式のドキュメントが参考になります。
加えて、マイナビニュースの連載「ゼロからはじめるプログラミング言語Rust」でもRustを各OSにインストールする手順が解説されています。
FizzBuzz問題を解いてみよう
Rustをインストールしたら、さっそくプログラムを作ってみましょう。最初に、FizzBuzz問題を解いてみましょう。FizzBuzz問題とは、次のような問題です。
1から100までの数を出力するプログラムを書いてください。ただし、3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」と表示してください。3と5の倍数の時は「FizzBuzz」と表示してください。
このFizzBuzz問題を解くには、繰り返し構文のforや条件分岐のifの使い方をマスターしている必要があります。そのため、FizzBuzz問題を見れば、そのプログラミング言語の基本を確認できるのです。それでは、RustでFizzBuzz問題を解くプログラムを見てみましょう。
// 全てはmainから始まる --- (*1)
fn main() {
// 1から100まで繰り返す --- (*2)
for n in 1..=100 {
// FizzかBuzzか調べて変数に代入 --- (*3)
let is_fizz = n % 3 == 0;
let is_buzz = n % 5 == 0;
// ifで順に条件分岐 --- (*4)
if is_fizz && is_buzz {
println!("FizzBuzz");
} else if is_fizz {
println!("Fizz");
} else if is_buzz {
println!("Buzz");
} else {
// その他の場合、数値を出力 --- (*5)
println!("{}", n);
}
}
}
プログラムを実行するには、ターミナル(WindowsならPowerShell)を開いて、次のコマンドを実行します。なお、「$」は入力を意味する記号で入力の必要はありません。またWindowsでは「/」ではなく「\」(¥の半角記号)を入力します。