こんにちは、吉田行男です。今回は、今、注目されているプログラミング言語「Rust」をご紹介したいと思います。
プログラミング言語の動向
世界で最も大きなITエンジニアのコミュニティサイトである「Stack Overflow」が毎年実施している調査結果「Stack Overflow Developer Survey 2022」(*1)を公開しました。180ヶ国、7万人を超える開発者を対象とした調査で、開発者の動向を知るうえでとても有用な調査結果になります。日本からの回答者は333人ということで、あまり参考にならないかも知れませんが、欧米での動向を知るには最適です。
その中で、最も使用されているプログラミング言語は、JavaScriptで、10年連続で首位をキープしています。2位以下は下記のグラフのように、HTML/CSS・SQL・Python・TypeScript・Javaが続いています。
しかしながら、この調査では、『最も使用されている』というキーワードだけではなく、『最も好きなテクノロジー』ということでさまざまなデータを提供してくれています。もちろん、その中に『最も好きなプログラミング言語』というデータもあり、その結果を見てみましょう。
この結果を見ると、必ずしも『使われている』技術を開発者が好んでいるとは限らないということがよくわかると思います。特に、使われている言語では、14位であった「Rust」が7年連続で1位になっています。「TypeScript」や「Python」は両方の上位に位置していますが、それ以外は必ずしもそうでもないというのが、興味深いところです。
「Rust」とは?
Webブラウザソフトウェア「Firefox」を開発しているMozillaが支援するオープンソースのプログラミング言語で、2006年に開発がスタートしました。開発当初は、Mozillaに所属していたグレイドン・ホアレ氏の個人プロジェクトでしたが、2009年からMozillaが本格的に支援することになり、2015年に最初の安定版をリリースしました。
「Rust」は、性能、メモリ安全性、完全な並行性をめざして設計されたプログラミング言語で、C言語やC++に代わりうるシステムプログラミング言語をめざしています。
Linuxの生みの親であるLinus Torvalds氏は、2022年6月に米国オースティンで開催された「Open Source Summit(*2)」でRustについて、「メモリ安全性などをはじめとして、カーネルにRustを使うべき技術的な理由は十分にある。そして、そのために頑張っている人もいる。なので、私はそれがうまくいけばいいと思っている」とコメントしています。早ければ次のメジャーリリースにRustが使われる可能性もあるようです。
また、2021年4月にGoogleは、公式ブログ(*3)でAndroidオープンソースプロジェクト(AOSP)がモバイルデバイス向けオープンソースOS「Android」の開発において、オープンソースのシステムプログラミング言語「Rust」の導入を進めていることを明らかにしました。Androidでは、これまで「C」や「C++」を使用して開発されてきましたが、こちらもやはりメモリ安全性などのバグを予防することが目的です。
さらに、今年(2022年)7月にMeta(旧Facebook)が、高いパフォーマンスが要求されるバックエンドサービスの開発にはC++とRustを使うよう、同社のエンジニアらに推奨していることを(*4)明らかにしました。明らかにされているガイドラインによると、
- パフォーマンスが重視されるバックエンド サービスには、C++ と Rust
- CLI ツールについては、Rust
- ビジネス ロジックと比較的ステートレスなアプリケーションの場合、Hack
- データ サイエンス、ML アプリケーション、Instagram では、引き続き Python が最適な言語
- Java、Erlang、Haskell、Go などは、特定のユースケースでのみ使用
このようにIT業界で、続々とRustが普及しようとしていますが、さらに別の理由でこのRustを採用している企業もあります。
Rustによる持続可能性
2022年2月に公開されたブログ「Sustainability with Rust」(*5)によると、AWSは、持続可能性という視点で、Rustの活用を推進しようとしています。
国際エネルギー機関(IEA)によると、世界中でデータセンタは、年間約200テラワット時を消費しています。これは、地球上で消費される全エネルギーの約1%に相当します。
(出典:IEA (2021)、データセンタタイプ別グローバルデータセンタエネルギー需要、2010 ~ 2022 年、 https://www.iea.org/data-and-statistics/charts/global-data-centre-energy-demand-by-data-centre-type-2010-2022)
このグラフにあるように2010年以降、全体の消費量にあまり変化はありませんが、従来型、クラウド、およびハイパースケールの分布が劇的に変化しています。
なかでも、AWSは2025年までにデータセンタの100%を再生可能エネルギーで稼働させることを掲げていますが、それだけではまだまだ不十分だと考えているようです。
2017年に発表された論文「Energy Efficiency across Programming Languages(プログラミング言語別のエネルギー効率)」(*6)によると、プログラミング言語とエネルギー消費、パフォーマンス、メモリ使用量の相関関係に興味深い内容が記述されています。
この調査では、27の異なるプログラミング言語に10のベンチマークを実施し、実行時間、エネルギー消費及びピーク時のメモリ使用量を測定しました。結果は下記の表のようになっており、CとRustは、エネルギー効率や実行時間において他の言語を大幅に上回っていることがわかります。
なぜ、Rustは拡がらないのか
これまでご紹介したようにRustに対する期待は、非常に高いものがありますが、冒頭でご紹介したようにまだまだ利用されていないのが現状です。では、なぜ、Rustの利用が拡がらないのでしょうか?これは、Rustの開発チームが開発者を対象に実施している調査が回答になっているかも知れません。ここからは、この少しだけ前の調査結果(*7)を見てみたいと思います。
Rustの利用をやめた理由は、「自社がRustを使っていない」という回答が最も多かったわけですが、他の上位の理由は「習得が大変」「必要としているライブラリがない」「移行すると作業能率が落ちる」「IDE(統合開発環境)でのサポートが不十分」などとなっています。ということで、「使われていない」から「使わない」という堂々巡りのような状態になっています。
(出典:Rust Survey Teamの調査結果)
また、Rustの採用を促進するための方策はという質問に対しては、下記のような回答になっています。
(出典:Rust Survey Teamの調査結果)
ここでは、「トレーニング/ドキュメントの充実」「ライブラリの充実/改善」「IDEの統合」が上位になっています。
要するに、習得するためのトレーニング/ドキュメントが充実して、使いやすいライブラリが充実して、各種IDEとの統合ができれば、普及するのではないかということになり、GoogleやMeta、AWSなどのベンダーやLinuxやAndroidなどのOSで活用が進めばこのような問題も解決していくことになるかも知れません。
いずれにしても、今後のRustの活用が進んでいくことになりそうなので、動向を注視していく必要があると思います。
(*1) Stack Overflow Developer Survey 2022
https://survey.stackoverflow.co/2022/
(*2) Open Source Summit
https://events.linuxfoundation.org/open-source-summit-north-america/
(*3) Rust in the Android platform
https://security.googleblog.com/2021/04/rust-in-android-platform.html
(*4)Programming languages endorsed for server-side use at Meta
https://engineering.fb.com/2022/07/27/developer-tools/programming-languages-endorsed-for-server-side-use-at-meta/
(*5) Sustainability with Rust
https://aws.amazon.com/jp/blogs/opensource/sustainability-with-rust/
(*6) Energy Efficiency across Programming Languages
https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf
(*7) Rust Survey 2019 Results
https://blog.rust-lang.org/2020/04/17/Rust-survey-2019.html
著者:
吉田 行男
2000年ごろからメーカー系SIerにて、Linux/OSSのビジネス推進、技術検証、OSS全般の活用を目指したビジネスの立ち上げに従事。社内外でOSS活用に関する講演、執筆活動を行ってきた。2019年から独立し、さまざまな会社や団体の顧問として活動。OSSの活用やコンプライアンス管理などを支援している。
【動画】ゼロから始めるRust入門
プログラミング言語のRust入門の概要からインストール・動作確認を行います。