米国政府が公式に移行を促すなど、メモリ安全なプログラミング言語への切り替えが世間で進められているが、これはアプリ自体の安全性向上に加え、生産性の向上にも直結していることがGoogleによって報告されている。
Rustへの移行はメリットが多い
ロンドンで開催されたRust Nation UKカンファレンスで、Androidプラットフォームツール&ライブラリを担当するGoogleのエンジニアリングディレクターであるLars Bergstrom氏は、GoやC++で書かれていたプロジェクトをRust言語で書き直した際の経験を元に、現在注目されているメモリ安全なプログラミング言語の利点を語っている。
メモリ安全なRustに書き直す事に関しては、これまでも多くの議論があった。例えば、C++の生みの親であるBjarne Stroustrup氏は、適切なツールを使用すれば、C++でも「新規の”安全”言語への変更のコストの一部で」Rustのメモリ安全保証に匹敵することができると主張しているし、メモリ安全性はより広範なソフトウェアセキュリティの課題の一部であり、万能の答えと見なすべきではないとの意見もある。
カーネギーメロン大学の研究者らは、すべてのプログラミング言語にはトレードオフがあり、プログラミング言語の選択はその目的に合っているかどうかによって決まるべきだとの考えを主張しており、「ほとんどのメモリ安全言語はタイミングパフォーマンスを優先していないため、厳格なパフォーマンスとタイミングの要件があるユースケースには適していません」と、述べ、C++等への擁護は根強い。
こうした声も踏まえた上で、今回Bergstrom氏はGoogle内部でGoやC++からRustにプロジェクトを書き直した際の自身の経験を語っている。
「GoからRustにシステムを書き換えたとき、同じ規模のチームが同じくらいの時間でそれを構築できることがわかりました。つまり、GoからRustに移行しても生産性の損失はありません。そして、面白いことに、それからいくつかの利点が見られます」と、Bergstrom氏は述べている。
その利点とは、メモリ使用量の減少とのことだ。「Rustに書き換えられたそれらのサービスでは、時間の経過とともに欠陥率が減少しているので、正確性が向上しています」と、Bergstrom氏は述べている。
そして、C++からの移行に関しては、「私たちが見たすべてのケースで、Rustでサービスを構築するために必要な労力、およびRustで書かれたそれらのサービスを維持し更新するために必要な労力が2倍以上減少しました」と彼は報告している。
Bergstrom氏は、Googleでは、JavaからKotlinへの移行も進めているようだが、こちらのケースでも、C++からRustへの移行と、開発者を再トレーニングするのにかかる時間は似ていると述べた。約2ヶ月で、開発者の約3分の1が、新しい言語で古い言語と同じくらい生産を発揮するという。そして、約4ヶ月で、開発者の半数が同様のことを報告しているとのことだ。
また、特に、Rustを用いてBergstrom氏が驚いたことは、そのレビューのしやすさと、開発者自身が感じる正確さへの自信とのことだ。調査では、開発者の半分以上がレビューしやすいと述べているという。
「私たちは調査の中で最も信じられない質問にたどり着きます、それは私たち全員を驚かせたものです。それは、人々が見ているRustコードの正確さに対する自信です。つまり、他の言語のコードと比較して、あなたのチームのRustコードが正しいとどれだけ自信を持っていますか?」と、Bergstrom氏は問いかける。これの答えは、驚きの85%とのことだ。「私は人生で1つ以上の言語調査を経験しましたが、それ以前にそのような数字を見たことがありません」と、Bergstrom氏は述べている。
Sources
- YouTube: Rust Nation UK – Track 1
- via The Register: Rust developers at Google are twice as productive as C++ teams
コメント