全5711文字
PR

 Rustは、現在最も注目を集めているプログラミング言語の1つといっていいだろう。2015年にリリースされ、ここ数年でじわじわとファンとユーザーを増やしてきた。Rustは、言語仕様が比較的難しい部類の言語であることは間違いない。しかし、それを上回る安全性と速度の担保、優れた開発者体験――そして使う楽しさがある。

 Rustは本来、オペレーティングシステム(OS)など低レイヤーのソフトウエア開発向けに設計された言語である。しかし、他の用途で使えないわけではない。例えばWeb開発でも、他の言語と遜色のない実力を発揮できる。この連載では、Rustの言語機能について一通り説明した後に、Webアプリケーション開発に利用できる側面を見ていく予定だ。連載が終わるころには、システム開発の現場にRustを導入できるようになることを目指す。

 今回は、Rustの概要と特徴について解説する。Rustの特徴はメモリー安全性、そして圧倒的な実行速度だ。

安全性を武器にCやC++に対抗

 Rustは、OSやコンパイラーなどの低レイヤーの開発向けに設計された、いわゆる「システムプログラミング言語」だ。こうした分野でCやC++が持っていた圧倒的なシェアに食い込もうとする言語である。しかし同時に、Webなどの高レイヤーでも幅広く利用されている。

 システムプログラミングでは、ハードウエアの操作や制御を含むプログラムを記述する。代表的なソフトウエアとして、OSやデバイスドライバー、ソフトウエア開発に使うコンパイラーやリンカーなどがある。

 実際にRustの利用事例は低レイヤーのものが多い。米Amazon Web Services(アマゾン・ウェブ・サービス、AWS)が開発を進める仮想化機能「Firecracker」はRust製だ。また、米Google(グーグル)を中心に開発されている「Android」のBluetoothモジュールや「Chrome OS」の仮想マシンモニター「crosvm」にもRustが使われている。

 こうした分野のソフトウエアは従来はCやC++で開発されてきた。CやC++には、これまで積み上げた圧倒的な実績やエコシステム、ノウハウがある。

 Rustはこの分野に「安全性」という武器で食い込もうとしている。Rustはコンパイル時にメモリー安全を担保する。RustがCやC++と異なるのはこの点であり、支持を集める理由でもある。

 Rustで開発したソフトウエアは性能も高い。安全でありつつ性能面でもCやC++に並ぶことができなければ、低レイヤーでは支持を集められない。だからRustは性能面も重視しているのだ。

 Rustの利用事例は低レイヤーにとどまらない。Webアプリケーションのようないわゆる高レイヤーのソフトウエアでも利用されている。筆者はWebアプリケーションを多く扱う企業に勤めるエンジニアだが、この分野でもRustの利用に可能性を感じている。

 Rustの開発チームが2019年に実施したアンケート「Rust Survey 2019 Results」によれば、Rustの利用事例の1位は実は「Webアプリケーションのバックエンド開発」だった。次いで分散システムの開発、組み込みのデバイス開発の順だ。あくまでアンケート結果ではあるが、RustがWebバックエンド開発に使われる例は意外に多い。