2019年11月12日(火)に、社内研修でプログラミング言語「Rust」をテーマにしました。
そこでプレゼンしたRustの概要や魅力を、コードなしでまとめました。
本記事の対象読者
オススメできる方
- 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コードと位置づけ
速度
- ガベージコレクションがない
- コンパイル時に全ての変数の寿命が分かるため、自動でメモリを破棄=RAII
- C++と同程度の処理速度を誇る
並列性
- 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の低レベルで安全志向の性質を考えると、驚くべき成果」と評されている
有名企業の反応や採用事例
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
開発中の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カーネルでの採用の道を模索
日本企業
著名なエンジニアの反応
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のニュースや記事が出たら、随時更新予定です。
オススメの記事や採用事例等々ありましたら、ぜひコメントで教えてください。
最後までご覧いただきありがとうございました!
-
Internet archaeology: the definitive, end-all source for why Rust is named "Rust" ↩
-
Stack Overflow Developer Survey - Most Loved Languages 2016年、2017年、2018年、2019年、2020年、2021年、2022年 ↩
-
Stack Overflow Developer Survey - Admired and Desired 2023年 ↩
-
『プログラミングRust』の中田秀基氏の「訳者まえがき」(vページ目)より引用 ↩
-
Stack Overflow Developer Survey - Top Paying Technologies
2023年 ↩ -
Microsoft: 70 percent of all security bugs are memory safety issues ↩
-
Using Rust to Scale Elixir for 11 Million Concurrent Users ↩
-
Linux at 25: Linus Torvalds on the evolution and future of Linux ↩
-
“Rust is the future of systems programming, C is the new Assembly”: Intel principal engineer, Josh Triplett ↩