以下の内容はhttps://ozaki25.hatenadiary.jp/entry/2018/07/03/220000より取得しました。
ライブ動画変換でのRust言語活用事例
導入事例
- pixiv Sketch LIVE
- Sketchの操作を配信できる?
なぜrust
- Cのライブラリに依存すると事前に分かっていた
- ネイティブライブラリの関数を呼び出したい
- ネイティブライブラリの呼び出し定義コードを自分で書きたくない
- ネイティブライブラリからデータを直接受け取りたい
Go
Rust
- C++のあれがほしいって時大抵ある
- rubyのあれがほしいって時大抵ある
難しかったとこ
- 所有権とかライフタイムとか学習コスト高い
- moveされうる変数のポインタ
Rust本番投入をあきらめるためのガイドライン
本番投入のハードル
真似でごまかせないならどうする
基礎原理に従ってやる
- ノウハウのある言語との比較
- ランタイムなしで動くとはどういうことか
- 実行時にCPUやOSを隠蔽しない
- スクリプト言語の経験しかないとハードルになり得る
運用上必要な機能を整理する
- クックパッドの事例の場合
- ロギング
- エラーハンドリングとトレーサビリティ
- graceful shutdown
- シグナルのハンドリング
まとめ
つぶやき
- そういえば Node.js よりはエラーハンドリングしやすくて安全に I/O の多重化ができる言語として俺は選んだな
ポイントで導入するRust
なぜRustを勉強したか
- 毎年一つの言語を
- goはこの先使うこともありそうだしrustを
Rust導入のきっかけ
運用後
- みんなrustわからないから不具合で困った
- みんなもrust学んでくれた
Rustを使ったデータパイプライン
- Pyry Kontio(@GolDDranks)
- リクルートコミュニケーションズ
データパイプライン
- EVTLツールをrustで作った
- Extract, Validate, Transform, Load
- AWS Lambda上で動かしてる
なぜrust
- 速いから
- 厳しい型システムで安心
- メモリのコントロール
つらかったとこ
- コンパイル遅い
- Scalaよりは速い(というRust界定番の自虐?)
- 一部ライブラリは未熟
- 周りに書ける人がいない
Rustが適した分野
そのサーバー、三日前からRustだよ
- マイクロサービス
- 画像の処理
- C++で書かれてた
- 高負荷時に怪しい動き
- rustで置き換える
Rustと3種のDSL
以上の内容はhttps://ozaki25.hatenadiary.jp/entry/2018/07/03/220000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14