(Translated by https://www.hiragana.jp/)
Rust で Web アプリケーションはどこまで開発できるのか - Speaker Deck
Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rust で Web アプリケーションはどこまで開発かいはつできるのか

Yuki Toyoda
May 28, 2021
71k

Rust で Web アプリケーションはどこまで開発かいはつできるのか

CyberAgent にておこなわれたカンファレンス「CA BASE NEXT」の登壇とうだん資料しりょうです。
https://ca-base-next.cyberagent.co.jp/sessions/can-we-build-web-applications-in-rust/

Yuki Toyoda

May 28, 2021
Tweet

More Decks by Yuki Toyoda

Transcript

  1. (a.k.a. yuki) furthermore, Coauthor of 『実践じっせんRustプログラミング⼊⾨』 Co-organizer of Rust.Tokyo &

    RustFest Global @helloyuki_ Yuki Toyoda is a Software Engineer @ Dynalyst & Next Experts in Rust
  2. Rustはシステムプログラミング⾔語 ていレイヤーをあつかう C/C++ なみ速度そくど メモリ安全あんぜんである RustはOSやコンパイラなど のていレイヤーのソフトウェア をあつかうために設計せっけいされた。 GCがない、機械きかい直接ちょくせつ あつかえるなどの理由りゆうから、

    C/C++なみ速度そくど実現じつげんでき ている。 ⾔語どく⾃の機能きのうにより、 メモリ安全あんぜんにコードをしょ くことができる。セキュ リティ向上こうじょう貢献こうけんできる。
  3. Rustはシステムプログラミング⾔語 ていレイヤーをあつかう C/C++ なみ速度そくど メモリ安全あんぜんである RustはOSやコンパイラなど のていレイヤーのソフトウェア をあつかうために設計せっけいされた。 GCがない、機械きかい直接ちょくせつ あつかえるなどの理由りゆうから、

    C/C++なみ速度そくど実現じつげんでき ている。 ⾔語どく⾃の機能きのうにより、 メモリ安全あんぜんにコードをしょ くことができる。セキュ リティ向上こうじょう貢献こうけんできる。
  4. Rustはシステムプログラミング⾔語 ていレイヤーをあつかう C/C++ なみ速度そくど メモリ安全あんぜんである RustはOSやコンパイラなど のていレイヤーのソフトウェア をあつかうために設計せっけいされた。 GCがない、機械きかい直接ちょくせつ あつかえるなどの理由りゆうから、

    C/C++なみ速度そくど実現じつげんでき ている。 ⾔語どく⾃の機能きのうにより、 メモリ安全あんぜんにコードをしょ くことができる。セキュ リティ向上こうじょう貢献こうけんできる。
  5. Rustはシステムプログラミング⾔語 ていレイヤーをあつかう C/C++ なみ速度そくど メモリ安全あんぜんである RustはOSやコンパイラなど のていレイヤーのソフトウェア をあつかうために設計せっけいされた。 GCがない、機械きかい直接ちょくせつ あつかえるなどの理由りゆうから、

    C/C++なみ速度そくど実現じつげんでき ている。 ⾔語どく⾃の機能きのうにより、 メモリ安全あんぜんにコードをしょ くことができる。セキュ リティ向上こうじょう貢献こうけんできる。
  6. A Language for the Next years Rust: A Language for

    the Next Years - Carol Nichols https://www.youtube.com/watch?v=A AdN U iU
  7. 充実じゅうじつしはじめたエコシステム サーバーサイドフレームワーク以外いがいにもライブラリが充実じゅうじつはじめている。 • serde:JSON パーサー • diesel:O/R マッパー • tonic:gRPC

    あつかう • juniper:GraphQL をあつかう • rusoto:AWS SDK(ちなみにせん⽇、公式こうしきが SDK をアルファリリースした) 🌟 必要ひつようなものはそろっている。あとは使つかうだけ。
  8. •EC じょうにアプリーケーションは存在そんざいする。 •シャードのかず調整ちょうせいして、DynamoDB への みアクセスを調整ちょうせいする Kinesis Data Streams。 •データを DynamoDB

    へ⼊れる。 •保存ほぞんきた失敗しっぱいや、保存ほぞん件数けんすうを RDS に保存ほぞんする。 アーキテクチャ
  9. •EC じょうにアプリーケーションは存在そんざいする。 •シャードのかず調整ちょうせいして、DynamoDB への みアクセスを調整ちょうせいする Kinesis Data Streams。 •データを DynamoDB

    へ⼊れる。 •保存ほぞんきた失敗しっぱいや、保存ほぞん件数けんすうを RDS に保存ほぞんする。 アーキテクチャ
  10. •EC じょうにアプリーケーションは存在そんざいする。 •シャードのかず調整ちょうせいして、DynamoDB への みアクセスを調整ちょうせいする Kinesis Data Streams。 •データを DynamoDB

    へ⼊れる。 •保存ほぞんきた失敗しっぱいや、保存ほぞん件数けんすうを RDS に保存ほぞんする。 アーキテクチャ
  11. AWS Lambda と Rust の相性あいしょう カスタムランタイム があり、連携れんけいらく。 メモリのフットプリ ントが⼩さい傾向けいこうに ある。使つかい⽤メモリも

    ⼩さくできる。 処理しょり速度そくどはやい = Lambdaでの ⾦がすくない 🐣 🚀 💰 つまり相性あいしょうがいいってこと
  12. Scala チームで Rust を使つかう • プロダクトの⼤部ぶんは Scala で記述きじゅつされている。 • Scala

    と Rust はき⽅がている部分ぶぶんおおい。 ⚠ うちのチームではこうだった、というはなしをこれからしますɻ
  13. Scala にある⽂法は Rust にもある いろいろあるリスト↓ •トレイトはおたがいの⾔語に存在そんざいする。 •パラメトリックしょうは Rust にも搭載とうさいされている。 •implicit

    を⽤いて実現じつげんするアドホックしょうは Rust ではトレイトで実現じつげんできる。 •パターンマッチは Rust にもある。 •for-yield やモナドを⽤いた実装じっそうは Rust ではできない。 •が、map や flatmap などの基本きほんてきなコンビネータは Rust でも使つかえる。
  14. async エコシステムが発展はってん途上とじょう •そもそも 2018 ねんまでまともな⾮同期どうき処理しょり基盤きばん存在そんざいしなかった。 •2018ねんごろに async/.await という構⽂がしるべ⼊された。 •さき⽇ようやく tokio

    が 1.0 に到達とうたつした。 •それにともなうライブラリがわ対応たいおうのアップデートが多々たたあった。 •…というはなしっていないとわかりにくいコンパイルエラーがはつ⽣し た。
  15. • Rust で⼀部いたものの、メンテできる⼈が退職たいしょく or 異動いどうなど でメンテできなくなってしまったという事例じれいをよくく。 • ⾃⾝も異動いどうひかえていたこともあり、Rust を使つかえる⼈を どうやすかなやんでいた。

    • Next Experts に就任しゅうにんしたタイミングで Rust ハンズオンを 実施じっしし、参加さんかしてもらうことで対応たいおうした。 知識ちしき伝播でんぱ必要ひつようせい
  16. まとめと展望てんぼう • Scala エンジニアは Rust に⼊りやすいかもしれない。 • Rust をやるなら AWS

    Lambda からはじめるのは おすすめできる。 • Rust のかつ⽤はこれからも期待きたいされる。