パソナについて
記事検索

【入門】Rustとは?言語の3つの特徴やインストール方法について解説

Rustについて、言語の持つ3つの特徴と、インストール方法について解説していきます。

【入門】Rustとは?言語の3つの特徴やインストール方法について解説

Rustについて、言語の持つ3つの特徴と、インストール方法について解説していきます。

スキルアップ

2020/12/04 UP

Rustはオープンソースのシステムプログラミング言語です。2010年に登場したまだ新しい言語で、ブラウザのFirefoxで有名なMozillaが支援しています。Rustはこれまでのプログラミング言語が抱えていたさまざまな問題を解消してC言語の代替となることを目指して開発され、手続き型、オブジェクト指向、関数型などのマルチパラダイムプログラミング言語としてさまざまな手法をサポートしています。

比較的新しい言語なこともあり、実使用におけるプログラミング言語の人気を長年調査しているTIOBE indexの2020年11月のランキングでは25位と他のプログラミング言語に比べてシェアは少なめですが、Stack Overflow Developer Surveyでは2016年から2019年まで最も愛されているプログラミング言語の1位に選ばれるなど、採用または学習を検討していると回答している開発者が多く、今後着実に人気が上昇すると予測されている言語でもあります。

今回はこのRustについて、言語の持つ3つの特徴と、インストール方法について解説していきます。

Rust(ラスト)とは?

RustはC言語やC++に代わる新しいシステムプログラミング言語として開発されました。「安全性、速度、並行性」の3つに注力されており、FirefoxやThunderbirdで知られるMozilla の公式プロジェクトで開発されているオープンソースの言語です。

多くのプログラミング言語が抱える問題点を解消するという目標を掲げたため、開発当初は破壊的な仕様変更を繰り返していましたが、2015年の1.0版リリース以降は、後方互換性を保ちながら6週間間隔で新しいバージョンをリリースしています。

複数の手法をサポートしたマルチパラダイムな開発言語であり、C言語に匹敵する処理速度を持っています。マルチスレッドプログラミングに対応し、バグが発生してもシステムエラーを起こさない設計になっているなど、高い並行性や安全性を持つ一方で、Rustは習得難易度が高い言語という難点も抱えています。

公式でも問題点を重視し、学習曲線の改善を課題に挙げているため、今後、学習環境の整備とあわせて何らかの改善がなされることが期待されています。

【Rustの3つの特徴】安全性・速度・並行性

Rustは「安全性、速度、並行性」の3つに焦点を合わせて開発された言語です。そのため、他の言語と比較して3点においては極めて突出した特徴を持っています。

以下でそれぞれの特徴について詳細に解説していきます。

1.極めて高い安全性

?安全なプログラミング言語

Rustはすべての変数が常に値を持つ構造をしています。そのためnullが基本的に存在しない言語となります。もし「値が入っていない」という条件を表現する場合は、「値が入っていない」という値を持つOption型を使用し、中身にアクセスする際に必ず「その値がNULLであるか否か」のチェックをおこないます。これによって、予期しないnullへのアクセスが発生しません。

このように、万一バグが発生した時の処理を定義しているため、Rustで記述されたプログラムには未定義の振る舞いがありません。そのため、バグのあるプログラムが実行された場合でも、実行したコンピューターのプラットフォームに関わらず検知でき、適切に処理されます。

長年さまざまなプログラミング言語が抱えていたnull問題を解決し、処理ができずにエラーを起こしてシステム全体が停止するような問題が発生しないため、安全性の高いシステムの構築が可能になります。

?メモリの安全性

Rustでは変数に所有権を与えることで複数の箇所から同時にメモリを書き換えることを禁止しています。また、コンパイル時にメモリ管理の安全性を厳重にチェックしているため、メモリの管理に問題があるコードはコンパイルが通らないようになっています。

このように従来はエンジニアの責任で行われていたメモリ管理を言語側でしっかりと監視するため、多くの言語で問題になっていたメモリーリークの発生を抑制し、安全性の高いメモリの運用ができるようになりました。

2.処理速度が速い

RustはC言語やC++の代用となる言語として開発されたため、C言語の優位性である処理速度を損なわないよう、高速で処理が行える設計になっています。

実行速度はC言語に匹敵、あるいはさらに高速な処理が可能なため、素早い処理を求められる開発案件で強みを発揮します。

3.効率的な並行処理が可能

Rustはスレッドを使用してコードを並列で実行する「マルチスレッド」でプログラムを処理できるように設計されています。マルチスレッドとはアプリケーションのプロセス(タスク)を複数のスレッドに分けて並行処理する方式を指します。

所有権に制約をつけることでスレッド間でのデータ共有が行われないことが保証されるため、マルチスレッドで処理をしてもデータ競合が起こらず、安全性が高まります。また、スレッド同士のデータ共有をチャンネルというメッセージ送受信を経由して行う場合は、スレッド内のデータはそのスレッドからのみ変更が可能になるため、やはりデータ競合が起こらないようになっています。

スレッド同士で可変オブジェクトを共有する場合でも、コンパイル時にデータ競合が起こらないシステムを利用していることを確認するため、コンパイルされたコードでは複数のスレッドが同じメモリ領域内のデータを読み書きすることを防止できる仕組みです。

Rustで開発できるもの

Rustは前項で解説したとおり、既存のプログラム言語が抱えていた「null」「メモリーリーク」「データ競合」の問題を解決しているため、安全性の面では他の言語に対して大きな優位性を持っています。その特徴を活かし、Rustでの開発が適していると言えるのは、大規模なシステム開発とアプリケーション開発です。

今まではプログラミングをしたエンジニアの責任に依存していたメモリ管理などもすべてプログラム側が監視しており、コンパイル時に厳密に確認が行われるため、複数の開発者を擁する大規模なシステム開発に向いています。大勢のエンジニアがコーディングを行っても、最終的にバグが少なく出来上がるため、より安全なシステム構築が可能です。

また、クラウドストレージサービスやメッセージアプリ、ブラウザなどの大規模接続に対する高速な処理と、保持するデータに対する堅牢性、システム運用上の安全性が強く求められるアプリケーション開発にも適しています。

Rustのインストール方法

Rustの開発環境は公式サイトから最新のファイルをダウンロードするだけなので、簡単にインストールできます。

WindowsとMacそれぞれのインストール方法を簡単に解説していきます。

WindowsにRustをインストールする場合

Windows10でRustを実行するは、依存関係としてVisual C++ビルドツールが必要になります。

Microsoft C++ build tools for Visual Studio 2013または、それ以降のバージョンのC++ビルドツールがインストールされているか確認してください。インストールされていない場合は、Visual Studio 2019またはVisual Studio Build Tools 2019を事前にインストールしておく必要があります。

Rustのインストールには、公式サイトから「RUSTUP-INIT.EXE」をダウンロードして実行します。

実行するとコマンドプロンプトの画面が表示されるので、「1:Proceed with installation」を選択してインストールを実行します。

MacにRustをインストールする場合

Macでインストールするにはターミナルから以下のコマンドを実行します

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

macOSにRustをインストールするためのBashスクリプトがダウンロードされたら、画面の指示に従ってインストール作業を進めていきます。

途中、インストール方法を選択する画面が表示されるので、「1:Proceed with installation」を選択してインストールを実行します。

RustでHelloWorldを記述してみよう!

では最後に、実際にRustでプログラムを実行してみましょう。今回はプログラミング言語を初めて実行したときの定番であるHello World を表示します。

まずはサンプルコードを見ていきましょう。

fn main() {
    println!("Hello, world!");
}

今回はオンラインでRustのコードを記述してコンパイルから実行までできるThe Rust Playgroundなどのオンラインサービスを利用して実行してみます。

Rust_1

コードを画面に貼り付け「RUN」を押すと、コンパイルが行われ、以下の文が表示されます。

Compiling playground v0.0.1 (/playground) Finished dev [unoptimized + debuginfo] target(s) in 0.51s Running `target/debug/playground`

コンパイルが成功すると、画面に「Hello, world!」と表示されます。

Rust_2

Rustはプログラマーとしてスキルアップしたい方におすすめ!

Rustはプログラマーとしてスキルアップしたい方におすすめ!

Rustは既存の多くの言語が抱える3つの問題「null」「メモリ管理」「データ競合」を監視し、問題が発生し得ない構文構造を持つことによって、バグが少ないよりセキュアなプログラミングを可能としました。

場合によってはC言語よりも高速な処理を可能とする処理速度や、安全性の高さや堅牢性などから、大手のクラウドサービス企業でもシステム構築にRustを採用し始めるなど、今後CやC++からRustに開発言語を変更する企業は増加していくと考えられています。

学習が難しい言語ではありますが、すでにプログラマーとして活躍している人にとって、Rustを習得することは安全性の高いプログラムを構築するスキルを身に着け、新しいキャリアパスを描く機会にもなります。

今後需要が増加するRustを学習し、スキルアップしてさらに高いキャリアアップを目指してみてはいかがでしょうか。