話題のプログラミング言語『Rust』とは?言語の特徴から、需要と将来性までを解説
最近になって名前を見かけるようになった「Rust」というプログラミング言語。 「今後学びたいプログラミング言語」というアンケートで上位にランクインするなど、今注目されています。 この記事では、そんな話題のプログラミング言語である「Rust」について、言語の概要から、需要、さらには将来性までを解説していきます。
Rustとは
Rustの特性を解説する前に、まずRustというプログラミング言語がどういった経緯で生まれ、何を目指しているのかを説明します。 また、導入方法についても、合わせて説明します。
RustはMozilla社によるオープンソース開発
Rustはもともと、アプリケーション開発を行うMozilla社の社員であるグレイドン・ホアレという方が、2006年に個人で開発を始めました。 Mozilla社といえば、ウェブブラウザであるFirefoxやメールソフトであるThunderbirdを開発している会社で、ITに関わっている人間の中にもコアなファンが多い企業になります。 その後の2009年には、Mozilla社による公式プロジェクトとなり、2022年現在もオープンソースでの開発が続けられています。 複数回の大規模な仕様変更を経て、2015年にver.1.0が発表され、現在の仕様になりました。 現在は、およそ6週間おきに定期アップデートがされています。
Rustはマルチパラダイムプログラミング言語
Rustは「マルチパラダイムプログラミング言語」と呼ばれるプログラミング言語です。 これは、手続き型やオブジェクト指向などの複数のプログラミングパラダイム(コードを書くときの掟)に対応する言語です。 Rustは、CやC++に取って代わるシステムプログラミング言語を目指して開発が進められています。 Rustの構文はC++に近いですが、ほかの言語にはない、多くの独自の仕様を持っています。
プログラムの一例
ごく簡単にですが、Rustのプログラムの一例を挙げます。 これは、定番の“hello world”を表示するプログラムです。 プロジェクトディレクトリ生成後に、以下のコードを書きます。 fn main(){println!(“hello world”);} そしてコマンドプロンプトでコンパイルして実行します。 この一文からも、C言語に似ているのが分かりますね。 ちなみに、Rustのプログラムでは、CやC++のようにポインタをよく使用します。
導入方法
Rustの開発環境は、公式サイトで配布されています。 「RUSTUP-INIT.EXE」をダウンロードして実行することで、インストールが可能です。 ここで注意点ですが、WindowsでRustを実行するには、C++のビルドツールが必要になります。 開発環境がVisual Studioであれば、「Microsoft C++ build tools for Visual Studio」があらかじめインストールされているかを確認してください。
Rustの3つの特徴
Rustはどういった点で優れているのでしょうか。 Mozilla社は 「プログラムとメモリの安全性」 「処理速度の速さ」 「効率の良い並行処理」 に注力して開発しています。 ですので、この3つのトピックから、Rustの特徴を解説します。
安全性
Rustはこれまでのプログラミング言語が抱えた問題を解消するため、「コードの安全性」と「メモリの安全性」を高めるよう設計されています。 Rustは、nullなどが原因の実行エラーを回避する「null安全」という考え方を採用している言語です。 nullは「ヌル」と読み、値が空の状態を表しています。 言語によってこのnullの扱いは異なりますが、多くの言語で 「nullを使った結果、そのタイミングで処理が止まってしまう」 「if文などでの条件で指定した値がnullで、予期せぬ判定をされた」 という問題が起こります。 そのため、このnull安全を採用しているだけでも、プログラミングの初心者からすれば、多くの不要なエラーを回避できるのです。 Rustの他には、PythonやSwift、Hackなどが「null安全」を採用しており、この考え方は多くのプログラミング言語に広がっています。 Rustは、すべての変数に値を持たせて、基本的にnullを存在させないという仕様で「null安全」を実現しています。 この仕様によって、他のプログラミング言語と違い、予期しないnullへのアクセスなどの、未定義によるバグを未然に防ぎ、万が一バグがあっても、実行時に検知できるため、安全な開発が可能になります。 また、Rustは複数個所からメモリを同時に書き換えることを禁止しています。 これによって、ポインタを用いたプログラムに付きまとうメモリへの危険性を解消しています。 さらにコンパイル時にもメモリ管理を厳重に監視しているので、Rustはメモリの安全性が極めて高いプログラミング言語だと言えます。 これまではコードを書く側が行っていたメモリ管理をプログラミング言語が引き受けてくれるので、開発の負担が減ります。 ちなみに、メモリ管理に問題があるコードは、コンパイルが通らない仕様になっています。
処理速度
Rustの最も優れた点は、その処理速度の速さです。 実際、高速な処理を行うためにRustを採用したサービスはいくつもあります。 処理速度が速い言語としてはよくCとC++が上げられますが、RustはC++と同等かそれ以上の処理速度を実現しています。 その理由としては、LLVMの使用、GCをなくす、様々な最適化が挙げられます。 まず、RustはC++などと同様に、コンパイル時に機械語を直接生成しています。 JavaやPythonは、コンパイル時に中間コードを生成してから仮想マシン(Java VMやPVM)で実行するため、処理速度が遅くなります。 Rustではこの際にLLVMを使用することで、コンパイル処理を高速で行うことができるのです。 次に、RustはGC(ガーベジコレクション:不要なメモリ領域を開放する機能)がないので、GCの実行によって処理が停止し、実行速度が遅くなることがありません。 これに加えて、「ゼロコスト抽象化」やアセンブラの最適化などによって、Rustは高速な処理を実現しています。
並行処理
Rustはスレッドを用いてコードを並列に実行するマルチスレッド方式のプログラミング言語です。 マルチスレッド方式の開発でありがちな問題の多くは、Rustでは起こらないようになっています。 Rustではスレッド間での通常のデータ共有が許されていません。 また、チャンネルを経由して行う場合でも、データ更新に制限がかかるため、マルチスレッドでもデータ競合が起こらず、安全で効率的な並行処理が可能です。
Rustが利用されているサービス
RustはMicrosoftやGoogleでOS開発に採用されたことで、大きな注目を得ました。 ここでは、Rustが採用されたサービスをいくつか紹介します。 Rust公式サイトには、Rustが採用されたサービスをまとめたページがありますので、より多くの事例を知りたい場合は、そちらを参照してみてください。 (Rust公式サイト:https://www.rust-lang.org/production)
Dropbox
Rustを採用したサービスとしてまず名前をあげられるのが、オンラインストレージサービスのDropboxです。 もともと、Dropboxの中核となる「Sync Engine」というファイル同期を行うコンポーネントのコードはPythonで書かれていました。 しかし2016年からRustによる書き換えを始め、2020年に新しい同期エンジンである「Nucleus」をリリースしました。 Dropboxは、これまでSync Engineで問題だった保守性や複雑な処理を、Rustを採用することによって解決しました。
Firecracker(AWS Lambda)
AWS(Amazon Web Service)の仮想マシンである「Firecracker」でもRustが使われています。 Rustを採用することで、動作の負荷が大きい仮想マシンでも、高速な処理が可能になったそうです。
Firefox
ウェブブラウザのFirefoxでは、ブラウザエンジン「Gecko」の一部をRustで書いています。 Rustの開発元であるMozilla社は、コードすべてがRustで書かれた「Servo」というブラウザエンジンを開発しており、ここでの成果をGeckoにフィードバックしています。 Mozilla社は、将来的にはGeckoのすべてのコードをRustで書き換えることを示唆しています。
Rustの現在の需要と将来性
Pythonなどに比べるとまだまだマイナーなプログラミング言語であるRustは、今後どれくらい使われるようになるのでしょうか。 Rustの需要と将来性を解説します。
Rustが「今後学びたいプログラミング言語」の上位に
大手転職サイトpaizaが2021年に行った「今後、一番学びたい言語」で、Rustが2位にランクインしました。 (ソース:https://prtimes.jp/main/html/rd/p/000000077.000012063.html?_fsi=54wMne2h) これ以外の会社が実施した同様のアンケートでもRustは上位にランクインしており、注目度が高まっていることが分かります。
Rustの需要はまだまだ局所的
Rustはその独特な仕様から、習得が難しいプログラミング言語だと言われています。 そのため、Rustを使用するエンジニアはまだまだ少なく、知名度が低いことも合わさって、積極的に採用する企業も少ないのが現状です。
今後さらに活用されていく
しかし、Rust関連の仕事は着実に増加しています。 ようやく注目度が高まり、Rustの需要とRustを使うエンジニアは少しずつですが増えているのです。 Rustはこれまでのプログラミング言語に取って代わる優位性を持っています。 今後、Rustはさらに注目度と需要が増していくでしょう。
5年後10年後を視野に入れた開発ならAMELAに相談を
今回は、現在注目を集めつつあるプログラミング言語であるRustについて見てきました。 どんどんと新しい技術が出てくるIT業界では 「どの言語を使うか」 だけでも、数年先で大きな違いが出てくる可能性があります。 多くの企業でありがちなのが 「当時の流行だけで〇〇の言語を使っていたが、今はそれを使えるエンジニアがおらず、メンテナンスが出来ない(もしくは多額の費用を払って外注する必要がある)」 といった問題です。 確かに、システムはIT資産ではあるものの、そのメンテナンス性によっては、将来的な負債やビジネスリスクに繋がる危険性もあると言わざるを得ません。 AMELAでは、様々な開発を行っているものの 「単に作る」 のではなく、顧客の要望やメンテナンス性・拡張性など様々なことを考慮できるITコンサルタントも在籍しています。 そのため、一般的な開発だけをしている企業に比べて長期的な目線を持った開発が出来ると自負しています。 決して安くない費用を支払って開発を行うのですから、将来性やリスクについても考慮しながら提案したいと思っています。 是非、ご相談下さい。