3023
0
0

Rust勉強会

Published at July 3, 2018 8:58 p.m.
Edited at July 3, 2018 11:40 p.m.

Running Rust in Production

https://d-cube.connpass.com/event/90317/

ライブ動画変換でのRust言語活用事例

発表者:どようびさん from pixiv
(茂木さん)

  • pixiv sketch live
    • web RTCをつかってる
    • H.264のトランスコーダーをRustで
  • Rustのねじ込み方
    • は別の方に
  • 採用の経緯
    • ネイティブライブラリが必須だった
    • C言語をそのまま呼び出したい
  • C++ vs Go vs Rust
    • Goはポインタの扱いで厳しかった
    • Rustにはbindgenがある
  • よかったところ
    • valgrindのようなCのエコシステムがそのまま使える
  • はまったところ
    • ポインタで無効なアドレスががが
    • Cの関数マクロが呼べない
  • 学習コストは高い

Rust本番投入を諦めるためのガイド

発表者:KOBA789さん from クックパッド

  • JavaScript 13年
  • なぜ使いたいのか?
    • 趣味
  • なぜ使えたのか?
    • Hako 自動デプロイ機能
  • 採用の難しさ
    • 新しいが故の難しさ
    • 真似でごまかせない
  • Ruby vs Rust
    • クラッシュからのコアダンプ読み
    • CPUやOSが隠蔽されない
  • 運用上必要な機能を整理
    • ロギング
      • fluentdと組み合わせて自作
    • エラーハンドリング
      • エラーのバブリングが欲しい
  • デファクタスタンダードがない
  • スレッドとイベントループの使い分け
  • コンピュータ・サイエンスの知識が必須
  • graceful shutdown?

ポイントで導入するRust

発表者:Tommyさん from fablic -> rakuten

  • Rustを選んだ理由
    • 新しい言語を学びたかった
  • 趣味で2chまとめを作った
  • nickel, diesel, hyper, mocktio
  • 導入のきっかけ
  • Rakuma
  • Herokuで毎回 ruby のbundle installしていた
  • rustはわからん from 他の人
    • と思ったらチームからPRがきた!
  • Rust Test tips
    • DBを使うテストは、--test-threads=1が必須かも
  • 文字列操作に見るRubyとRustの比較

Rustを使ったデータパイプライン

発表者:Pyry Kontioさん from リクルートコミュニケーションズ

  • EVTL用ツール decchi
    • DBのデータをS3に移行したり、とってきたり
    • AWS lambdaを使っている(musl)
  • pythonでラッピングして、rustかけない人に対応
    • プラグイン機構を持っている
  • なぜRust?
    • pythonは型システムなくて辛い
  • つらい
    • コンパイル遅い
    • 周りに開発者がいない
  • いいところ
    • 安定性、パフォーマンス
  • 適した使い方をすれば最高の言語
    • でも押し売りは

そのサーバー、三日前からRustだよ

発表者: 原 将己 (@qnighy)さん from wantedly

  • なぜRustをつかのか?
    • 学んだことを活かしたい
  • マイクロサービスの住み分けができているGoが強い
  • refine-imageサービスがC++
    • ロストテクノロジー
    • Rustに移植したい
  • C++エンジニアがおおいわけではないからRustに移行しても怒られない
  • 明日からRustになる(3日前は。。。)
  • 退路を確保して、Rustに移行したのがよかった
  • actix-web
    • バックはhyperじゃない
    • unsafeが多い

Rustと3種のDSL

発表者:κeen (@blackenedgold)さん from Idein

  • DSL
    • 内部DSL
    • 外部DSL
  • DSLの使いどころ
    • ビジネスロジックなど
  • Actcast
    • IoTデバイスの管理
    • Swagger(Open API)を使っている
  • アクセス権限チェック
  • モデリング
  • Traitをうまく使う
    • 演算子オーバーロードは悪用しない
  • 諸刃の剣のマクロDSL
    • 第一級でないので扱いづらい
  • みぞの鏡の外部DSL
  • 外部DSL
    • 最後の手段
  • OpenAPIのRust対応が望まれる
    • いくらかあるが、まだ不便っぽい