今回は、ある種のプログラミング言語の人気投票である「GitHubPullRequest」にて、2019年1月から3月の統計で第14位にエントリーされた、Rustについてご紹介いたします。
Rustは日本ではまだまだ知名度の低いプログラミング言語だと思いますが、海外では非常に重要なプログラミング言語として注目されています。
エンジニアのためのコミュニティーサイトである、Stack Overflowが毎年実施している、参加者への意識調査アンケート「Stack Overflow Developer Survey」では、2016年から2019年まで、Rustが“most loved language(もっとも愛される言語)”の第一位に選ばれています。
Rustのフリーランス案件を紹介してもらう >Rustの最大の特徴はC言語の代替を目指したプログラミング言語である、という点です。
C言語とその拡張言語であるC++は速度、並行性、安全性を三本柱として仕様の要としており、その理念を継承するC系言語が、大きな勢力を築いています。
しかし、C言語は、1972年に開発されたものです。
C言語を拡張したC++ですら、登場は1983年です。
登場してから四半世紀以上経ち、仕様が古くなっているのは否めません。
また、各種のC系言語の中でももっとも成功したと言えるJavaの場合、成功しているが故に、仕様の大きな改変ができないというジレンマを抱えています。
実際、関数型プログラミングなど、新たなパラダイムに対応できていません。
そこでRustはC言語同様に「速度、並行性、安全性」を三本柱としつつ、より現代的なプログラミング言語を目指して開発されたのです。
そして、「速度、並行性、安全性」いずれの面でも、すでにC言語を凌駕していると評価されています。
その結果として、“もっとも愛されるプログラミング言語”に選ばれたのでしょう。
ところで、パラダイムとは、どういう意味かご存じでしょうか?
パラダイムは和訳しにくい言葉ですが、“プログラミングパラダイム”を敢えて日本語的に説明すると「プログラミングの解釈パターン」のことです。
例えば、“オブジェクト指向”というパラダイムが与えられると、そのプログラムはオブジェクト指向の解釈パターンで解釈され、コンピューターは実行していきます。
あるいは、“手続き型プログラミング”というパラダイムが適用されれば、手続き型プログラミングとして解釈されるのです。
なお、Rustはオブジェクト指向プログラミングにも対応していますし、関数型プログラミング、手続き型プログラミングなどにも対応しています。
ちなみに、Rustのような複数のパラダイムに対応しているプログラミング言語のことを、特にマルチパラダイム言語と呼びます。
現在、Rustの開発はWebブラウザーのFirefoxやメーラーソフトのThunderbirdで有名なMozillaが関わっており、早いテンポ(6週間ごと)でリリースアップされています。
このように、次世代プログラミング言語として大注目のRustですが、一つ大きな弱点があります。
それはずばり、学習難易度が高い、ということです。
つまり、簡単には習得できない、という点です。
開発チーム自身も学習難易度の高さを認めており、2017年には今後のロードマップとして、Rustの学習曲線を改善したい意向を示しています。
2019年1月から3月の統計で14位にエントリーされたRustですが、2018年1月から3月の統計でも14位でした。
主要プログラミング言語の一つとして、確かな地位を築くことに成功している、といったところでしょうか。
ただ、一つ気になるのは、Rustの直接的なライバル言語であるGo(Go言語・Golang)の動向です。
GoはGoogleが開発したプログラミング言語です。
どちらも、C言語の代替を目指したプログラミング言語、という点では同じですが、フォーカスした部分が異なります。
Rustは上でご紹介した通り、「速度、並行性、安全性」に重点を置いているのに対して、Goは「扱いやすく、生産性が高い」という点に注力したプログラミング言語です。
極端な言い方をすると、GoはGoogleに入ったばかりの新入社員でも、Googleの大規模サービス開発に携われるプログラミング言語を目指しています。
結果、Rustは学習難易度の高さで知られるのに対して、Goは学習難易度が低い言語と認識されています。
さらに、GoはGoogleの開発したプログラミング言語ということもあり、androidアプリの開発など、各種Googleのサービスとの親和性も高い、というメリットがあります。
結果、2019年1月から3月の統計でGoは第4位と、Rustに大きな差をつけています。
GoもRustも扱える、プログラミングに強い人に言わせると、「GoとRustはそもそも得意とするフィールドが異なるので、GoかRustかという議論自体がナンセンス」とのことですが、今後、利用率がどう変化していくのか、気になるところです。
「期待の次世代プログラミング言語で、エンジニアたちから愛されているのだから、さぞかし転職市場でも強いんでしょう?」と思われた方も多いと思いますが、日本国内の転職市場では、まったく強くありません。
正直に言えば、Rustは弱小プログラミング言語です。
なぜならば、日本国内での利用率は非常に低い、もっといえば、ほぼ皆無同然だからです。
多くの企業が、現在でもC言語やC++などを利用している状況です。
Rustの利用率が低い理由としては、企業はどうしても保守的になりがちなので「すでに実績のあるC言語やC++を捨てて、海外でちょっと流行っているというRustに乗り換えよう」とは、なかなかならない、というのもあります。
しかし、それ以上に、学習難易度が高いということもあり、人材が育っていない、揃えられない、という事情が大きいように思います。
一部の先進的なIT企業、ベンチャー企業であってもRustの求人というのは2019年5月末時点では、基本的にはありません。
一方で、ライバル言語であるGoは日本国内でもベンチャー企業を中心に人材募集が普通に行われています。
この先、日本国内にRustのブームが来ないまま、Goが次世代プログラミング言語として広く認知される可能性も十分あるかと思います。
現状、Rustの求人が皆無ですので、活躍できる業種・年収はあくまで推測ベースになりますが、汎用プログラミング言語であるC言語の後継言語であることを考えると、非常に活躍できるエリアは広いと考えられます。
なお、C言語が昨今、多く使われている領域としては、一つは組み込み系、そして、もう一つは人工知能(AI)開発です。
組み込み系システムは、IT企業だけでなく、メーカーなどの製造業からもニーズがある領域です。
また、人工知能は産業革命を引き起こす存在とみなされ、ITや製造業も含めて、ありとあらゆる業界、企業が注目しています。
年収という意味でも、Rustは期待が大きいです。
学習難易度が高いため、数少ないエンジニアを巡る争奪戦の中で、高年収での引き合いが多くなることは間違いなしです。
さらに言えば、人工知能は高付加価値システムですので、関わるエンジニアの年収も高くなる傾向があります。
もし、Rustで人工知能開発が一般的になれば、確実に「Rustエンジニア=高年収エンジニア」となるでしょう。
繰り返しになりますが、Rustは昨今、国際的には大注目の次世代プログラミング言語の一つですが、残念ながら、日本国内ではまったくと言っていいほど求人がありません。
今後、日本国内でも人材募集が増える可能性はありますが、ライバルであるGoの動向もあり、「絶対にRustが来る!」とは言いにくいです。
すでに、C系言語を習得している方が、自己啓発としてRustを身に着けるのはよいことだと思います。
しかし、学習難易度が高いという欠点もありますので、プログラミング未経験の方がRustを“はじめてのプログラミング言語”にするのは、おすすめできません。
PythonやJavaなどを学習した方が、確実に仕事に繋がります。