Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
RustとWasmの現実

株式会社アトラエ タガミショウゴ

Rust, Wasmって最近巷でよく聞きませんか?

- “Rustが流行っているらしい”

- “Rustは早いらしい”

- “WebAssemblyってのがJavaScriptの代わりになるらしい”

でも、実際のところどうなのか?またそれぞれどういったものなのか?を完全に理解して
いる方は少ない印象(かくいう僕もよく分かっていませんでした)。



なので、ざっと理解できるレベルまで今日はお話ししていきます。

RustとWasmの現実

Rustとは

- FirefoxのMozilla社が開発元

- 特徴:

- (1) 実行速度が速い(C, C++と同じくらい) 

- (2) 低レイヤーのプログラムから、Webまで幅広くカバーできる 

- (3) 「安全性」が担保されている 

- (4) ツール群が充実している 

Rustは速いの図

https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html
Rustはなぜ早いのか?

- JavaやPythonなどの言語はインタプリタやコンパイラを介して、独自の仮想マシン
用の言語を生成するので、ちょっと時間がかかります(それでも早い

- 一方、C, C++, Rustはコンパイル後の最終結果は直接機械語になります

- また、仮想マシンを持たないGoよりも早いのは、Rustにはガベージコレクション(GC)
がないという理由からです

- GCとは使う予定のないメモリ領域(ガベージ)を解放し、使えるメモリ領域を増やす、
という処理をしてくれるやつです

- Rustは手動でメモリ管理をするのではなく、「所有権」「借用」「ライフタイム」という新
しい仕組みでこれを回避

ちなみに、Rustのコードはこんな感じ

https://news.mynavi.jp/article/rust-13/
Rustのプロダクション使用例

- Firefoxのブラウザエンジンのコア部分(ここが起源)

- Dropboxではデータセンター効率化のためのストレージシステム

- yelpのリアルタイムA/Bテストフレームワーク

- FastlyのWebAssembly実行環境を提供するLucet

- AWS Lambdaの仮想化システム

- Cookpadのマイクロサービスの一部分

- サイバーエージェントの広告配信サーバー

RustとWasmの現実

WebAssemblyとは

- WebAssembly(略してWasm)はブラウザで動く新しいプログラミング言語(フォーマッ
ト?)

- ネイティブコードに変換しやすく、バイナリ列で表現されており、早い

https://ja.wikipedia.org/wiki/WebAssembly
WebAssemblyのユースケース

- 前提:JavaScriptを全く置き換えるというものではない(現状は)

- 例えば、処理速度が求められる部分やC/C++からの移管先

- C/C++で書かれたアプリゲームを、Webゲームに移管する時の方法 

- 画像、動画編集、画像認識などのアプリケーションをWeb上で実行する 

- 現状、WasmはDOMを直接触れない関係で、JavaScriptといい感じに共存している

- イメージとしては、基本的にはJavaScriptで書き、処理速度が求められる部分を
WebAssemblyで書くみたいなのが良さそう

まとめ

- RustやWebAssemblyはこれから2,3年で使用例が増えてくると思うけど、すぐすぐ
「アトラエでも使うぜ!」という段階ではない!

- 有りうるとすると、DSチームやインフラ周りで計算機構の高速化あたりをPythonか
らRustにする、とか

- いずれにせよ、新しいプログラミング言語を学ぶのは楽しい!


More Related Content

Rust と Wasmの現実