【イベントレポート】Rust(プログラミング言語)エンジニア勉強会~最新情報・活用事例LT~

Rustエンジニア勉強会MV

こんにちは!TECH Street編集部です!

2023年11月24日(金)に開催した、 「Rust(プログラミング言語)エンジニア勉強会~最新情報・活用事例LT~」のイベントレポートをお届けします。今回は3名のRust言語を扱うエンジニアが集まり最新情報や事例LTを発表します! 

 

登壇者は
増田智明さん/Moonmile Solutions代表
山本 一将さん/ユニークビジョン株式会社
松本健太郎さん/株式会社estie

早速、内容を紹介いたします!

まずは、Moonmile Solutions代表の増田さんの発表です。

Rust海外事情について

Rust海外事情について画像1

www.slideshare.net

増田:本日は下記の2点をテーマにお話します。

・海外でのRust活用の事例紹介
・Rust活用の範囲の解説

主な活用事例―米国企業サービス編―

Googleの事例

GoogleはAndroidとLinuxカーネルの開発にRustを採用しています。特にメモリ安全性に関連するバグを減らすことが目的です。

Rust海外事情について画像2

 

Microsoftの事例

Microsoftはサイバー戦争の深刻化を背景に、より安全なコーディングを目指したRustの活用をしています。 

Rust海外事情について画像3

 

Amazonの事例

AWSはエンジニアによるRustの使用を推奨しており、特にエネルギー効率の高さを大きな利点としています。

Rust海外事情について画像3

 

Meta(Facebook)の事例

Metaは高いパフォーマンスが要求されるバックエンドサービスの開発にRustとC⁺⁺を使用するようにエンジニアに推奨しています。

Rust海外事情について画像4

 

主な活用事例―各国編―

Hawaei(中国)の事例 

Hawei(中国)ではRustに基づく次世代の仮想化プラットフォーム「StratoVirt」の開発を行い、化学計算用の多次元配列演算ライブラリの分析と実践を行っています。
またTVM Rust RuntimeとWASMサンドボックスを用いたAIモデルも実行されています。

Rust海外事情について画像5

 

Siemens(ドイツ)の事例 

IOT2040はSiemensによって開発された産業用IoTデバイスで、データを取りこぼさないようにするために、Rustが使用されています。 
S7 Rust library

Rust海外事情について画像6 

Tezos(フランス)の事例 

スマートコントラクトやDapps(分散型アプリケーション)の開発・利用に適した性能を持つブロックチェーンプラットフォームTezos(フランス)。金融系のブロックチェーンも当然スピードが早い方がいいので、Rustが活用されています。

Rust海外事情について画像7

 

Rustの活用範囲

ここからはRustの活用範囲の事例を紹介します。まずはWebAssemblyでの活用についてです。

 

WebAssembly

高性能ウェブアプリケーション
Rust WebAssemblyは、画像処理や複雑な計算など、JavaScriptでは効率が落ちるような集中的な計算を必要とするタスクに最適です。ゲーム開発において、Rust WebAssemblyは、ウェブベースのゲーム、特にグラフィックスのレンダリングやゲームの物理処理など、パフォーマンスが重要な部分の記述に活用されています。

暗号化とセキュリティ
Rustが重視する安全性とWebAssemblyのサンドボックス実行環境を活用して、Rust WebAssemblyは暗号とセキュリティのアプリケーションに採用されています。また、ブラウザ内で機械学習アルゴリズムをネイティブに近い速度で実行するため、インブラウザのMLアプリケーションにも適しています。

IoTとエッジ・コンピューティング
IoTとエッジ・コンピューティングの領域では、Rust WebAssemblyにより、軽量で高性能なアプリケーションをブラウザで直接実行できます。リソースが限られたIoTデバイスにとって非常に重要です。

 

Edge Computing

また情報を生み出すデバイスと、その情報を利用するユーザーに近いところに情報の保存場所と計算能力を配置したプロセスであるEdge Computing では

・レイテンシーの低減
・帯行幅の節約
・プライバシーとセキュリティの強化
・リアルタイムの処理

という4つのメリットからRustを活用しています。

Rust海外事情について画像8

また、一般的な利用シーンとして自動運転技術での活用があります。

 

自動運転技術

Rustは、主にその効率性とメモリ・リークやレース・コンディションに対する組み込みの安全性により、自動車ソフトウェアにおいてCやC⁺⁺のような言語に代わる良い選択肢と考えられています。これらの特徴により、Rustは機能安全性とセキュリティが最優先される自動車アプリケーションに適しています。

 またIoT利用という点で工場内におけるRustの活用が挙げられます。

Rust海外事情について画像9

これもC言語を直接使うよりも、Rustに組み替えていく流れがあります。
このように幅広い利用範囲でRust言語は活用されています。
 
増田さん、ありがとうございました!
続いては、ユニークビジョン株式会社の山本さんの発表です。

 

ユニークビジョンのRust活用事例と導入検討の勘どころ 

ユニークビジョンのRust活用事例と導入検討の勘どころ画像1

speakerdeck.com

山本:「ユニークビジョンでのRust活用の紹介」「Rust採用後のメリット/デメリット」をお伝えしたいと思います。

ユニークビジョンのRust活用の紹介

弊社は「技術でお客様の問題を解決すること」をモットーとしており、メインのサービスとしてソーシャルメディアを活用して企業のファンを増やす「Beluga」シリーズを開発して提供しています。

ユニークビジョンのRust活用事例と導入検討の勘どころ画像2

下図はお客さんが何かモノを知ってから、購入するまでのステップを示しているのですが、 「Beluga」シリーズでは、このそれぞれのステップでブランドとして広告を楽しくするようなツールを提供しています。

認知から購入までのパネル図

 こういったツールの価値が評価されて国内に7社のみのXのマーケティングパートナーや国内4社しかないLINE社のパートナーにもなっています。

そんな弊社ですが、Rustには力を入れています。Rustを採用して6年が経ちましたが、「Rust Tokyo 2023」のカンファレンスでは、2年連続でスポンサーをさせていただきました(2022年はシルバースポンサー、2023年はゴールドスポンサー)。

ユニークビジョンの技術スタック

では、弊社がどれくらいRustを使っているのかというと「Belugaキャンペーン」や「Belugaスタジオ」では、部分的にRustを採用しており、後発のシステム「Belugaキャンペーンfor LINE」などはすべて、バックエンドはRustを採用しています。

ユニークビジョンのRust活用事例と導入検討の勘どころ画像2

その中でも「何をしているか」というのを下記の図にまとめています

ユニークビジョンのRust活用事例と導入検討の勘どころ画像3

私たちは基本的にAWSでモノを動かしていますが、コンテナベースやサーバーレスの環境でもRustを使っており、Rustで多くのことを実現している会社だと思っています。 

Rustを使う理由

では、なぜRustを使っているのか。それは下記の3点が挙げられます。

・パフォーマンスが重要なシステム
・コンパイラとエコシステムが優秀
・面白そうな言語
 
特にこの3点の中で「面白そうな言語だから」というのが一番の理由でそれは、弊社CTOが示しています。「CTOがやってみたかった」という理由で採用しました。
社内でも議論がありましたが、「やるからにはしっかりやろう!」ということで、取り組みをしてきて6年が経ちます。

主要な取り組み図

 

当初Rustはまだまだ未成熟だったため、ライブラリがないことも多々ありました。そういうものはとにかく自分たちで作って公開するという姿勢でいました。そして学ぶだけではなく、アウトプットする場も大切にしています。
 

ユニークビジョンの開発体制

 

ユニークビジョンには主要なプロダクトは3つありますが、その3つがそれぞれプロダクトの開発チームを持っています。チーム感の調整がないためリリースまでの時間が短縮できることがメリットですが、ノウハウの共有という課題がありました。
そこで、ユーザーグループを発足しました。

ユーザーグループの体制図

 

各チームのRustが得意な人が集まって、Rustに関する議論を進めることにしました。 そして教育体制の構築も行いました。

教育体制について

Rustの理想の実装について議論をした人がチームに持ち帰ってペアプロなどをして、チーム全体のRustの技術力を高めていきました。もちろん入社時にはRust未経験者という人もいましたが、そういう人がRustのプロジェクトに入っても困らないようにする体制を作り上げました。
 
そして、必要であればクレートを作って公開します。
 

ユニークビジョンのRust活用事例と導入検討の勘どころ画像4

コミュニティにも貢献しながら、「とにかくRustがもっと開発しやすくなるような活動」もしています。
「Rustを使っている会社がもっと盛り上がっていかなければ!」という思いのもと、勉強会も開催しています。こういった場を作ることでRustのノウハウをインプットし、コミュニティに貢献してアウトプットすることでどんどん循環させる取り組みを6年間しています。

Rust採用のメリット・デメリット

さて、その運用の中で我々が感じてきたメリット、デメリットをお伝えします。

Rustを使うメリット

「とにかくメモリ効率が高く安定していて、Rustは長期稼働に向いている」と感じます。
また長く使っているからこそ「保守性が高い」ということも分かりました。
それと、エンジニアの採用にも大きく寄与しています。弊社はまだ知名度の低い会社ですが、Rustを使っているということが認知されていて、Rustを使いたいからと面談を受けに来るエンジニアもいます。

ユニークビジョンのRust活用事例と導入検討の勘どころ画像5

 

Rustを使うデメリット

世の中にRustの情報が少ないので、調べても分からないことが多い点はデメリットです。開発の時間を考えると、コンパイルの時間はボトルネックになっていると感じます。
 

ユニークビジョンのRust活用事例と導入検討の勘どころ画像6

 それと「 他の言語で実装しているときはやらなくてもいいことを、Rustではやらなくてはならない」ということはよく発生します。これはいろいろなことをやろうとすると、ぶち当たる壁だと思います。

Rustの導入検討時に確認したいポイント

まずは「一度小さく始めてみようかな」くらいの気持ちでRustを採用されてみても良いかと思います。その際に「システムの寿命」「改修の頻度」「要求される性能」の3点を採用までに検討するポイントとしてください。


システムの寿命
メモリリークやバッファオーバーフローを気にしなくて良いので安定・安全が求められる寿命の長いシステムだとメリットが大きい。

改修の頻度
最初に動くものが出来るまでの時間は軽量プログラミング言語が勝るが、変更を加える度に型安全のメリットが活きる。

要求される性能
高スループットが要求される場合にはインフラ費用が削減できる可能性がある。
 
Rustは意外と愛されており、前途の通りエンジニアへの採用効果は期待以上でした。
「やってみたい」だけで採用してみても悪くないと思います。


山本さん、ありがとうございました。
続いては、株式会社estieの松本さんの発表です。

 

estieのRust活用の紹介

estieのRust活用の紹介画像1

松本:今回は「estieがどのようにRustを使っているか」「Rustを採用するためにはどうすればよいか」をお伝えできればと思います。
 
早速結論となりますが、なぜestieでRustを使っているかというと

estieでRustを使う理由

・Rustがいい言語だから
 標準パッケージマネージャのCargoがとても使いやすい
 読みやすいエラーメッセージ

・安全に開発できる言語だから
 書きやすい型定義
 
という2点が挙げられます。
この理由をestieの事例を元に詳しく紹介します。

estieのRust活用の紹介画像2

 

estieのRust活用背景

estieのRust活用状況をご紹介する前にestieのメンバー構成とサービスについてご紹介します。
estieは不動産業界出身者とテック業界出身者が在籍するハイブリットなチームでありプロダクト開発人材が多いのが特徴です。主に商業用不動産業界向けのSaaSを開発しており、いちばん使われているプロダクトは「estie マーケット調査」です。

これは、ビルの賃料やどのような広告が出ているかなどを可視化することが可能です。このプロダクトが出てくる前は、口頭や紙媒体でやり取りをしていたため業界には画期的なプロダクトとして現在も評価されています。
 

estieの歩みと今後の取り組み


 私たちは1つのプロダクトだけではなく、商業用不動産業界のバリューチェーン全体にプロダクトを提供しようとしています。オフィスなどの不動産の領域からビジネスを始めましたが、それだけでなく様々なアセットにも手を広げていて、「不動産に関わるのすべてのビジネスが、高度に連携されたestieのシステム上で行われる」という未来を作ろうとしています。
 

主に使用している開発ツール

estieでRustをどう使っているか

ではestieでRustをどう使っているのか。
estieではWebアプリのAPIサーバをRustで書いています。

estieのRust活用の紹介画像2

各種連携周りのcrate(ライブラリ)も揃っています。

estieのRust活用の紹介画像3

 
では内容を詳しく見ていきます。

我々は、actix-webというフレームワークを使っています。左側のソースコードのようにパスと処理を書いて、サーバー設定したら動きます。(下図参照)これで、RustでWebアプリケーションを書くことができます。

actix-web:Webフレームワーク

続いて、sqlxというcrate(ライブラリ)を紹介します。これは、DBとの接続をいい感じにしてくれるもので、コネクションをはってSQLを書いて、クエリを実行すると結果が返ってきます。

sqlxの接続連携


sentryなど外部のサービスを使うものも、最近はRust用のSDKを公式が出してくれることもあります。もし提供されていなくてもAPIが公開されていれば、RustでAPIをたたくだけなのでそんなに難しくないと思います。

estieのRust活用の紹介画像3


 ということで、私たちはいろいろなライブラリを使用しています。

なぜRustを使っているのか

なぜなら、estieは「コンパウンドスタートアップなので都合よく使えるから」というのが第一に挙げられます。

私たちは不動産のデータを集めながら、それをプロダクトの中で連携させて全体として価値を出すプロダクト群を開発しているので、プロダクト間のデータをやり取りするAPIさえ決まっていれば、その中で様々な言語を使って開発することが可能です。そのため、気軽にRustを採用できたという背景があります。

また、「Rustは難しい」とよく言われますが、それは「Rustではなくプログラミングの難しさなのでは?」と思う場合があります。他の言語でも、「その言語特有の気をつけなければならない部分」を考えてプログラミング出来る人がestieに集まっている印象です。
 

estieのRust活用の紹介画像4

複数のプロダクトがあるだけでなく、それぞれが密に連携しあってそれぞれ価値を高め合っているような構造になっています。

estieのRust活用の紹介画像1

マルチプロダクトスタートアップとコンパウンドスタートアップ


Rustの良いところは型定義を柔軟に書けるので、複雑なデータを扱うのに都合がいい点です。

例えば、オフィスの賃料データの場合、「坪単価いくら」「月額いくら」「要相談」「不明」などデータの形が決まっていないことがあります。そのような場合、「坪単価」と「月額」の場合は値を持っているけど、「要相談と不明」の場合はただ型を持っているだけで具体的な数値のフィールドはいりません。
そういう型をこのように柔軟に書けるので便利です。

estieのRust活用の紹介画像5

  それと、嬉しい文法も結構あります。例えば、

・match文
・Option型:Some(_),None
・Result方:Ok(_),Err(_)
 
などは、書きやすく便利な文法だと思います。

柔軟に書ける嬉しい文法

estieのRust活用の紹介画像6


またRustの標準パッケージマネージャである「Cargo」がとても使いやすいです。
 

Cargoの標準のパッケージマネージャ


みんなが同じパッケージマネージャを使っていて、いろいろなタスクをみんなが同じコマンドで実行できるというのが便利だなと思います。
 
最後に、「コンパイラが親切」という点も紹介したいと思います。
例えば下図のように、yの変数が定義してあるけれども使われていない場合、「使われていないけれども、’_y’としたらどうですか」という警告を、位置を示しながら出してくれます。このように、コンパイラに教えられながら勉強ができる言語だと感じます。

estieのRust活用の紹介画像7

Rustでの開発をはじめるには

まずはツール類からはじめてみるのも良いですし、Rustを使っている会社に転職することもお勧めです。

もしくは、競技プログラミングで使ってみることも良いかと思います。ゲームAIのコンテストは、実装内容の複雑さと実行速度が大事という点で、Rustにメリットがあります。それに、「ロジックが間違っているのか、そもそも方法が悪いのか」を判断する時に、少なくともロジックは間違っていないということをRustだと担保しやすいと思います。

 

estieのRust活用の紹介画像7

 

松本さん、ありがとうございました!
続いては、Q&Aコーナーです。

 

Q&Aコーナー

続いてQ&Aコーナーであがった質問を紹介します。

(Q)Cargoのworkspaceはどのように区切ってますか?

山本:rust-analyzer の Cargo.toml を参考にしていて、内部クレートについては
members = ["crates/*", "api"] のように crates というディレクトリにまとめています。

松本:弊社は横並びです。本体のsrcの横にapiとかauthとか。

 

(Q)松本様は現在もRust書かれてる感じですよね、新しい情報収集とかどうされてますか?

松本:同僚がリリースノートを読むイベントを開いてくれているのでそれを見たり、RustプログラマーのXをフォローするようにしています。

 

(Q)クレートの選定とか、どういう役割・体制で推進されているのでしょうか?専門の部署あり?各プロダクトチーム毎?

松本:スタッフエンジニアのkenkooooが標準を定める動きをしてくれていますが、各チームで機動的に選定しています。

 

(Q)estieさんからも社内でのRust学習話があればお聞きしてみたいです

松本:Rustの質問をするチャンネルがあります。趣味で書いたり、OJT的に覚えたりするメンバーも多いです。

 

(Q)Rustは言語の癖が結構あるなと思っています。Pythonをメインで使いながらRustも勉強してみようとなったときに苦戦しました。。結局慣れや覚えてしまえばよいのですがユニークビジョンさんでは社員の学習時間を月にどのくらい設けていますか?

山本:明確に学習時間として設けられているのは月に1度、最終金曜日に3時間設定されている「自己研鑽フライデー」という制度だけです。【制度紹介】 自己研鑽フライデー
あとは業務を通して学んでもらったり、週に1度の社内技術勉強会で他の人の発表を聞いて学ぶ、という感じですね。

 

(Q)社内でRustを書ける人間に育つまでにどれくらい時間かかりましたか?書籍やドキュメントなどはどちらを参考にしましたか?

山本:業務で既存のシステムに改修を加えるレベルであれば、弊社の場合は割とすぐに育つかなと感じています。会社の本棚にも Rust の本はありますが、実際のコードと Web 上の情報、コードレビューやペアプロなどの仕組みを通して学んでいく人が多いと思います。

 

(Q)RustでWebフレームワークやORM(Object Relational Mapping)などは どんなものを利用しているか気になります。 (技術選定で気を付けている部分などあれば知りたいです)

山本:Webフレームワークは ActixWeb や Axum を使っています。ORM は使っておらず、postgres をベースにしたクレートを使って生のSQLを書いています。
技術選定ではメンテナンス状況や安定性など気にしていますが、すべてのチーム・プロジェクトをコントロールするのは難しいので細かいところでは割と自由に選ばれていると思います。

 

(Q)〇〇が強いエンジニア、の集まりというのはすごい。となると、中途メインですか?新卒が学べる場がある場合は、Rustの社内学習・個人学習のポイントを聞いてみたい。

山本:横断チームには当時新卒1年目のメンバーも参加していました。
もともと趣味でRustを学んでいたらしく、とても詳しくて熱意もあったので参加してもらいました。
新卒に限らず、業務で初めてRustを触る人はコードレビューやペアプロを通してサポートしています。

 

(Q)Rust得意な人の会で出てきて横展開できた例なにか教えていただけませんか

山本:社内で書き方が定まっていなかった部分について、ユーザーグループでクレートを開発して展開することでルールが定まっていったケースなどあります。細かくは色々、整備が進んでいます。

 

(Q)「面白そう」最高ですね、山本さんご自身も「面白そう」と感じる点があればぜひお聞きしたいです。

山本:個人的には継承という機能を持たなかったのは素晴らしいと感じています。面白いと思います。

 

(Q)社員の5割のエンジニア、全員Rust使いですか?

山本:全員ではないですが、ほとんどのメンバーが少なくとも1回は Rust を触ったことがあると思います。

 

(Q)ブランド体験を作る、本題からそれますがむっちゃ気になります。

山本:ぜひ、事例など見て頂けると嬉しいです!

 

(Q)最近では、C++でもムーブセマンティックスが導入されているみたいですね。C++がRustに近づいてくるんでしょうか?

増田:C++から離れて久しいのですが。
このあたり、C++の場合はポインタを使ってリスト構造やノードを使いたいときに、Rustは同時の非同期処理をするときにリソースの有効期限を制御したいときに、という使い分けになるのかなと思っています。

山本:C++ でムーブセマンティックスが導入されたのは C++11 で、議論自体はもっと前から存在します。
Rust は C++ が安全性や効率性のために後から導入した機能をデフォルトの言語仕様としており、今後も C++ で導入されてからそれを C++ より良い仕様で Rust に導入する、というケースの方が多いのかなと自分は考えております。

 

(Q)ブラウザの表示などでは、JavaScriptの計算というよりは、 DOMの描画に時間がかかるような気がしているのですが、 RustだとDOMの描画も高速でできたりするのか気になります。 (例えば、地図のような地理空間情報の上で、膨大なDOMの描画が必要なケースなど)

増田:ブラウザへの描画、特にDOM関係を利用した描画はRust限らず、あまり言語に関係ないのかなと思っています。
最終的には、SVGのキャンバスを使って、OpenCVなどを使って画像生成をする形になるのかなと。https://github.com/echamudi/opencv-wasm とか。

山本:Rust ではなく C++ ですが、Figma というデザインツールが WebAssembly で高速化しているという話があったと思います。

 

(Q)世界と日本の開発事情、活用事情に大きな違いってありますでしょうか?

増田:調べた限りでは、Rustの活用で目立つのはOSのカーネルやドライバー周りなので、どうしても大き目の活用例は海外寄り(というかアメリカ)になってしまいそうです。
Rustはリソース管理と非同期に強いので、日本でも組み込みシステムやリアルタイムOS(ロボットのRTOSやiTronあたり)に有効かなと思っています。
https://docs.rs/itron/latest/itron/ とか。

 

(Q)プログラミング自体未経験なのに参加してしまってますw ZEROから学ぶのにおすすめの第一歩を教えていただきたいです。そもそも初プログラミングでRustっていかがでしょうか?

増田:Rustを学ぶ前にC言語を知っておくと学習が早かったりします(メモリ関係の前提知識が多いので)。
Rust以外だと、PythonやJavaScriptでプログラム言語の「文法」をさらっと流して、あらためてRustを学ぶのもありだと思います。

山本:プログラミングを最初に学ぶときに苦戦するのは実はプログラミング言語の選択より、プログラムを書くまでの準備の部分だと思っています。
なので、言語は何でも良いのですがもしRustであれば [Rust Playground](https://play.rust-lang.org/) のようなブラウザ上ですぐに動かせる環境で始めるのが良いかなと思っています!
頑張ってください!

 

(Q)組み込みでRustを採用されない理由として認証があると思います。Rustで認証対応したツールチェーンは整備されているのでしょうか

増田:「ツールチェーン」の部分が解りかねるのですが、証明書などを発行するツール自体をRustで固める必要はないので、多分暗号化やTLSでの通信部分のことだと思います。
このあたりだと https://github.com/RustCrypto を使うんでしょうか。組み込みで使えるのかはわかりませんが Arduino の暗号化ライブラリレベルのように使えるのではないなと思っています。

 

(Q)単純な実行速度の比較だとGCがないCとC++はRustと速度は変わらないと思っているのですが、Rustの方が速いのでしょうか

山本:諸説ありますが、C++ と Rust の比較というよりは gcc と clang の差で C++ の方が高速、という説が有力なのかと思います。

 

(Q)組込みシステム系の開発案件で、RustではなくあえてC++を選ぶメリットがあるとすればどういったところにあるでしょうか。大規模な案件はRust向きでしょうか?

増田:あと、研究用の小さめのコードならばC++のほうが素直かもしれませんね。所有権とか気にせずに配列でメモリを取ってしまって、一括解放する方法のほうが手軽なので。
Rustの場合、非同期やメモリの受け渡しに強いので、むしろ大規模開発のほうが有利かと思います。ドライバーのようにカーネル側とリソースのやり取りで使うときに、スレッド間のメモリ操作をうまくコーディング時に捕まえられるので。

 

(Q)CやC++からRustに変わっていくといった話をたまに聞きますが、皆さんの周りでも実感するようになった。などの変化はありますでしょうか?

増田:実は、私の周りでは C# や JavaScript が主流だったりするので、Rust はあまりタッチしていなかったりします...
Android でもそうなのですが、グラフィックドライバー周りが大きく変わるのではないかなと思っています。

山本:実感ではないですが、Win32API が Rust で書けて、GetLastError 関数を使わなくても Result 型でエラーが扱えると聞いた時には時代が変わったなぁと感じました。

 

(Q)みなさんの「Rustのここが困るんだよなぁ」「こうなってほしいなぁ」ってのがあればお聞きしてみたいです。

増田:うっかり、関数呼び出しのときに所有権を持って行かれてしまって、その後でデバッグ出力できなくて困ることが多々あります(苦笑)。まあ、真面目にコピーをとっておけばいいんですが。

山本:Rust は C++ で言うところの template 特殊化に相当する機能がないので、実装されるといいなあと思っています!

松本:Rustって優しい言語だとみんなが思ってくれればもっと広まるのにと思っています。

 

(Q)C++等と比較してRustの一番のメリットは何でしょうか?(Rust未経験です)

増田:私的には基本のセマンティック(所有権)の部分ですね。
変数やメモリの有効範囲を非常に狭くできる(あるいは強制される)ので、影響範囲を考える手間を省けます。気にかける範囲が狭くなるので、テストコードなども小さくまとめられます。これはC言語でも同じことができるのですが、Rustは言語仕様として組み込まれているのが利点かなと。

山本:Cargo の存在だと思います。C++ に Cargo があれば、私はまだ C++ の方が好きかもしれません。
 
松本:ツール類が標準で揃う点は圧倒的にメリットだと思います。

 


レポートの内容は以上です。次回のイベントレポートもお楽しみに♪