rustの本番での採用事例リンク集

rust(プログラミング言語) の本番での採用事例についてのリンクをまとめてみました。
rust を本番で採用する際の判断材料のひとつになると嬉しいです。

まったく網羅的なものではなく、僕の印象に残ってたやつの紹介です。
編集リクエストもお待ちしてます。

## [Production - Rust programming language](https://www.rust-lang.org/production)

https://www.rust-lang.org/production

実はrustの公式サイトには、本番での採用事例を紹介するページがあります。
公式のドキュメントがとてもわかりやすく、あのオンラインドキュメントだけ読めば入門できることで有名なrust、こういう情報も公式が見やすくまとめてくれてるんですね.

- npmjs.com
    - [Rust npm Whitepaper](https://www.rust-lang.org/static/pdfs/Rust-npm-Whitepaper.pdf)
    - npmパッケージのpublish処理がCPUバウンドになり、トラフィックが大規模になるにつれパフォーマンスの問題がでてきた。
    - rust で書き直して解決。
    - c/c++/java/go と rust を比較したことが書かれている。
        - java → jvm 運用は彼らにとって複雑なので避けた
        - go → 依存ライブラリ解決の信頼性が彼らの要件からすると不安があった
        - c++ → c++でHTTPアプリを書くのは避けた
    - 上記の話から、おそらくCPUバウンドなところだけrust、というわけでなく httpサーバ自体も rust で書かれていると思われる。
    - 上記文書では、rust の 性能だけでなく dependency management を褒めている。
- Dropbox
    - https://www.wired.com/2016/03/epic-story-dropboxs-exodus-amazon-cloud-empire/
    - Dropbox が AWS から自社のハードウェアへ移行したことの紹介記事です。rust が登場します。
    - まだ2016年の段階で、Dropboxという有名大規模なシステムに rust 、ということで当時けっこう話題になっていたように思います。
    - 記事によると、Magick PocketというDropbox独自の分散ファイルストレージシステムを rust で新しく書き直したらしい。
        - → 最初はGo で書いたが、メモリフットプリントが非効率だった。より彼らの特注のハードウェアの性能をだすため rust でつくり直した。
- その他多数。
    - ここを一度覗いてみることをおすすめします。 https://www.rust-lang.org/production
- rust採用企業が一望できるページがこちら
  - https://www.rust-lang.org/production/users


## Fastly

- [Announcing Lucet: Fastly’s native WebAssembly compiler and runtime](https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime)
    - [Edge programming with Rust and WebAssembly](https://www.fastly.com/blog/edge-programming-rust-web-assembly)

先日アナウンスされた Fastly の 「Lucet」 を見た僕は、これは、めっちゃだな。と思いました。

fastly の Lucet は主にrustで書かれているようです。
https://github.com/fastly/lucet

近い将来、webフロントエンドの開発は、各社が好きなコンパイル型言語で書いてfastlyにデプロイ、みたいなワークフローになったりするんでしょうか。

Lucet は、WebAssembly の軽量コンパイラ/実行環境のようです。
( WebAssembly = webブラウザで走らせることができるソフトウェアの実行ファイルフォーマット。 javascript 書かずとも、好きな言語をWebAssemblyにコンパイルすればwebページをプログラムすることができる )

というか実は、元々、rust は webassemblyへのコンパイルがけっこう簡単にできます。
コンパイラツールチェイン の rustup から、色々な環境へのクロスコンパイルが簡単にできるようになってます。

webアプリケーションの領域でもrustが普及すると面白いですね。

## Firefox

Firefoxを忘れるところでした。
Firefox の独自ブラウザエンジンのGeckoには、部分的 rust が使われています。

また、Mozilla には、完全にrust で書かれた WebブラウザエンジンのServoというプロジェクトがあります。

以前は Gecko を Servo に取り換えるか，という話もあったようですが，結局 Servo の成果を順次 Gecko に取り込んでいく，ということになったようで，それは Quantum プロジェクトと呼ばれています。現在も続いています。

Gecko の中の Rust コードはまだ一部分ですが，それでも CSS エンジンなどは完全に取り換えられました。
Servo の CSS エンジンについては Lin Clark さんの分かりやすい技術解説（2017 年）があります。日本語訳もあります：
[超高速エンジンの内部：Quantum CSS（別名Stylo）- 前編 | POSTD](https://postd.cc/inside-a-super-fast-css-engine-quantum-css-aka-stylo/)
[超高速エンジンの内部：Quantum CSS（別名Stylo）- 後編 | POSTD](https://postd.cc/inside-a-super-fast-css-engine-quantum-css-aka-stylo-2/)

こちらの記事も参考になります：
[Firefox Quantum高速化の一翼を担うQuantum CSS - Mozilla Flux](https://rockridge.hatenablog.com/)

VR 機器用のブラウザーである Firefox Reality は Gecko じゃなくて Servo だそうです。
https://mixedreality.mozilla.org/firefox-reality/

(上記、いただいたコメントの情報を元に編集しました )

## AWS Lambda (Firecracker)

コメントで教えていただきました。

サーバレスコンピューティング筆頭の AWS Lambda ですが、ここで動いている 仮想化システム Firecracker は rustで書かれているそうです。

Firecracker 軽量な仮想マシンを管理することができ、公式には「microVM」という言葉が遣われています。
公式の紹介によると、mircoVMは、コンテナでもVMでもなく、起動の高速性と、同時にマシンリソース消費の隔離を両立できるものらしい。

- [Firecracker](https://firecracker-microvm.github.io/)
- [Firecracker – サーバーレスコンピューティングのための軽量な仮想化機能](https://aws.amazon.com/jp/blogs/news/firecracker-lightweight-virtualization-for-serverless-computing/)


## 日本

追記: [日本で Rust を利用している会社一覧](https://github.com/fnwiya/japanese-rust-companies) というリポジトリに情報がまとまっていました。

- Cookpad
    - マイクロサービス化を推し進めているCookpad さん。rust で書かれたサービスもあるみたいです。
    - [Rubyの会社でRustを書くということ](https://techconf.cookpad.com/2018/hidekazu_kobayashi.html)
    - [Rubyの会社でなぜRust？ Cookpadがマイナー言語を採用するまで](https://logmi.jp/tech/articles/282807)
- Dwango
    - [Rust製の分散オブジェクトストレージをOSSとして公開しました](https://dwango.github.io/articles/frugalos/)
    - このユースケースは Dropboxと似ていますね。
    - 今までc++が適していたようなものを新しく書く場合は rustは有力な選択肢と言って良いと思います。
- Idein Inc.
    - https://blog.idein.jp/post/176046665580/rust-development-in-team
    - rustの日本語コミュニティでよくみかける keenさんが在籍しているらしい Idein Inc.さん。ブログによるとWebサービスをrustで開発しているとのことです
- Forcia
    - [インメモリデータベースの開発言語にRustを選んだ理由](https://www.forcia.com/blog/001167.html)
    - 上記記事で、実際にrustで開発してみての感想がよくまとまっています。

## 編集中

まとめようとしてみたものの、思ったより数がすくなかったです。
ちょっとずつ追記していくと思います。

「おれも本番で使ってるよ! :raising_hand: 」という方がいたら教えてくださいっ