検索
ニュース

「Rust」はなぜ人気があるのか、Stack Overflowがユーザーのコメントを紹介「最も愛されている言語」ランキングで5年連続首位の背景とは

開発者向けQ&Aサイト「Stack Overflow」は、先ごろ発表した年次開発者調査の結果を受け、プログラミング言語「Rust」が人気を集めているさまざまな理由について、ユーザーの生のコメントを紹介した。速度を犠牲にせずにメモリ安全性を確保できる点が魅力的だが、それだけではない。

Share
Tweet
LINE
Hatena

 開発者向けQ&Aサイト「Stack Overflow」は2020年6月5日(米国時間)、オープンソースのシステムプログラミング言語「Rust」がなぜ人気を集めているのか、ユーザーのコメントを紹介した。同サイトのRustチャットルームと、Rustのユーザーフォーラムから集めたものだ。

 Stack Overflowが2020年5月に発表した年次開発者調査「2020 Developer Survey」では開発者を中心に約6万5000人が参加した。Rustは2016年の調査以来5年連続で、最も愛されている言語のランキングで首位を獲得した。

 これを受け、Stack Overflowは同言語のチャットルームとフォーラムで、ユーザーが支持する理由についてコメントを募った。今回紹介したのはそのうちの抜粋だ。多くはRustユーザーフォーラムに寄せられたもの。

 Stack Overflowはユーザーの声を紹介するのに先立ち、同サイトの従業員の中でRustのコントリビューターとして最も実績のあるジェイク・グールディング氏(ハンドルネーム:Shepmaster)が、Rustの人気の理由について語った次の言葉を紹介している。

 「一言でいえば、Rustは、他の多くの言語が持つ問題点を解決している。欠点はあるものの限られている。さらに着実に進歩しつつある」

全く新しい、よく考えられた機能を備えている

 Stack OverflowはRustの機能について触れたユーザーのコメントを次のようにまとめた。

 「既存のコンセプトに磨きをかけ、使いやすさを高めることに終始している言語は他にもある。だが、コメントを寄せたユーザーの何人かは、Rustはプログラミング言語として革新を遂げていると感じている。単に人目を引くためではない。『Rustは、新しい設計を採用することで、モダンプログラミングの困難な課題を解決する』と認識している」

 続いてRustの機能に関するユーザーのコメントの一部を紹介する。

ZiCog氏 「私は仕事で40年間、十数種類のプログラミング言語を使ってきた。Rustは、全く新しい機能を導入している唯一の言語だ。メモリを安全に利用するために(他の言語が採用しているような)ガベージコレクションも複雑なランタイムシステムも利用していない。コンパイル可能なシステムプログラミング言語でもある」

Denys Sëguret氏 「env変数を偽装してコンパイルコンテキスト要素を読むような非常に強力な機能を発見したとき、Rust言語に対して熱狂的な思いに駆られることがある」

janriemer氏 「npmのエンジニアであるChris Dickinson氏の名言が、私の考えを完璧に要約している。『Rustはつまらない(おかしなところがない)というのが私の最大のほめ言葉だ』」

 「Rustは、ユーザーエクスペリエンスデザイナーによって開発されたように見えるプログラミング言語だ。開発チームは明確な言語ビジョンを持っている。どの機能を追加するか、どの機能を見直すかを慎重に選択しており、コミュニティーの要望に耳を傾けている。全てが一貫しており、開発者のワークフローを完璧にサポートしている」

skysch氏 「私はHaskellを使っていて、その後Rustに出会った。今でもHaskellは非常にエレガントで安全な言語だと感じている。私にとってRustが良いと考えられる点は、高性能なコードと定型化した『クリーンな』コードとの間にあまり差がないことだ。ほとんどのRustのコードは、たとえ高性能なコードであっても、他のRustのコードと同じように見える。通常使っているものとは異なるライブラリを使ったり、特定の目標を実現しようとしたりしたとき、Haskellのコードはすぐに見慣れないものになってしまう。構文の小さな違いが動作の大きな違いにつながるのだ。Rustではそのようなことが少ない」

Jay Oster氏(PubNubのアーキテクト) 「Rustは、安全でパフォーマンスが高いだけでなく、次のような機能を備えている」

  • ジェネリック型
  • トレイト
  • 代数型
  • マルチパラダイム
  • おそらく世界で最も優れた依存関係管理ツールとビルドツールを備え、「依存関係地獄」の問題を実質的に解決
  • インラインドキュメントとテスト、ベンチマークの素晴らしいサポート
  • ライブラリや抽象化、ツールについてエコシステムが成長中
  • 手続きマクロ
  • 既存コードとのFFI(他言語関数インタフェース)相互運用性
  • 数十のプラットフォームのサポート
  • 有益で、間違いなく満足のいく開発者エクスペリエンスの提供

 「さらにRustは、以下を全て兼ね備えた唯一の言語だ」

  • メモリ安全性
  • 型安全性
  • データ競合が発生しない
  • AOT(Ahead-of-time)コンパイル機能
  • ゼロコスト抽象化に基づいており、これを促進する
  • 最小限のランタイム(ガベージコレクションやJITコンパイラ、VMがない)
  • 少ないメモリ使用量(小型マイクロコントローラーのようにリソースの制約がある環境でもプログラムが動作する)
  • ベアメタルをターゲットにできる(例えば、Rustを“高次アセンブラ”として使い、OSカーネルやデバイスドライバを作成できる)

daboross氏 「Rustのコンパイル時保証は、JavaやC#、TypeScriptといった他の静的型付け言語と比べて優れている。コンパイル時にスレッド安全性、オーナーシップセマンティック、バリデーションもチェックするからだ」

 「Rustは非常に下位互換性が高い。Rust 1.0で書いたコードを実行できるし、自分が書くコードは、次にRustがアップデートされても、更新する必要がないと安心していられる。Rust自体だけでなく、ライブラリについても、こうした高い下位互換性が保証されている」

Peter Varo氏 「Rustは、CやC++と同様の低レベルプログラミングが可能で、これらの言語と同じメリット(プログラムの制御やサイズ、スピードなど)を備えている。その一方で、Haskell並みの高次プログラミングにも対応しており、関数継承でも多数の関数をサポートしている。さらに、命令型プログラミングもサポートしているため、ほとんどの人にとって利用しやすい他、Pythonのように柔軟でもある」

blonk氏 「Rust/cargo(Rust付属の開発ツール)を使うと、ビルドシステムよりも実際のコードに集中できる。『Yet Another Build System』を読み上げるのに丸一日を費やす必要はない。Rustでのクロスコンパイルは信じられないほどシンプルでスムーズだ。試してみると『何かが足りないのではないか』と思うほど単純だ」

 「コードをデバッグする時間がとても短くなる。大規模なリファクタリングを恐れることもない。リファクタリングされたコードがいったんコンパイルを通れば、意図した通りに動作する。Rustでは適切なマルチスレッドを行うことを強制される(デッドロックすることもあるが、クラッシュしやすいタイプの困難なバグよりはましだ)。言語特有の定型コード(boilerplate code)を書く回数が格段に減った。必要な定型コードを別のモジュールに隠して、アプリケーションロジックのコードの邪魔にならないようにできる。最も一般的な例は、エラータイプの変換だ」

大規模プログラムの安全性とスピードに優れる

 Stack OverflowはRustの安全性と処理速度について次のように指摘した。

 「現在のプログラミングに関する議論の多くは、メモリ管理が可能で高速な低レベル言語を使うか、安全な高レベル言語を使うかが焦点となっている。Rustファンは、Rustが両方の特徴を兼ね備えていることを気に入っている」

Jay Oster氏 「十分な時間をかけて、細部にまで注意を払ってコーディングをするように努めれば、低レベル言語でも安全な、バグのないコードを作成できる。ただし、それは1人でコードを作成する限りにおいてだ」

 「チームで大きなプログラムを作成するとなると、そうはいかない。他人が書いたコードに依存したり、新しいメンバーが加わって、既存のコードに変更を加えたりする場合、個々人の努力に頼ったコード品質の維持は、現実的には不可能になる。そこでRustの出番となる」

daboross氏 「ライブラリ作成者の観点からみると、Rustのトレイト/ジェネリックシステムは、複雑ながらも、使いやすいインタフェースを自分で作成できることを意味する。これらのインタフェースは、間違った使い方をすることができない。つまり、ランタイムチェックをする必要がなく、ユーザーも、問題が起こるケースを考えずに済むということだ。問題が起こるコードを書けないからだ」

 「ライブラリ使用者の観点からみると、豊富で幅広いクレート(Rustのライブラリ)のエコシステムのおかげで、多種多様な分野のコードを、個々のケースで必要な関連知識を掘り下げて学習しなくても作成できる。例えば、JSONパーサーやライターの仕組みを知らなくても、serde(シリアライザー/デシリアライザー)を使える。知識不足がバグの原因になることもない。ランタイムではなく、コンパイル時にエラーが出て、修正できるからだ。アルゴリズムのことだけ考えればよいというのが助かる」

趣味で使っている開発者が難しい言語を好んでいるだけなのか

 Rust言語はごく少数の愛好家に支持されているだけなのではないかという疑問に対してStack Overflowは違うと答えている。

 「実際、過去1年間にRustを使ったことがある調査回答者は、全体の5.1%にとどまる。だが、これらのユーザーが、Rustを使い続けたいと答えていることも事実だ」

CAD97氏 「Rustを使用することを余儀なくされている人が非常に少ないことが、Rustの利点だと考えている。ほとんどの人が選択的にRustを使っている」

H2CO3氏 「私はRustを4年間、自分のプロジェクトと仕事で使ってきたが、一番好きな言語になった。CやC++では、同じくらいの経験を積むまでに、重大な欠点があることに気付かされた」

 「洗練さを極めた言語であるHaskellも、使って1年ほどして、拡張や方言を扱う必要が生じたときに、厄介な問題がつきまとうことが分かった。Rustでは、こうした経験が一切ない」

asafigan氏 「Rustは、学習するのが大変な言語だが、使えば見返りがある」

 「Rustユーザーの多くは、さまざまな言語の使用経験があり、自分が経験した言語とRustの違いの大きさ(と、それに伴う学習の難しさ)に驚くと思う。だが、ユーザーは、学習の難しさを忘れる。すぐにより良いソフトウェアを作れるようになるので、学ぶだけの価値があると思えるからだ」

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る