今回の「移動中雑談 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 では、また別の技術的話題や、筋トレとテックを絡めた雑談が飛び出すかもしれません。引き続きお楽しみに!