Rustの未来
まず、 obvious なことを指摘しておきます。そう、このタイトルは少しセンセーショナルです。それに、なぜ私がRustの未来について語る資格があるのか、と疑問に思うかもしれません。結局のところ、私はRustのコアチームの一員でもなければ、Rustエコシステムへの大きな貢献者でもありません。これに対する私の答えは、「なぜいけないのでしょう?」です。システムプログラミング全般、そして特にRustの未来について考えるのは楽しいものです。
出典:FreePik.com提供のイラスト
コアチームが取り組むことを表明した短期的な目標については、耳にしたことがあるかもしれません。コンパイル時間の短縮や、より緩やかな学習曲線などが思い浮かびます。この記事で扱うのはその話ではありません。代わりに、5年から10年後にRustが力を発揮できそうな、もう少し風変わりな分野を探ってみたいと思います。大きく羽ばたくには、根と翼の両方が必要です。
データサイエンス
現在、データサイエンスで最も人気のある言語は、Python、Java、R、そしてC++です。

プロトタイプは主にPythonやRのような動的型付け言語で書かれますが、アルゴリズムが本番運用に耐えうる品質に達すると、スケーラビリティを確保するために、しばしばC++のような高速な言語で書き直されます。近い将来、RustがC++に対する健全な競争相手になることも、十分に考えられます。Rustで書かれた機械学習ライブラリleafのベンチマークは、すでに目を見張るものがあります。
大作ゲーム
Rustが力を発揮できそうなもう一つの分野はゲームです。ゲームスタジオにとって、大きな手間をかけずに複数のプラットフォームをサポートできるのは、経済的にも魅力的です。Cargoとrustupによって、クロスコンパイルは容易になります。大規模なゲーム開発に必要なツールの不足も、最新のライブラリによって徐々に埋まりつつあります。RustのVulkan 3DグラフィックスAPIへの対応は、すでにクラス最高と言えるかもしれません。しかし、決め手となるのは、安全性と性能を独自の形で両立していることです。100万人のプレイヤーにゲームを届け、彼らがあなたにお金を投じてくれるなら、そのゲームがクラッシュしないことをちゃんと確認しておくべきです……そうですよね?
とはいえ、最初のAAA級Rustゲームが登場するのは、まだずっと先かもしれません。2017年時点におけるBlizzardのRustへの見解はこちらです。
システムエンジニアリング
ひょっとすると、いつの日か、Rustコアの形式検証も目にすることになるかもしれません。そうなれば、RustBeltのようなプロジェクトが、宇宙産業のような安全性を重視する分野に新たな可能性を開くでしょう。Rustで制御された宇宙船を、火星に安全に着陸させられたら素晴らしいと思いませんか?(あるいは、その精神的後継にあたる何かで。)SpaceXはすでにRustを実験しているのだろうか、と気になります……。
他の言語との統合
まだ触れていない分野は、ほかにもたくさんあります。たとえば金融ソフトウェアや医療ソフトウェア、科学技術計算などです。ほんの一例を挙げただけですが、どの分野でもRustは適しているかもしれません。現在、参入への最大の障壁は、おそらく膨大なレガシーコードです。多くの業界では、簡単には書き換えられないCobol、C、Fortranの大規模なコードベースを維持しています。
幸い、Rustは他の言語とうまく連携できることが実証されています。その理由の一つはCとの高い互換性であり、もう一つはランタイムもガベージコレクターも存在しないことです。よくあるパターンは、安全性や性能に厳しい要件があるアプリケーションの中核部分をRustで最適化し、残りの部分には手を加えないというものです。この共生関係は、長期的にはさらに強まっていくと思います。CコードをRustへ自動的に変換しようとするCorrodeのような、野心的なプロジェクトさえあります。
まとめ
全体として、私は、安全性、性能、あるいはマシンを完全に制御できることが不可欠な分野で、Rustには大きな可能性があると考えています。RustやCrystalのような言語によって、ある種のエラーは過去のものになります。ヌルポインターも、セグメンテーションフォールトも、メモリリークも、データ競合もありません。これからの世代のプログラマーが、それらすべてを当たり前のものとして受け入れるようになるのは、心強いことです。
記事をランダムに読む