注目の言語Rust、開発現場でどう使われる?活用企業の現場に聞くVol.2

2021/11/11に公開

概要

2021/11/11に開催された下記勉強会のメモです
https://findy.connpass.com/event/227002/

パネルディスカッション

以下2社によるパネルディスカッション

  • キャディ株式会社
  • 株式会社LayerX

Rustとはどういう言語ですか?

  • 早くて安全人間に優しい
  • 所有権という概念が特徴的

https://www.rust-lang.org/ja
https://doc.rust-jp.rs/book-ja/

採用の経緯と背景

  • キャディ
    • コンパイル時に検査が強い、高速
      • Go, Rustが候補に残った
    • 社内により知識があった
      • webフレームワークはwarpを採用
      • 型があるとコミュニケーションコストが下がる
      • お金の単位などで型をつけている

https://docs.rs/uom/0.31.1/uom/

  • LayerX
    • 採用は3年くらい前
    • 暗号系のシステム開発(R&D)で使いたいライブラリがRustだった
    • SDKが充実していた

採用して感じたメリット・課題

  • キャディ

    • 環境構築が楽でビルドの再現性が高くオンボーディングコスト低い
    • 型が強い
    • 実行速度が速い
  • LayerX

    • (メモリ安全性、速度)
    • 設計のしやすさ
      • 型に振る舞いを定義していく感覚
      • traitによる抽象的な記述
    • cargoが優秀
      • ビルドツール、パッケージマネージャ
      • エラーメッセージにURL
    • テストも書きやすい

デメリット

  • キャディ
    • ビルド時間かかる、キャッシュが大きい
    • 発展途上
      • この辺はまだだなーと感じるところがある
    • 大きなフレームワークはない
    • Jupyterとかで気軽に使えない
    • そんなにデメリットと感じるものはない

Jupyterから使う方法あるっぽい?
https://qiita.com/m0riiiii/items/6b0561824c299dc7c4d2

  • LayerX
    • コンパイル遅い
    • 非対応のSDK、ライブラリ多い
      • Azure SDK for Rustはあるけどunofficial
      • Trino SDK for Rust (Presto)
    • 言語仕様が充実しており、かっこよく書けるゆえにチームの生産性低下になるケースがある
      • 他の人が読めなかったり
    • メジャーアップデートなどによる互換性
      • 非同期ランタイムとか(tokio)

どのように学べば良いか?

  • キャディ
    • 学習の難しさ
      • C++が書ければ
    • 公式の学習材が充実
      • ライブラリやドキュメントが中央集権的で情報に迷うことが少ない
    • 競プロなどもおすすめ

https://atcoder.jp/

  • LayerX
    • 初期学習コスト高い
    • 最低限を抑えて実際に実装していく
      • Rust by Example
      • コンパイルエラードリブン学習
      • Clippyのwarning

https://doc.rust-jp.rs/rust-by-example-ja/

よく使われるcrates(ライブラリのようなもの)

  • webアプリフレームワーク
    • actix-web
  • DB系
    • sqlx
  • ログ系
    • tracing
  • エラーハンドリング系
    • anyhow/thiserror
  • CLI系
    • structopt
  • HTTP Client
    • reqwest
  • GraphQL
    • juniper
  • その他
    • dotenv, once_cell, bincode

採用・育成観点

  • キャディ
    • 人口が少ない
    • オンボーディングコストはかかるし、もともと書ける人は少ない
    • Rust好きな人にとっては求人での人気要素になり得る?

https://github.com/fnwiya/japanese-rust-companies
https://www.itmedia.co.jp/news/articles/2108/02/news135.html

Discussion