みなさんは『Rust』というプログラミング言語をご存知でしょうか。Rustは比較的最近生まれた言語で、現在広く普及しているC++の後継として期待されているプログラミング言語なのです。
C++は非常に強力な言語ですが、その分きちんと使いこなせなければ危険な面もあります。その点、Rustではその強力な部分を引き継ぎつつ、安全にプログラミングすることができます。
Rustはここ最近、Microsoftといった大企業の開発言語として採用されたり、AWSなどの有名なサービスで利用されており急速な広がりを見せています。
そこで今回は、今話題のプログラミング言語『Rust』がなぜC++の後継と言われるようになったのか、具体的にどのような点が優れているのかをできるだけ分かりやすく解説していきます!
Rustとは
Rustとはアメリカの非営利団体Mozillaが支援するプログラミング言語で、2006年に開発が開始され、2015年に1.0版がリリースされました。Rustには『安全性』『速度』『並行性』という3つの特徴があり、現在様々な開発現場で採用され、使われています。
RustはC言語、C++に変わる言語として開発されました。C言語やC++と同じ『メモリ管理』という特徴を持ちながら、メモリ管理での持つメモリリークなどの危険性を極力排除し、安全性を確保することに成功しています。
コンパイル言語(コンピューター言語への翻訳が必要な言語)ですので、速度的にもC++と同等の実行速度を兼ね備えています。さらに、メモリ管理で使用する所有権システムにより、マルチスレッドでも安全に処理することも可能になっています。
また、オープンソース(ソースコードが公開されている)のプログラミング言語で、現在も定期的なアップデートがリリースされていますので、現在もどんどん改良が加えられています。
開発者向けのQ&Aサイト【Stack Overflow】の調査では、最も愛されているプログラミング言語の部門で一位を獲得し続けており、開発者からの人気が高いプログラミング言語という結果が出ています。
最近登場した言語なので、C++やJavaなどの人気言語と比較すると求人数は少なめで、今後の伸びが期待されます。ただし、現在あまり使える人がいないため、高額報酬での転職案件もいくつか存在します。
C++とは
C++は1980年代に登場したプログラミング言語でC言語の機能や特徴を継承しつつ、オブジェクト指向プログラミングなどの技法が取り入れられました。C言語と互換性があるので、同時に利用されたり今でも根強い人気があります。
C言語と同様コンピュータの能力をフルに活かせる言語であるのですが、活かすにはプログラミングの知識以外にコンピュータについての知識も必要になります。言語自体も比較的には難しい部類に属しますが使いこなせれば強力なパワーを発揮します。
高速に動作するため、現在でもスマホアプリやゲーム、様々な企業の基幹システムといった非常に多くの開発現場で使用されています。有名なサービスでは『Google Chorme』や『Unreal-Engine』などはC++が使用されています。
C言語、C++の文法に似たプログラミング言語はたくさんあり、C++を学習することで他のプログラミング言語に応用できる点は多く、学習する利点は多いといえます。
比較的古い言語ですが今でも人気があり、多くの現場で使用されていることから求人数も非常に豊富で、中にはかなり高い報酬の求人もあります。
Rustは人気のC++の後継言語を目指していますので、C++の利点を引き継ぎつつ、不満や危険な点を改善したことによって人気が上がってきています。ここでは具体的にはどのような点が良くなったのかを見ていきましょう。
・メモリ管理の安全性
C++とはの項で少し説明しましたが、C++の大きな特徴はメモリ管理が行えるという点です。メモリ管理はコンピュータの性能を生かすうえで非常に有効な技術ですが、メモリの解放などを忘れると使用できるメモリの量が減り、最終的にはOSにエラーが発生し非常に危険です。
そのようなメモリの問題を解決するためにRustは『所有権システム』が導入されています。
Rustでは値を変数に割り当てるとその値は変数によって所有されます。その後、変数が所有している値を別の変数に割り当てた場合、自動的に「所有権」が譲渡され、譲渡した変数からは値を参照できなくなります。
この所有権システムによって、同時に存在する参照をひとつのみに制限することができるようになり、メモリの安全性が確保されます。もちろん例外などはありますが、簡単なイメージとしてはこのような感じになります。
・マルチスレッドでの安全性
先ほど説明した『所有権システム』の仕組みによって、スレッド間でのデータの共有が行われないことが保証されるためデータ競合が起こらず、マルチスレッドでも安全に実行できます。
C++では難しかったマルチスレッドが実装しやすいという点は大きな特徴ではないでしょうか。
システム開発言語として採用している企業
Rustはその特徴から様々な現場で開発言語として利用されています。ここではRustを採用している企業をご紹介します。
Amazon(AWS)
AWS(Amazon Web Services)はAmazonにより提供されているクラウドサービスで、日本国内だけで10万以上もの顧客に利用されています。AWSは2019年10月14日にRustをスポンサーとして支援することを発表しています。
AWSにおけるパフォーマンス要求の厳しいコンポーネントでRustが採用されており、Rustがいかにパフォーマンスに優れた言語か良く分かります。
AmzaonはRustの、パフォーマンス(メモリ効率や他の言語との連携の容易さ)、信頼性(メモリとスレッドの安全性)、生産性(ドキュメントの充実と豊富なツール)という3つの特徴を高く評価しています。
さらにAWSは、軽量の仮想マシンを短時間で起動できる仮想化技術『Firecracker』をオープンソースとして公開しました。このFirecrackerにもRustが使用されています。
Google
GoogleにはGoと呼ばれるAndroidアプリの開発や各種Googleのサービスとの親和性も高いプログラミング言語があります。
GoはGoogleが開発したということもあり、様々なGoogleのサービスに利用されていますが、Google製のテキストエディタ『xi-editor』はRustで開発されています。
Microsoft
Microsoftは一部のWindowsコンポーネントなどの開発において、CやC++の代替としてRustを試用する取り組みを行っています。現在、その試験は全体的に前向きに進められています。
また、Windowsで発見されている問題の大半がメモリの安全性に関わるものだということが分かっており、メモリの扱いに秀でたRustが採用されています。メモリの安全性はOSを動かすうえでは非常に重要でその点でもRustは一定の評価を得ています。
これからも試験の結果次第ではMicrosoftでのRust利用はさらに増えていくのではないでしょうか。
C++は非常に多くの現場で使用され、開発者から愛されたプログラミング言語です。RustはそのC++の後継として開発されていますので、C++のメモリ使用の危険性などの不満点、問題点を改善しています。
Rustの有用性はすでに採用されている大手企業の多さで分かってもらえると思います。
Rustは比較的最近開発された発展途上の言語ですので、これから改善が加えられればさらに良いプログラミング言語となっていくはずです。それに伴い、もっとたくさんの現場で採用されるようになるでしょう。
これから需要が高まってくることが予想されますので、興味がある方は今から学習してみて自分の価値を高めてみてはいかがでしょうか。