LoginSignup
264
178

Rustの概要や魅力をコードなしでまとめてみた

Last updated at Posted at 2019-11-14

2019年11月12日(火)に、社内研修でプログラミング言語「Rust」をテーマにしました。
そこでプレゼンしたRustの概要や魅力を、コードなしでまとめました。

本記事の対象読者

オススメできる方

  • Rustをよく知らないが、Rustに興味を抱いている方
  • Rustのコードを見ずにとりあえず概要を知り、Rustの勢いを感じたい方

オススメできない方

本記事の目的

  • Rustの概要を知る
  • 「Rustキテるな」を実感する

Rustの概要

  • Mozillaが支援するオープンソースのプログラミング言語
  • 名前はさび菌に由来
    • Graydon「菌類にちなんで命名したと思います。さび菌はすごい生き物です」 1
  • ロゴは自転車のチェーンリングに由来
    • Graydon「私たちの多くが自転車に乗ること、そして自転車のチェーンリングのようなものは頻繁に錆びており、非常に視覚的に独特で、見栄えが良いです」 2
  • コンパイラ言語、静的型付け、強い型付け
  • 愛されているプログラミング言語ランキングで2016年~2022年にわたり7年連続で首位 3
  • 最も称賛されているプログラミング言語4

Rustの歴史

  • 2006年:Mozillaで働いていたGraydon Hoareにより、C++の問題点を改善するための個人プロジェクトとして誕生
  • 2009年:Mozillaの公式プロジェクトになる
  • 2010年:Mozilla Summit 2010で公開
  • 2015年:初の安定版、バージョン1.0のリリース ※バージョン1.0リリースまでに破壊的仕様変更を繰り返す
  • 2020年:Rust Foundationの年内設立を発表 5
  • 2021年:Rust Foundation設立

Rustのリリースサイクル

6週間に1回の定期リリース
※7/7時点でStableの最新バージョンは1.70.0(現地時間6/1リリース)

Rustの特徴

システムプログラミング言語である

CやC++の代替を目指している

マルチパラダイムプログラミング言語である

  • 文法の表面的な記述は手続き型
  • ブロックコードのまとまりの意味論は関数型
  • 型システムを用いたオブジェクト構造はオブジェクト指向

安全性、速度、並行性にフォーカスしている

安全性

  • メモリセーフに基づき設計されている
    • Nullポインタ、ダングリングポインタは許容しない
  • CやC++で許容された未定義動作を許容しない
  • CやC++にはない、型安全がある
  • むきだしのポインタを使うこともできるが、unsafeコードと位置づけ

速度

並列性

  • CやC++では難しかったマルチスレッドが実装しやすい
  • 排他ロックとこれが保護するデータの関係をコンパイラがチェックしてくれる=コンパイル時点でデータ競合を抑止
    • safeコードであればデータ競合を許容しないスタンス

C、C++、Rustをアナロジで表現すると… 6

C++を開発したBjarne Stroustrupは30年ほど前、「C makes it easy to shoot yourself in the foot,
C++ makes it harder, but when you do, it blows your whole leg.
(Cでは簡単に自分の足を撃てる。
C++で自分の足を撃つのはむずかしいが、撃ったら足全体が吹き飛ぶ)」と語りました。
このアナロジでいうと、Rustでは自分の足を撃てません。
足に向けると引き金が引けないようになっているのです。

Rustの非公式キャラクター

Ferris(フェリス)という名前のカニ
https://rustacean.net/
 ※Rustエンジニアを指すRustaceanの由来が「crustaceans(甲殻類)」であることから

Rustのいま

Rust案件が日本でもじわじわ増えている

  • 求人検索サイトIndeedでキーワード検索すると…(2023/7/7現在)
  • C++  :90,611件
  • Python:15,192件
  • Rust  :2,872件

(世界規模でみると)高収入ランキング第10位 7

  • 10位あたりをキープしている

RedMonkのプログラミング言語ランキング2019では21位 8

「Kotlinのような高成長言語の次点に、そしてClojure(25位)やGroovy(#24位)などの
一般的なJVMベースの言語よりも前に順位を置くことは、
Rustの低レベルで安全志向の性質を考えると、驚くべき成果」と評されている

2022年版2023年版ではDartと並び19位

有名企業の反応や採用事例

Mozilla

FirefoxをRustで書き直している 9 10

  • MozillaがRustで開発している「Servo」からレンダリング並列処理可能な「Quantum CSS」を導入
  • Mozillaはレンダリング処理の並列化をC++で実装しようと2回試みたが失敗している

もし最初からFirefoxをRustで実装していたら? 10

  • Firefoxのスタイルコンポーネントでの脆弱性は累計69件
    • もし初めからRustで実装していれば、約70%は回避できたとの見解を示した

Microsoft

大注目している様子

  • 更新プログラムで対処されているMicrosoft製品の脆弱性の約70%がメモリセーフの問題であると公表 11
  • Microsoft Security Response Center(以降MSRC)は、セキュリティを確保しつつ効率性も保ちたい場合に使えるシステムプログラミング言語であるとRustを高く評価 12
  • MSRCは「Azure IoT Edge」ではRustを選択したと採用事例を発表 13

WindowsがRustになるかも!? 14

  • Windowsコードベースの低レベルなシステムコンポーネントをRustで書き換える実験プロジェクトが進行中
  • Adam Burch氏の評価は概ね肯定的で、「C++コードベースにおいてセキュリティ脆弱性につながることが多い間違いを回避したい人にRustは適している」と述べた

Amazon

Rustのインフラスポンサーになることを表明 15

  • RustコアチームメンバーのAlex Crichton氏は「Rustプロジェクトのスポンサーシップを多様化することは、Rustプロジェクトの長期的な成功にとっても重要です。AWSがこの目標を直接支援していることに興奮しています。」と述べた

仮想化OSSのFirecrackerをRustで開発

AWS LambdaもRustに対応

Rustエンジニアを求めている

https://japan.zdnet.com/article/35163089/
https://aws.amazon.com/jp/blogs/opensource/why-aws-loves-rust-and-how-wed-like-to-help/

Linuxディストリビューション「Bottlerocket」にRustを積極的に使用

Meta(旧名称Facebook)

仮想通貨「Diem(旧名称Libra)」のコアをRustで開発

ビルドシステム「Buck」にRustを採用

https://www.itmedia.co.jp/news/articles/2107/28/news152.html
https://developers.facebook.com/blog/post/2021/07/01/future-of-buck

Google

開発中のOS「Fuchsia」のRust向けライブラリやラッパーを提供

https://fuchsia.dev/fuchsia-src/development/languages/rust
https://fuchsia.googlesource.com/fargo/

AndroidプラットフォームがRustをサポート

Discord

GoからRustへ… 16

ゲーマー向けチャットアプリケーション「Discord」の基盤サービス「Read States」を
Goで実装していたが、Rustで再実装した結果パフォーマンスが改善したと発表

カレントユーザ数を1,100万人へ拡大 17

ElixirのNative Implemented Function(NIF)を開発する際にRustを採用して実現

Dropbox

PythonからRustへ… 18

新しい同期エンジン「Nucleus」をRustで実装し、パフォーマンス向上だけではなく、同期の複雑さの緩和にも役立ったと発表

Linux

Linuxカーネルでの採用の道を模索

日本企業

日本で Rust を利用している会社一覧

著名なエンジニアの反応

Linus Torvals

  • LinuxカーネルやGitの生みの親
  • 2016年のインタビューでRustについてコメントしている 19
    • 「RustはModula-2やAdaがもたらした惨事よりずっと良く見えると言わざるを得ない」
    • 「カーネルにおけるRustについてはあまり言及できないが、Cに制限がたっぷりあることに疑問の余地はない」

Josh Triplett

  • Intelの主席エンジニア
  • Open Source Technology Summit 2019でRustについて講演 20
    • 「Rustは未来のシステムプログラミングで、Cは新しいアセンブリ」
    • 「IntelはRustがCと完全な等価になるよう貢献している」
    • YouTubeに講演動画もあります

さぁ、Rustをはじめましょう

Rustの日本語ドキュメント/Japanese Docs for Rust
プログラミングRust 第2版(オライリー本)
実践Rust入門

さいごに

初投稿した2019年に比べ、2023年現在、Rustを導入する企業やRust本が増えてまいりました。

Rustは学習コストが高いプログラミング言語です。
継続して勉強するために、概要と共にモチベーションがあがりそうな記事も寄せ集めた次第です。

モチベーションがあがりそうなRustのニュースや記事が出たら、随時更新予定です。
オススメの記事や採用事例等々ありましたら、ぜひコメントで教えてください。

最後までご覧いただきありがとうございました!

  1. Internet archaeology: the definitive, end-all source for why Rust is named "Rust"

  2. ロゴの由来のソース

  3. Stack Overflow Developer Survey - Most Loved Languages 2016年2017年2018年2019年2020年2021年2022年

  4. Stack Overflow Developer Survey - Admired and Desired 2023年

  5. Laying the foundation for Rust's future

  6. プログラミングRust』の中田秀基氏の「訳者まえがき」(vページ目)より引用

  7. Stack Overflow Developer Survey - Top Paying Technologies
    2023年

  8. The RedMonk Programming Language Rankings 2019年

  9. Mozillaの超高速CSSエンジン「Quantum CSS」とは?

  10. Implications of Rewriting a Browser Component in Rust 2

  11. Microsoft: 70 percent of all security bugs are memory safety issues

  12. Microsoft、安全で高効率のプログラミング言語として「Rust」を高く評価

  13. Rust言語のメリットと課題、「Azure IoT Edge」の事例から分かること

  14. Using Rust in Windows

  15. AWS promotional credits for open source projects

  16. Why Discord is switching from Go to Rust

  17. Using Rust to Scale Elixir for 11 Million Concurrent Users

  18. Rewriting the heart of our sync engine

  19. Linux at 25: Linus Torvalds on the evolution and future of Linux

  20. “Rust is the future of systems programming, C is the new Assembly”: Intel principal engineer, Josh Triplett

264
178
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
264
178