プログラム言語を学習する際にはその言語の特徴、自分が開発したいものに向いているのかを確認することが必要です。そこで、近年注目が集まっている言語にRustがありますが、Rustにはどのような特徴があるのでしょうか。
ここではRustの特徴や活用事例、Rustエンジニアの需要をご紹介します。Rustがどのような言語であるのか気になっている方、Rustエンジニアをご検討中の方は、ぜひご確認ください。
Rustの概要
RustはMozilla(モジラ)が支援するオープンソースのプログラミング言語です。Mozillaとは旧ネットスケープ・コミュニケーションズ社の資産を継ぎ、オープンソースのWebブラウザを開発・支援するアメリカの非営利団体であり、現在でもさまざまな活動をおこなっています。
Rustはコンパイラ言語(コンピューターがソースコードを機械語に変換したのちに処理を実行する言語の種類)の一種です。また、C言語やC++言語の代替を目指しており、システムプログラミング言語と呼ばれます。
Rustは愛されているプログラミング言語ランキングで2016年~2022年にわたり7年連続で首位になるほど世界中から人気のある言語です。
Rustの歴史と現在
現在では愛されているプログラミング言語ランキングで7年連続1位を取るほど人気なプログラミング言語ですが、Rustはどのような歴史で作られてきたのでしょうか。現在のリリースサイクルも含め確認していきましょう。
沿革
Rustは2006年にグレイドン・ホアレ氏が個人プロジェクトとして開発を開始し、2010年に公開されました。2015年に正式にリリースしたのち、2016年から2022年で人気ランキング首位を取り続けています。
2021年には非営利団体Rust Foundationが設立され、開発速度が向上しました。Rust Foundationは現在でもRust開発のためにさまざまな活動をおこなっています。このようにRustの開発は比較的スピーディにおこなわれており、今後も次々と開発されると予想される言語の1つです。
リリースサイクル
現在は6週間に1回のリリースがなされています。最新バージョンは1.70.0です。リリースサイクルからわかるとおり、定期的に更新されていることから利便性やパフォーマンス向上がなされ続けています。
Rustの特徴
Rustは非常に人気なプログラミング言語ですが、なぜここまで人気になっているのでしょうか。Rustの代表的な4つの特徴を確認し、Rustが支持される理由を把握していきましょう。
特徴①処理速度が高速
RustはC言語やC++言語の代替として開発されました。そして、C言語やC++は処理速度が早い特徴を持っています。
RustはC言語やC++言語の処理速度を保っており、処理速度が速いことからエンジニアから好まれています。
特徴②非常に高い安全性
Rustにはメモリ安全性を保証しています。メモリ安全性とはプログラムが意図しないデータをコンピューターのメモリから誤って引き出さないよう設計することです。
C言語やC++言語では開発者がデータ要求について考える必要がありましたが、Rustはメモリ安全性があることから考える必要がありません。つまり、開発者のミスによるデータ流出を防ぐことができるのです。
この安全性の高さから世界中でソフトウェアをRustに書き換える動きが進んでいます。
特徴③効率的な並行処理
Rustはコードの並列実行であるマルチスレッドでプログラム処理できるよう設計されています。マルチスレッドであってもデータ競合が起こらないようになっているため、予期しないエラー発生を防ぐことが可能です。
Rustを語るうえで「怖くない並行性」といった表現も生まれるほど並行処理能力に定評があります。
特徴④インストールが簡単
Rustは使い始めるまでの準備が非常に簡単です。具体的にはWindowsではインストーラーの実行のみ、MacやLinuxではターミナルにコマンド入力するだけで準備が完了します。新しい言語を学習するには環境構築から始めることが多いですが、Rustは気軽に始めることができます。
Rustはどのような開発に向いているのか
Rustは高速な処理速度、高い安全性、効率的な並行処理の3つから大規模なシステム開発とアプリケーション開発に向いていると言えます。
なぜなら、エンジニアの責任に依存していたメモリ管理をプログラム側で監視しており、コンパイル時に厳密な確認がおこなわれるためエンジニア数が非常に多いような大規模開発に向いているのです。
また、クラウドやブラウザなど大規模接続に対して高速な処理がおこなえ、安全性も高いことから不特定多数のユーザーが利用するものに適しています。
Rustの活用事例
性能が高く人気もあるRustですが、実際にどのようなサービスに利用されているのでしょうか。ここでRustの活用事例を確認し、Rustで出来ることを確認していきましょう。
Dropbox
Dropboxでは中核となるファイルストレージシステムの複数のコンポーネントをRustで記述しています。現在Rustによって記述されたネットワークはすべてのDropboxストレージで使われているなどRustがDropboxの軸を支えていると言っても良いでしょう。
具体的にできるようになったことは、720pから4kまでの高品質の画面録画が可能、スクリーンショットと画面録画のすばやい共有、エラー処理機能の改善などユーザーのニーズに応える機能が搭載されています。
AWS(Amazon Web Services)
AWSサービスのなかでLambda,EC2,S3などのサービスでコンポーネント用の言語としてRustを採用しています。AWSはトップシェアを誇っているサービスであり、そのようなサービスにも使われるほどRustの機能は優れているのです。
実際に、AWSのソフトウェアエンジニアで、Rustの普及に取り組むShane Miller氏と主任エンジニアのCarl Lerche氏は「メモリ安全性の向上、セキュリティ関連の不具合、エネルギー効率に優れている」とコメントをしました。さらに、AmazonがRustのインフラスポンサーになることや、Rustエンジニアの採用拡大を表明するなど世界的企業においてもRustの需要は急激に拡大しています。
Facebookでは性能重視のバックエンドサービスやCLIの開発にRustを推奨しています。実際に、開発規模として数百人の開発者が数百万行のコードをRustで記述するなど大規模的にRustを採用しています。
また、FacebookはAmazon、Google、Huawei、Microsoft、Mozillaと共におこなっており、世界的な大企業がRustに注目していることがわかります。
FacebookのバックエンドコードはほとんどがC++で記述されていたため、その代替であるRustを選択したことはとても効率的な書き換えでした。C言語やC++で記述しているサービスの書き換えは今後さらに増えていくと予想されます。
Cookpad
Cookpadはアプリケーションのマイクロサービス化でプッシュ通知のロジックがさまざまなところに散らばってしまっているが、受信設定やARNを管理しているデータベースを共有したくはないという悩みがありました。
そこで、プッシュ通知配信基盤の改善にRustを活用することでデータベースを共有せずユーザーに通知送信することを実現しています。Cookpadは2022年12月末時点で168万人のユーザー数と人気な国内アプリケーションの1つです。このように海外だけでなく国内においてもRustの活用は進んでいます。
Rustエンジニアの市場価値
Rustが需要の高いプログラム言語であることは分かりましたが、それを扱えるエンジニアの需要はどのようになっているのでしょうか。ここでRustエンジニアの市場価値について確認してみましょう。
日本での需要
Rustは国内ではあまり普及していないことから案件数がとても多いわけではありません。
フリーランス案件サイトより集計すると、Rustの案件数は以下のようになっています。
言語 |
月額平均単価 |
最高単価 |
最低単価 |
平均案件数 |
JavaScript |
70 |
850 |
10 |
1,492 |
Python |
73 |
800 |
10 |
527 |
Rust |
77 |
130 |
10 |
8 |
上記表よりRustの案件数はかなり少なく、フリーランスとしてRust案件を受注することはなかなか難しいかもしれません。しかし、月額平均を見ると有名な言語よりもやや高いため、案件を受注することができれば収益が見込めます。
Rustの具体的な案件としてはAWSの導入などが多く見られ、データベースに対する知見も必要になる可能性が高いです。フリーランスRustエンジニアとして案件を受注していく際にはインフラなどに対する知識も習得しておきましょう。
海外での需要
前述のとおり、Rustは2015年にリリース後から2016年から2022年で人気ランキング首位を取り続けています。また、エンジニアが学びたい言語ランキングでも数年ほど前から上位に食い込んでいます。
需要としてはGoogleやAmazonなどの大企業がRustエンジニアの採用拡大を表明しており、Rustエンジニアの需要は非常に高いです。さらに、TIOBE PCI(検索エンジンにてどれだけ話題になっているのか)でも下記のように20位に入っています。このようにRustエンジニアに対する需要は日本と海外で差が出ています。
順位 |
言語 |
インデックス値 |
1 |
Python |
17.18% |
2 |
C |
15.08% |
3 |
Java |
11.98% |
: |
: |
: |
19 |
Ruby |
0.85% |
20 |
Rust |
0.75% |
これから日本での需要は伸びる?
結論から申し上げると、Rustエンジニアの需要は日本でも伸びていくと予想されます。まず、RustはAmazonやMicrosoftなど日本で住んでいても利用するようなサービスに導入され始めているため、その影響が出てくる可能性が高いです。
実際に日本における案件数も徐々にではあるが増えてきています。現在は海外と認知度や普及率でかなりの差がありますが、日本ではやっていない理由を改善することができれば普及は進むと予想されます。なお、日本でRustの普及していない理由に関しては後述していますので、よろしければそちらもご確認ください。
Rustの習熟難易度
Rustは今後需要が伸びることが予想されるため、勉強をしたいといった方も多いのではないでしょうか。では、Rustは習熟難易度が高い言語であるのかを確認してみましょう。
習熟難易度は高い
結論から申し上げると、Rustの習熟難易度は高いと言えます。実際にインターネットの記事でも高いという評判が多いです。AKKODiSコンサルティング株式会社の調査によるとプログラミング言語の習熟難易度が以下のようになっています。
言語 |
難易度 |
代表的なカテゴリ |
JavaScript |
低 |
フロントエンド開発 |
Ruby |
低 |
サーバーサイド開発 |
Python |
中 |
AI/機械学習 |
Swift |
中 |
スマートフォンアプリ開発 |
Java |
中 |
スマートフォンアプリ開発 |
C言語 |
高 |
AI/機械学習 |
Rust |
高 |
サーバーサイド開発 |
このようにRustは習熟難易度が高いため、初心者にはあまりおすすめできません。もしRustエンジニアになりたいのであれば他の言語でプログラミングの基礎知識を学び、そこからチャレンジすることがおすすめです。
プログラミング言語のなかでもRustが難しいと言われている理由には以下のようなものがあります。
理由①CやC++が前提
RustはCやC++の代替として開発が進んでいるため、そもそもCやC++に全く触れたことがないのであれば仕組みなどの理解に時間がかかる可能性があります。
とくに、プログラミングの基本的な構造を知らないエンジニア初心者の方にとっては難しく感じることが多いようです。
理由②メモリ安全・ライフタイム・オーナーシップなど独自の概念
Rustにはメモリ安全・ライフタイム・オーナーシップは他の言語ではあまり見ない概念であります。そのため、そもそもこれらがどのようなものであるのかを理解することが必要です。
また、コンパイラ言語であることからコーディングしてビルドした段階でエラーが大量に出てくるため、精神的にも諦めそうになるといった意見も多く見られました。学ぶ際にとりあえず実行してみるがおこなえないことが新しく始める際にはネックとなってしまいます。
理由③参考書や解説記事の少なさ
案件数や需要からわかるとおり、Rustエンジニアは国内にあまりいません。そのことから解説記事や参考図書が他の言語と比べると非常に少ないです。
学習教材・動画も少ないことから独学もしくは英語翻訳をしながらの学習になるため、勉強を始める際にはこちらを認識しておきましょう。Rust公式サイトにある「ths book」が教材としておすすめですが、日本語版は非公式であり最新版ではありません。英語が極端に苦手でないのであれば、こちらを参考にすることをおすすめいたします。
まとめ
Rustは処理速度や安全性に定評のあるプログラミング言語です。しかし、国内ではあまり案件が多くなく、Rustのみで活躍していくことは難しいかもしれません。しかし、日本においても海外のように需要が伸びることが予想されるため、エンジニアとして活躍したいのであれば適宜学習を進めておきましょう。