プログラミング言語「Rust」とは?

Rustというプログラミング言語がある。比較的新しいプログラミング言語で、ここ数年でジワジワと人気が上昇中だ。Rustは2006年、当時Mozillaで働いていたGraydon Hoare氏が個人的に開発を始めたプログラミング言語で、2010年頃から広く知られるようになった。現在では、Mozillaが開発を支援しており、Firefoxとともに進化を続けている。

実のところ、毎年のように新しいプログラミング言語が生まれているが、シェアトップ10に食い込んでくるプログラミング言語はほとんど変わらない。マイナーなプログラミング言語は結局マイナーなままだ。この10年間では、Pythonが上位に躍り出てきたことが例外ともいえ、それ以外のプログラミング言語の人気はそれほど大きく変わっていない状況だ。

しかし、ここにきてRustが出てきた。もしかすると、RustはPythonのように人気を集めるかもしれない。Rustはまだマイナーであり、その存在を知らないプログラマーのほうが多い。しかし、その魅力は底知れず、一回使ってしまうと離れられないところがある。難しいプログラミング言語であることは間違いないので、Pythonほどシェアは広がらないかもしれない。しかし、今後何年にもわたってシェアを広げていくような様子を見せ始めている。Rustを使い出すにはよいタイミングがやってきたように思う。

シェアは1%未満

TIOBE Softwareが検索エンジンなどの検索結果をデータソースとして集計したプログラミング言語の人気ランキング「TIOBE Programming Community Index」によると、Rustの2020年1月におけるインデックス値は0.395%で30位。すごく低くはないが、決して高い値ではない。

RustはTIOBE Programming Community Indexで30位 - 2020年1月 - 資料: TIOBE Software

TIOBE Programming Community Indexのトップ10は、プログラマーの多くが知っているまたは聞いたことがある名前がほとんどだと思う。しかし、11位以降になると聞いたことのない言語も増えてくる。Rustもどちらかというと知られていないプログラミング言語に入る。

RustはGoやDというプログラミング言語と比較されることも多い。どれも比較的新しいプログラミング言語で、厳密には違うのだが、似たような領域を対象にしていると考えられることが多いためだ。TIOBE Programming Community Indexでは、GoやDのほうがRustよりも順位が上だ。2020年1月ではGoは14位、Dは17位。30位のRustと比べるとかなり上位である。

Goは14位、Dは17位 - 2020年1月 TIOBE Programming Community Index - 資料: TIOBE Software

では、なぜ今、このマイナーなプログラミング言語に注目するのかといえば、それはRustが多くのプログラマーに惚れ込まれているからだ。

プログラミング言語の人気を集計して発表しているサービスはいくつもある。集計するデータやデータの整理方法の違いで値は異なりがちだが、年間を通しての動向はそれなりに一致することが多い。そして、Rustはいずれにおいても増加傾向を示している。

愛され方がすごい

プログラマーの動向に関しては、Stack Overflowが毎年公開している「Developer Survey Results」が参考になる。コーディングを行っているプログラマーが「どの技術を使っているか」「今後どの技術を使おうとしているのか」「今どの技術にうんざりしており、どの技術に惚れ込んでいるのか」といったことがまとめられている。この調査結果は、世界中のプログラマーの志向を反映したものではないかと考えられている。

そのStack Overflowの調査結果が、Rustの愛されっぷりを如実に示している。2019年の調査結果「Developer Survey Results 2019」によれば、Rustは4年連続で最も愛されているプログラミン言語のポジションを獲得した。Pythonもかなりの"愛され言語"なのだが、RustはPythonの愛され度を超えている。Rustを使い出したユーザーはRustが好きでたまらないという状況が続いているということだ。

4年連続で最も愛されているプログラミング言語「Rust」 資料: Stack Overflow提供

Rustは、Pythonのように簡単なプログラミング言語とは言えない。少なくとも、学生が最初に学ぶプログラミング言語としてRustを履修対象とすることになったら、担当教官は相当に苦しい立場に立たされるはずだ。Rustにはさまざまなプログラミング言語のパラダイムが含まれている。簡単に動作をすべてを把握できるというか、理解できるというか、使いこなせるようになる言語ではないのである。

しかし、Rustはこれまでのプログラミング言語が抱えていた問題を解消するように設計されており、実際、試行錯誤を重ねてさまざまな問題をクリアしてきた。使い出しは苦労することもあったり、コンパイル時のエラーメッセージに苛立ちを隠せなかったりするものの、Rustを使い出すと、これでよかったという安心感がある。「コンパイルが通れば、あとは大丈夫」という安心感だ。そして、生成されるバイナリはC/C++並に速い。こうなると、もう手放せないということになる。

年に1つ、新しい言語を学ぶなら

1年に1つ、新しいプログラミング言語を学んでみる――これは、よくプログラマーに対して言われることだ。1年ごとに新しいプログラミング言語を習得するというよりも、新しいプログラミング言語に触れることで新しい考え方を導入するという意味合いが強い。

新たに得た考え方や概念は、これまで使ってきたプログラミング言語にも応用ができる。例えば、新しく得たより抽象度の高い概念を自分の使っているプログラミング言語に落とし込んで利用する、といった感じだ。問題の切り分けや整理がスッキリとできるようになったり、場合によっては新しいホームとなるプログラミング言語が見つかったりすることがあるかもしれない。

2020年もそろそろ1カ月が経過する。あと2カ月も過ぎれば、4月から新年度が始まることになる。2020年度に取り組む新しいプログラミング言語として、Rustを選んでみるのは悪くないと思う。Rustが取り入れている概念は簡単ではない。しかし、効果のある方法であることは間違いなく、バイナリの速度がC/C++並に速いことは何にも代えがたい魅力がある。

本連載ではRustについて、インストールを行って実際にハンズオンで試していく方法で取り上げていく。Rustは主要などのオペレーティングシステムでも利用できるし、すでにドキュメントも豊富に整っている。始めるにはよいタイミングだ。