7月27日(米国時間)、Metaのソフトウェアエンジニアリングマネージャであるエリック・ガルシア(Eric Garcia)氏は同社のエンジニアブログに「Programming languages endorsed for server-side use at Meta」という記事をポストし、Metaがサポートするサーバサイド言語にRustを加えたことを発表しました。「(Metaにとって)新しい言語をサポートするということは簡単な決断ではない」というガルシア氏の言葉通りとすれば、RustがMetaのユースケースにフィットし、かつエンジニアにとって使いやすいツールだということが証明された結果だといえます。
「エンジニアが好きな言語」「エンジニアが習得したい言語」といった調査結果でつねに上位にランクインするRustですが、Metaのような最先端のテックカンパニーの開発環境でRustがサポートされるということはどういう意味合いをもつのでしょうか。今回の「Ask the Expert」ではRustエキスパートのκeenさんにお話をうかがってみました。
今回話を伺ったエキスパート
フォローしよう!
--MetaがサーバーサイドでRustを採用することについて、簡単な所感をお願いします。
まず最初の前提として、Metaの今回のアナウンスを読む限り、Rustを採用したというよりは”Supported言語”入りですね。Metaは他社に比べてゆるい言語採用ポリシーのようで、Supportedだと開発環境やコアライブラリなどが整備されていることが期待できますが、それ以外の言語を禁止しているわけではないようです。
その上での感想ですが、コミュニティ/Meta社内の環境ともに整備が進んだんだなと思いました。従前からMeta Experimentalのリポジトリや論文などから社内でRustを使っているという断片的な情報はありましたが、あらためてSupported言語入りしたと聞くと、想像よりも熱量を持って取り組んでいたと感じます。
--MetaがRustをサポートするに至った理由はどこにあるとお考えでしょうか? なぜRustだったのでしょう?
もともとパフォーマンスが要求される領域でのSupported言語にC++があるので、それより安全な代替という面がひとつ。もうひとつがCLIツールを作るのに手ごろな言語がなかったのでニッチを埋められたというのが理由かなと思います。言語の特性以外にもビルドツールやコーディング支援ツールが優秀で環境が整っているというのも後押ししたのでは。少しマニアックな話題ですがMetaは言語解析ツールをよく作っており、厳格に動くRustと相性がいいというのもあるかもしれません。実際、MIRAIというRustの静的解析ツールを作っていたりします。
--今後もテックカンパニーによるRustの採用が進んでいくと思われますか?
はい、進んでいくと思っています。Rustにはいろいろな側面があって、速度の出る言語、ランタイムがない言語、低レベルな操作ができる言語、安全な言語、高機能な言語、開発環境が整備された言語などさまざまなアピールポイントがあります。これらアピールポイントの組み合わせで他の言語では到達できなかったニッチに入り込めるポテンシャルは持っています。今後、知名度や実績の積み重ね、人材プールの拡大など技術以外の要因が充足すると採用する企業、業界は増えると思います。
--(サーバーサイド)Rustについての現状の課題があれば教えてください。
サーバサイドで重視されるI/Oを効率的にさばく処理(非同期処理)関連の機能に課題があります。現状でも本番環境でサーバを動かせる程度には整っているのですが、言語機能、コミュニティともにまだ改善の余地があります。とくに言語機能については生産性や予測可能性、思わぬ落とし穴を作らない、など厳しい要件を満たす設計が難しいことがわかってきてしばらく議論が続きそうです。
-- (サーバーサイド)Rustについての今後の(明るい)展望を教えてください。
いろいろなところでRustが使われるようになってきてエコシステムが充実しつつあります。たとえばAWSはDeveloper Previewという形ですがRustの公式SDKを出しています。このようにRustで他の言語と同じくらい簡単にできることが増えると、Rustがもとから持っている長所を生かしやすくなります。たとえばメモリフットプリントや起動速度が速いのでAWS Lambdaで使うとコストを節約できるなどの恩恵があります。適材適所と選んでいく技術の中で、Rustが適材となるケースがどんどん増えていきそうです。
実際に仕事でRustを使っていて思うけれど、エコシステムがまだまだ発展途上かも。とくに「使いやすいなあ」と感じるクレートが少ないかなあ。ならば自分で作ろうと思って、最近はいくつか試作を手元で作り始めてる(が、今年いっぱい忙しすぎて時間がない😢)