JavaScriptエンジニアがRustを学んでみた感想

今回の「移動中雑談Podcast:We Are On The Way」は、竹内さん(@rikson_en)が図書館でRustのオライリー本を読んできたという話題から始まりました。
僕らは筋トレへ向かう車中、Rustという新たなプログラミング言語をJavaScriptエンジニア目線で捉え直してみました。

Rust学習のきっかけと手法

竹内さんは「家出中」(!?)とのことで、喫茶店や図書館を渡り歩きながらRustを勉強してきたそうです。オライリー本を活用し、コマンドラインツールを作りながら学習するという実践的アプローチ。書籍では、理論だけでなく、実際に手を動かしてコードを書くことで、Rust特有の概念に慣れていける点が強調されていました。
以下の書籍。
https://amzn.to/3ZPYtSm

JavaScriptとの違い:束縛や借用

JavaScriptエンジニアから見ると、Rustはなかなか新鮮な言語です。たとえば、変数代入を「束縛」と呼んだり、引数を受け取る際には「借用」という仕組みを用いたりします。Rustではメモリ安全性が言語仕様として組み込まれており、「借用」を使うことでポインタ操作のような低レベルな手間を減らし、安全なメモリアクセスが可能になります。

組込みツールで感じる「フルスタック感」

JavaScriptだと、テストフレームワークやリンター、フォーマッターなどはNPMを通じて外部パッケージをインストールするのが一般的。しかし、Rustは標準でテスト・ドキュメント生成・フォーマット機能などが揃っており、言語自体が「フルスタック」な印象を与えます。これには僕も興味をそそられました。環境構築の手間が少なく、初期段階から統一的なスタイルとツールセットで開発できるのは大きな利点です。

コンパイル言語ゆえのメリット

Rustはコンパイル言語であるため、実行ファイルさえあれば動くというシンプルさがあります。Pythonのように実行環境や依存パッケージの問題に悩まされることが少なく、Dockerコンテナ化も容易です。コンパイル後は依存関係を抱えず、ひとつのバイナリにまとまるため、デプロイや配布がシンプルになるのが魅力的ですね。

C++との連携に期待

RustはまだC++ほど普及していません。そのためC++で豊富にあるライブラリやSDKがRust版として用意されていないケースもあります。とはいえ、C/C++とのインテグレーション手段が存在するなら、それらの資産をRustから利用できる可能性があり、これからが楽しみな部分でもあります。 もし、C++の世界で流通しているライブラリ群をRustから直接扱えれば、Rustの導入ハードルはさらに下がり、多くのエンジニアが移行・試験的利用を行うきっかけになるでしょう。

まとめ

JavaScriptばかり書いてきたエンジニアにとって、Rustは新たな地平を開く存在です。
メモリ安全性、標準搭載のテストやドキュメントツール、コンパイル言語ならではの配布の容易さなど、RustにはJSエコシステムとはまた違った魅力があります。

まだRust版のライブラリが少ない分野も多いですが、今後エコシステムが成長するにつれ、その「フルスタック感」をさらに活かした開発が可能になるでしょう。
興味があれば、ぜひ一度「コマンドラインツールを作りながら」Rustを学んでみることをオススメします。

次回のPodcastでは、また別の技術的話題や、筋トレとテックを絡めた雑談が飛び出すかもしれません。引き続きお楽しみに!