こんにちは! エウレカで Back-end エンジニアとして働いてる emahiro です。

7/16 に CyberAgent 社の helloyuki_ san をお招きして「Rust のハンズオン」をオンラインで開催しました。

開催してみてどうだったか?

実際に参加してくれたメンバーの声を乗せておきます。

言語経験が少なくてもとてもわかりやすく説明していただけました
他の言語と比較しながら、また、参加者とコミュニケーションをとりながら進めていただけたので、理解しやすかったです。
多様な書き方ができるにもかかわらず、実行速度が変わらない点がとても魅力的でした!(これで怒られなくて済む) (by satorunoosheie)
とても面白い内容でした!
まずコード書く、コンパイラに怒られてから直していくと自然に安全でハイパフォーマンスな成果物ができるってのが印象的でした!
勝手に関数型言語のイメージがあったのですが、手続き型でもかけるとのことなので割とハードル低く始められそう (by ogady)

私自身、Rust は知ってはいたものの、詳しいことは知らなかったと同時に、やはり初心者にはとっつきづらい(※)と思っていた側面もあり、今回サポートを受けながら Rust を実際に書いてみたことで言語そのものの特性や魅力を理解することができました。個人的には普段業務で使っている Go 同様、Rust も公式で提供してるツールが充実しており、エコシステムがすでに整備されているのは、安心して使えるポイントだなと感じました。

また、Rust 特有の概念で、最初につまづくポイントと言われてる「所有権」と「借用」についてもハンズオンの中ではわかりやすく説明してもらい、すんなり頭の中に入ってきました。この部分の説明は社内の参加者からも好評でした。

※ Rust を理解するにはスタックやヒープと言ったメモリに関する基礎知識について、所有権周りと絡めて自覚的にコントロールする必要があるため。

エウレカで Rust って使うの?

今回のエントリを読んで気になるのはおそらくこの点かなと思いましたので主観も交えたコメントを記載しようと思います。

今回のハンズオンは、有志メンバーを集めての小規模な会でもあったので、このハンズオンをやったからといってすぐに商用環境で Rust を使う、という意思決定はされないと思います。

エウレカの主力事業はクライアントアプリケーションを除いて 、そのほぼ全てのアプリケーションが現状 Go で実装されており、Go 以外がメインストリームに乗ってくることは今すぐは考えづらいです。

しかし、技術は常に最適なものを選択する、という文化はあるので適材適所で使用される日も来ると思います。実際今回のハンズオンは ML チームのエンジニアのリクエストがきっかけになってるということもあり Rust がより好まれるユースケースは社内にあるのも事実です。

加えて今回のハンズオンのまとめにもありましたが、Rust はコンパイラが非常に強力で、コンパイラの指示通りに実装するだけで、高速で安全なアプリケーションを書くことができるので、この特性を生かすことのできるユースケースを探して Rust を使って改善していく、という可能性もゼロではなさそうです。社内の技術選定の色を考えるとあくまでメインストリームでの全面採用は難しいですが、サブシステムや適材適所で小さく使う、ということは広がっていくのではないかなと思いました。


はじめに

※ この記事は Eureka Advent Calendar 2020 の21日目の記事になります。

こんにちはエウレカでサーバーサイドエンジニアとして働いてる江間(@emahiro)です。普段は Pairs の開発や運用をメインにやりつつ、苛立つ手運用プロセスを(かなり強引に)改善したり、そういう謎運用を光の彼方に消し飛ばすためのあれこれを飯の種に …

Hiromichi Ema

Gopher worked at Eureka, inc.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store