【増枠】2024年Rust Webアプリ開発の現在

「【増枠】2024年Rust Webアプリ開発の現在」に参加してきました

【増枠】2024年Rust Webアプリ開発の現在
https://findy.connpass.com/event/319829/
に参加してきたので、そのときの聴講メモ

目次

2024年Rust Webアプリ開発の現在

冒頭

3年前にも似たような話をしたが、3年経って結構アップデートがあるので、今回その話をする。
今回話すことは、会社関係ではなく個人的な発言

なぜWebアプリ開発にRustを採用するか、したいか?

そもそもRustでバックエンド開発できる?
 → 十分できる!

Rustを使う理由

メリット

  • リソース効率の良さ
    • 実行速度が速い
      • アプリケーション実行速度
        • プログラムの実行速度
    • メモリ使用量が少ない
      • メモリ管理が細かいとこまでできる
    • つまりパブリッククラウドとの相性が良い
      • 利用によって課金される料金体系なので、実行速度やメモリ効率で費用を抑えられるかも
      • AWS Lambda の起動時間だと、いまのところかなりスコアが高い
        • https://maxday.github.io/lambda-perf/
  • チーム開発の体験の良さ
    • 充実したツール
      • build, packaging ツールとして、 cargo 一択でよいので、他の言語のように迷わない。
    • 型システム
      • ほどよく自由度が絞られた型付け
    • 運用が楽
      • ランタイムエラーが体感少ない
      • メモリスパイクが少なくて、利用リソースが予算しやすい

どうやってRustで組み上げるか

必要なライブラリの知識

ライブラリが多くて、迷う問題
→ 登壇者の方のおすすめを今回紹介

  • serde
  • tonic
  • async-graphql
  • axum
  • tokio
  • actix-web
  • warp
  • poem
  • async-std
  • smol
  • sqlx
  • diesel
  • SeaORM
  • tracing
  • opentelemetry-rust
  • reqwest
  • aws-sdk-rust
  • dtolnay
  • anyhow
  • thiserror
  • async-trait

2024年以降の注目

  • Loco
  • Pavex

まとめ

Webアプリの実装について、登壇者の方が記事書いたので、よければどうぞ
https://developers.cyberagent.co.jp/blog/archives/31110/

Q&A

Q1. 公開して頂いているstock-metricsのDIコンテナのソースコードを読んでもなかなか理解が難しいです。読みとく理解するのに参考になるものなどありますか。また、新たなフィールドに挑戦されましたが、今後のRustへの関わり方などあれば教えてください

A. OSS 作ったり、コントリビュートしたりするとよいかも。

Q2. Rustによるwebアプリ開発で、他の言語に比べて特に大変だったり難しいと感じる点があれば教えてください。

A. あまり他言語と比べて難しいと思ったことはない。強いていうなら、非同期処理周りで凝ったことをしたいと悩むかも。

Q3. 業務でRust Webバックエンド書いてる方の割合気になる

A. 会場の方だと3割くらい

Q4. tower crateだけで、アカウントのログインで必要な認証と認可も実装できるのでしょうか?

A. たぶん無理?どういう認証認可をするにもよるかも。

Q5. Rustのビルドが重く、ノートPCでの開発は厳しいかなと思っているのですが、yukiさんや周りの方はRust開発にノートPCを利用されていますか?

Q6. ホットリロードって難しい?

A. ちょうどいい記事がある。
https://zenn.dev/collabostyle/articles/c4dc92afe32d86

聴講しての感想

自分は Rust 全然まだ知らないんですが、
まず勉強会自体の参加者が 500 名を超えてて、興味ある人がかなり多いんだなぁと思った。
Rust でバックエンド開発は十分できる!と登壇者の方がおっしゃってたり、会場の方の3割くらいは Rust でバックエンド開発をしたことがあるとのことで、今後さらに開発事例が増えてくるのかもしれない。
build や packaging のツールは cargo 一択でよいので悩まないとのことだったが、やっぱり今後さらにエコシステムが充実してくると他のツールで悩みだしたりするんだろうな?(いい意味で)と思った。
Rust は、他の言語でいうライブラリとかモジュール的なもののことを「クレート」と呼んでるということなのかな。
と思って調べたら解説してくれてる記事があった。
https://zenn.dev/shinyay/articles/hello-rust-day043
PHP や Ruby や JS でいうところの Composer や Gem や npm で入れたりするやつが Rust でいうクレートで、class が Rust でいうモジュールという関係?(まだちゃんと分かってない)
また、登壇者の方が挙げてたライブラリもたくさんあったり、悩むくらいライブラリが充実しだしてきてるというのも、Rust 界隈全然知らなかったけど、すごい活発なんだなぁと思った。(小並感)

LT1「データサイエンスやデータエンジニアリングの求人サイトの個人開発」

資料


Rust を勉強していて、さらに Rust で求人サイトを作っている

求人情報のスクレイピング

Notion の API を使ってる
scraper というライブラリがあって、それをつかっている。

Web開発

これらの技術を使って開発を進めている

  • yew
  • None
  • json
  • Cloudflare Pages
  • Github Actions

ブログ開発

マークダウンでドキュメントを管理している

聴講しての感想

まだRustを学習し始めてる段階で、更にプロダクトも作り始めていてすごいと思った。
DB はひとまずまだ json だけどなんとかなっているというのも、Rust の恩恵を受けてたりするのかな。

LT2「仕様策定中のプロトコルをRustで書いてブラウザで動かしてみた」

資料

Media over QuicTransport

あまり聞きなれないかもしれないが、最近策定され始めたプロトコル
これは何かというと、メディア配信プロトコル。
HLS(Youtubeとかで使われてる)やWebRTC(GoogleMeets とかで使われている)を安定させられる。

WebAssembly

ブラウザで動かし、JS から Rust を呼び出せるようにしている

感想

今回の構成にしたことで、二重実装が減ったので良かった。

聴講しての感想

結構玄人向け?の内容っぽくて自分は全然分からなかったけど、メディアプロトコルとかそういう速度がとても求められる場面だと、やっぱりRustの良さが際立ってくるのかな。

toggetter

https://togetter.com/li/2390635

イベントに参加してみての感想

Rust 全然まだ分からないので何かを理解したとかではないのですが、単語とか雰囲気とかがなんとなく聞けて良かったなぁと思った。Rust 界隈も覗いてみたら、結構活発にコミュニティとかあったりするのかな。
あと内容とあまり関係ないかもだけど、自分は勉強会のオフライン参加を最近あまりしてませんでしたが、懇親会の写真とか上がってると、またオフライン参加してみたいなとか思いました。人と直接会ってする懇親会での話とかも楽しいですよね。

- PR -