Rust(プログラミング言語) 単語


ニコニコ動画でRust(プログラミ…の動画を見に行く

ラスト

2.9千文字の記事
これはリビジョン 3123260 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

Rustとは、メモリ安全性[1]や並列処理の安全性に注目して開発されたプログラミング言語である。

概要

速度、安全性、並行性が特徴のプログラミング言語である。C++と遜色ない実行速度を誇り、GCがないにも関わらず手動のメモリ管理は不要で、しかもメモリ安全である。また、並列処理に起因するバグをコンパイル時に検出することができる。

Rust Foundationによって管理されているが、開発はオープンなコミュニティによって行われている。

構文はCライクであるが、型を後置したりする。また"fn" "Vec"のようにキーワードや識別子の省略を多用するのが気持ち悪い特徴的。関数型言語の影響を受けて型推論や代数形、パターンマッチング、タプル、高階関数、型クラス(トレイト)などをサポートしたマルチパラダイム言語である。

コンパイラが親切なのもRustの特徴である。分かりやすいメッセージで、問題のあるコード部分に下線を引いて注釈を入れ、時には正しいコードを示してくれたりもする。また、言語仕様や標準ライブラリは処理系のメジャーバージョンが変わるまで後方互換を保つ。処理系をアップデートしても昔のコードが壊れることは滅多にないのだ。

一部では、Rustは入門者にとって厳しい言語であるということで有名である。自動メモリ管理のための機構である「所有権(Ownership)」の概念を把握できていないと、頻繁にコンパイルエラーに遭遇し、しかもその意味がわからないのである。ある程度習得できていればひと目見て解決できる問題であったりする場合が多く、所有権を理解しないまま何時間も試行錯誤するようなことは時間の無駄となる可能性がある。行き詰まったらRustコミュニティで質問したりして、エラーの原因を理解することを勧める。また、ドキュメントやサンプルも眺めておこう。

用途

  • 高パフォーマンスを要求される場面。
    • コストを可視化する傾向の言語・ライブラリ設計となっている。
    • 高レベルな抽象化を行ってもノーコストな機械語に落ちたりする(ゼロコスト抽象)。
  • 他言語との連携。
    • GCやその他の言語ランタイムが無いため、他言語で書かれたプログラムのボトルネックをRustで実装しなおすといったことが気軽に行える。
    • FFIの呼び出しコストを無くすためグリーンスレッドが取り除かれた経緯があるため、Rustの主な用途の一つなのだろう。
      • ちなみに、非同期処理にはイベントループが使われるようになった。
  • デバッグが地獄になりそうなとき。セキュリティが気になるとき。
    • 複雑な並列並行処理や、文字列処理はバグの根源となる。Rustの型システムが提供する安全性が役に立つ。
  • 組み込みやその他のベアメタル環境。
    • 現在ARMで動かせる他、AVRマイコンへの対応も進んでいる。
    • 実験的なRust製OSがいくつか開発されている。

新しい言語として同時に挙げられることの多いGoなどと比べると、中々ニッチな領域を攻めている言語だと言える。Mozillaが支援しているからには当然だがブラウザの開発はこれらの特徴にピッタリと当てはまり、Firefoxがバージョン48以降で徐々にコンポーネント単位でRustに移行している[2]他、次世代ブラウザエンジンであるServoの開発にも用いられている。Mozillaの外ではDropboxやnpmがWebサービスのバックエンドに用いており、ドワンゴも分散型ファイルシステムの開発にRustを用いているという。

パフォーマンス・生産性の高さからゲーム製作でも使われ、Pistonを始めゲームライブラリがいくつも存在する。

Linuxではカーネルのバージョン6.1から記述言語に一部採用されている。[3]

ライブラリ

Rustについて言われることとして、標準ライブラリの機能が少ないというものがある。なんと正規表現や乱数すら無く、外部ライブラリを使用する必要がある。パッケージマニフェスト(Cargo.toml)に一行追加するだけではあるが……。

これは開発初期ゆえ少ないのではなく、標準ライブラリを軽量に保つという方針によって意図的に削られたものである。Rustでは外部ライブラリの利用が推奨されており、定番となっているライブラリの評価・改善を公式の主導で行っていたりもする[4]。このようになっているのは何故かと言うと、先述した後方互換性の保証のためである。標準ライブラリのAPIも自由に改良したり削除したりは出来ないため、議論の余地の少ない機能だけ採用しているのである。正規表現や乱数のライブラリも当初は標準ライブラリに含まれていたが取り除かれた経緯がある。

Rustのライブラリはcrates.ioにホストされている。目的のライブラリが見つけられない場合はAwesome Rustのような有志によって作られた索引が役に立つ。

歴史

2006年頃からMozilla社員であるGraydon Hoare氏の趣味として開発が始まった。その後2009年にMozillaによる支援が開始され、現在まで続いている。2010年にコンパイラの記述言語がOCamlからRustに移行し、セルフホスト(コンパイラがコンパイルする言語自身で書かれていること)を達成した。

月日は流れ、2015年に初の安定版であるRust1.0がリリースされた。以降は6週間毎に安定版のマイナーバージョンが上がる列車方式のリリースが行われている。

近年は、技術者向け質問コミュニティサイトStack Overflowのユーザ投票において「最も好ましい言語」に選ばれ続けている。[5]

2021年に「Rust Foundation」が設立され、Mozillaから商標やインフラ資産が譲渡されている。[6]

関連動画

Rust(プログラミング言語)に関するニコニコ動画の動画を紹介してください。

関連商品

ニコニコ市場は2023年11月に終了しました。ニコニコ市場は2023年11月に終了しました。

関連コミュニティ

Rust(プログラミング言語)に関するニコニコミュニティを紹介してください。

関連項目

  • プログラミング言語
  • Mozilla
  • Firefox

外部リンク

脚注

  1. *メモリ安全とは、メモリの扱いに起因するバグが発生しない性質のこと。nullポインタによる実行時エラーやセグメンテーション違反、バッファオーバーフロー/オーバーラン、ダングリングポインタの発生などといった問題が起こらない。
  2. *https://wiki.mozilla.org/Oxidation
  3. *Linuxカーネルのバージョン6.1が公開、カーネル記述にRust言語を一部採用した最初のバージョン 2022.12.18
  4. *https://blog.rust-lang.org/2017/05/05/libz-blitz.html
  5. *開発者の「好きな言語」や「嫌いな言語」--Stack Overflow調査 2021.8.9
  6. *プログラミング言語「Rust」のための「Rust Foundation」設立--AWS、MS、グーグルらメンバー 2021.2.9

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2025/12/09(火) 06:00

ほめられた記事

最終更新:2025/12/09(火) 05:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP