[レポート]Rustは面白いけど、私にとって本当に意味があるのか? #BOA201 #reinvent

2023.01.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の鈴木です。

AWS re:Invent 2022の、セッション番号BOA201の『Rust is interesting, but does it really make sense for me?』を聴講したのでレポートです。

セッションについて

登壇者

Tim McNamara, Senior Software Engineer, AWS

Session level

200 - Intermediate

Session type

Breakout Session

動画

セッション概要

Rustとそのますます大きくなるコミュニティが主張する最初は驚く主張について検証します。Rustは、Stack Overflowが毎年行っている最も愛されているプログラミング言語賞を、7年連続で受賞しています。しかし実際のところRustはどういいのでしょうか?このセッションでは、AWSのソフトウェアエンジニアで、 『詳解Rustプログラミング』(※ Rust in Action)の著者である、長年Rustに携わってきたTim McNamara氏と、Rustの魅力、そしてより重要な、Rustをいつ使うべきなのかについて学びます。

発表概要

動画ではTim McNamara氏によるプレゼンテーションからRustについて学ぶことができました。発表概要のご紹介として、分かりやすさのため、4つのセクションに分けてご紹介します。

特徴の紹介

まずはRustの特徴の紹介です。Rustの際立った特徴は、C++やPythonなどと比較しつつ、開発者がメモリレイアウトを完全に制御しながらも、完全な安全性を維持できることと紹介されていました。

Rustの位置づけ

Rustの関数型プログラミングの側面、並列プログラミングを容易に実装する方法があることや、ハッシュマップやパターンマッチについて簡単に言及しました。

関数型・並列プログラミングの要素

パターンマッチ

また、RustはLambdaなどでコンテナを実行するようなケースにおいて、Javaよりもイメージが軽量になる傾向があることもやメリットとして紹介されました。

一方で、Rustはほかの多くの言語と異なり、コードを書いてコンパイルする際にプログラマが考えることが多いこと、学習時に少し根気がいることについてもお話がありました。ただそのおかげで不明瞭な点が減り、ほかの言語で起こるような問題を回避できることが分かりました。

Rustが面白い理由

Rustを使うことが面白い理由として、まずはメモリ安全性が挙げられていました。

答え1

メモリ安全性の重要性については、高リスクまたは高重度のCVEの約70%がメモリ安全性のバグに関連していることが報告されているそうです。Rustを使うだけでこのリスクが回避できるのであればとても強力です。

CVEへの影響

もう一つは、Rustはより良いソフトウェア開発を強力にサポートしてくれることでした。

答え2

まずRustは、開発における適切なガードレールとして、以下のような4点をサポートしてくれる点を挙げていました。

The pitch

Rustを使う利点もあれば、コストになってしまう点もあることにも言及されました。

Rustの評価

また、メモリを効率的に使えることは大きなメリットです。例えばLambdaで実行する際には課金に直接関わる要素なので非常に重要ですね。

メモリ効率

価格に関する比較例ですが、Rustを使うとほかの言語を使っている場合よりLambdaのコストが低く済むケースがあることが分かります。

メモリ・価格の比較

場合によっては大幅に使用するメモリを減らすことができるのは大きな魅力ですね。 

メモリ使用量

事例の紹介

Rustが活躍している事例として、AWSの4つのケースを紹介がありました。

  • CloudFrontのHTTP/3対応
  • Firecracker
  • Prime Videoクライアント
  • S3のバックエンド

我々が日々利用しているサービスやアプリケーションで既にさまざまな活躍をしているのに驚きました。

CloudFrontの例

Firecrackerの例

Prime Videoの例

S3バックエンドの例

Rustの学び方

Rustを学ぶコンテンツとして、動画ではAWS関連で2つ紹介してもらえました。

1つは、オープンソースに興味がある人向けに、主要なプロジェクトであるBottlerocketとFirecrackerでRustが使われていることを紹介頂きました。

AWS GitHubページ

また、AWS Developer Centerでは直近でRust向けのコンテンツが登場しているそうです。(これは最後にで紹介します。)

AWS Developer Center

職場などでRustを取り入れていくコツとしては、自分が好きな言語で1・2日で書けるようなプログラム(特にビジネスロジックについてよく理解しているものなど)をRustで書き直してみて、プロトタイピングから始めていくことでした。また、プロトタイピングやツール作成にRustを取り入れてみて、自信やチームのRustに対する自信を高めていくことも大切で、いきなりコアアプリケーションを実装することを目的にするよりは、そういったところから始めていくとよいようです。

最後に

今回はre:Invent2022で行われた『Rust is interesting, but does it really make sense for me?』のレポートでした。

なお、途中で紹介があったAWS Developer CenterのRust向けコンテンツは以下のようでした。SDK for RustでAWSのサービスへアクセスできますし、LambdaやFargateからRustを実行もできるので、手のつけやすいところから、試しにRustをAWS上のサービスに取り入れてみるとよさそうですね。