Google開発者1000人が答えた「Rustのウワサ」、習得に6カ月以上かかる? 実は遅い? は本当か:Rustに関する5つの洞察

Rustの採用が増加しているGoogleが、1000人を超える開発者からの意見を参考に、5つの“うわさ”に向き合った。

[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Googleのプログラミング言語や低レベルOS、ユーザー体験を研究する2人の博士がプログラミング言語「Rust」に関する記事を投稿した。以下、その内容を要約する。

 Rustは、2015年にバージョン1.0に達したばかりの比較的新しいプログラミング言語だが、多くの機能を備えている。Rustが提供するパフォーマンスと安全性の保証に注目している開発者は、これまで使用していたプログラミング言語の代わりにRustを使用できるかどうかを考えざるを得ない。

 例えば、「大企業が既存の環境でそれを使用しようとするとどうなるか?」「開発者が言語を習得するのにどれくらい時間がかかるか?」「習得したら、生産性は高まるのか?」といった疑問がわく。

 Googleでは、特にコンシューマーアプリケーションやプラットフォームでRustの採用が増加している。博士らはGoogleにおけるRustの初期導入の数年間をカバーする幾つかのデータを分析した。具体的には2022年の業務の一部としてRustのコードを作成してコミットした1000人を超えるGoogle開発者からの意見を参考に、幾つかの“うわさ”の真偽の解明に取り組んだ。改善できる可能性のある幾つかの問題を確認し、以下、これまでに得た啓発的な発見を共有する。

 なお、Googleとコミュニティーがここ数四半期にわたって取り組んできた、「Comprehensive Rust」という、無料で利用できる新しいセルフサービストレーニングの資料にも注目したいとしている。

うわさ1:Rustは習得するのに6カ月以上かかる?

 調査参加者は全員、Googleに勤務するプロのソフトウェア開発者(または関連分野)だ。中には以前からRustの経験がある人もいる(約13%)が、ほとんどはC/C++、Python、Java、Go、またはDartを使っていた。

 Googleの調査によると、回答者の3分の2以上が、「Rustを学習してから2カ月以内にRustのコードベースに貢献できる」と自信を持っている。さらに、回答者の3分の1は、2カ月以内にRustを使用して他の言語と同じくらい生産性が向上した。生産性が向上した人数は、4カ月以内に50%以上に増加した。これらの増加数は、Google社内外で開発者が他の言語を採用するまでの時間と一致している。

 全体として、これらの開発者が以前Googleで使用していた他の言語と比較して、Rustの生産性が低いことを示すデータは確認されていない。この意見は、先述のComprehensive Rustトレーニングを受講する学生によって支持されている。受講2日目と3日目に行われた下図の調査は、経験豊富なソフトウェア開発者が非常に短期間でRustに慣れることを示している。


自信を持ってRustコードを書くまでの時間を示す円グラフ。まだ増加中=8.6%(オレンジ)、2~3週間=27%(青)、1~2カ月=39.8%(赤色)、3~4カ月=15.6%(黄色)、4カ月以上=9%(緑)(提供:Google)

うわさ2:Rustコンパイラは人々が期待するほど高速ではない?

 開発者がRustを使用する際に直面する課題として報告されている最大の課題は、ビルド速度の遅さだ。「許容できる速度だ」と回答したのは40%強のみ。

 Rustコンパイラ(rustc)のパフォーマンスを改善および追跡するために、コミュニティー全体で取り組んでいる。これはボランティアと、幾つかの企業(Googleを含む)の両方によってサポートされており、博士らは「主要な開発者がこの分野に取り組んでいることをうれしく思う。コンパイラ改善における追加サポートを継続し、拡大する可能性があることは有益だ」としている。

うわさ3:安全ではないコードとC/C++との相互運用性は常に最大の課題だ?

 現在のGoogle開発者にとって、Rustの最も困難な領域のトップ3は次の通り。安全ではないコードの作成とC/C++との相互運用性の処理は、Google開発者が遭遇したこととして挙げられたが、最大の課題ではなかった。

  • マクロ
  • 所有権と借入
  • 非同期プログラミング

 上記3つの領域には、Rust言語の設計チームが全体的な学習曲線の平準化と継続的な進化に投資している。

うわさ4:Rustにはコンパイラにおいて有用なエラーメッセージがある?

 一般的に、Rustではコンパイラで非常に有用なエラーメッセージを得られると考えられており、それは今回の調査でも同様だった。

 Rustの診断およびデバッグ情報の品質に満足していない回答者はわずか9%だった。Comprehensive Rustトレーニングの参加者からのフィードバックでも同じことが示されている。

 有用なエラーメッセージの例として、一部のGoogle従業員によるRust演習からの抜粋を以下に示す。

 演習5日目には、テーブル内のエントリを検索する必要があった。下図のエラーメッセージは、結果のパターンマッチングでケースが欠落していたことを検出するだけでなく、修正も提案している。


Rustにおけるパターンマッチングのエラー検出メッセージを示すコードスニペット(提供:Google)

 演習11日目には、要素がグリッドの境界内にあるかどうかを確認する必要があった。下図のエラーメッセージは、型が署名されていないために冗長な比較があることを検出し、削除できるコードを提案している。


Rustにおける冗長比較のエラーを検出したメッセージを示すコードスニペット(提供:Google)

うわさ5:Rustのコードは高品質か?

 回答者は「Rustコードの品質は高い」と述べ、開発者の77%がRustコードの品質に満足した。Rustコードが他の言語で作成したコードよりも「正しい」と感じるかどうかを比較するように尋ねたところ、85%の回答者が自分のRustコードが「正しい」と確信している。そして、それは正しいだけでなく、レビューも簡単だ。回答者の半数以上が、「Rustのコードは信じられないほど簡単にレビューできる」と述べている。

 開発者の満足度と生産性は、コードの品質とコードレビューにかかる時間の両方に相関している。Rustが高品質のコードを書くのに優れているだけでなく、そのコードをランディングするのにも優れているなら、それは企業がRustを評価し、導入を検討する上で、パフォーマンスやメモリの安全性を超えた、非常に説得力のある理由になる。

Copyright © ITmedia, Inc. All Rights Reserved.

関連記事

関連リンク

Click to rate this post!
[Total: 0 Average: 0]