[レポート]Rustは面白いけど、私にとって本当に意味があるのか? #BOA201 #reinvent
データアナリティクス事業本部の鈴木です。
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はLambdaなどでコンテナを実行するようなケースにおいて、Javaよりもイメージが軽量になる傾向があることもやメリットとして紹介されました。
一方で、Rustはほかの多くの言語と異なり、コードを書いてコンパイルする際にプログラマが考えることが多いこと、学習時に少し根気がいることについてもお話がありました。ただそのおかげで不明瞭な点が減り、ほかの言語で起こるような問題を回避できることが分かりました。
Rustが面白い理由
Rustを使うことが面白い理由として、まずはメモリ安全性が挙げられていました。
メモリ安全性の重要性については、高リスクまたは高重度のCVEの約70%がメモリ安全性のバグに関連していることが報告されているそうです。Rustを使うだけでこのリスクが回避できるのであればとても強力です。
もう一つは、Rustはより良いソフトウェア開発を強力にサポートしてくれることでした。
まずRustは、開発における適切なガードレールとして、以下のような4点をサポートしてくれる点を挙げていました。
Rustを使う利点もあれば、コストになってしまう点もあることにも言及されました。
また、メモリを効率的に使えることは大きなメリットです。例えばLambdaで実行する際には課金に直接関わる要素なので非常に重要ですね。
価格に関する比較例ですが、Rustを使うとほかの言語を使っている場合よりLambdaのコストが低く済むケースがあることが分かります。
場合によっては大幅に使用するメモリを減らすことができるのは大きな魅力ですね。
事例の紹介
Rustが活躍している事例として、AWSの4つのケースを紹介がありました。
- CloudFrontのHTTP/3対応
- Firecracker
- Prime Videoクライアント
- S3のバックエンド
我々が日々利用しているサービスやアプリケーションで既にさまざまな活躍をしているのに驚きました。
Rustの学び方
Rustを学ぶコンテンツとして、動画ではAWS関連で2つ紹介してもらえました。
1つは、オープンソースに興味がある人向けに、主要なプロジェクトであるBottlerocketとFirecrackerでRustが使われていることを紹介頂きました。
また、AWS Developer Centerでは直近でRust向けのコンテンツが登場しているそうです。(これは最後にで紹介します。)
職場などで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上のサービスに取り入れてみるとよさそうですね。