Rust言語入門:メモリ安全性と並行性を担保するコンパイラ言語の環境構築とcargoの活用

技術コミュニティで話題になっていたプログラミング言語「Rust」について調べ、実際に触ってみたので基礎的な内容をまとめました。
Rustとは?
Mozillaが支援・開発している、C++に代わるコンパイラ型のシステムプログラミング言語です。
Stack Overflowのアンケートでは「最も愛されているプログラミング言語」に連続で選ばれるなど、エンジニアからの熱狂的な支持を集めています。WebAssemblyとの親和性も高く、フロントエンドのパフォーマンス最適化の文脈でも注目されています。
Rustの強力な特徴
Rustの最大の特徴は、「安全性、速度、並行性」の3つに焦点を当てている点です。
- 所有権(Ownership)と借用(Borrowing):ガベージコレクション(GC)を持たないにも関わらず、コンパイル時にメモリの安全性を保証します。メモリの解放忘れや二重解放といったバグを防ぎます。
- データ競合の防止:マルチスレッドプログラミングにおいて、データ競合(Data Race)をコンパイル時に検出して防ぐことができます。
- 高速な実行速度:ランタイムのオーバーヘッドが極めて少なく、CやC++と同等のスピードで動作します。
所有権などの概念は最初は少し難解に感じますが、「C++の出来の良い息子」という表現がしっくりくる、コンパイル時に非常に多くの恩恵を受けられる言語です。
環境構築(cargoとrustup)
macOS環境を前提に、ローカル環境の構築手順を紹介します。
【cargoとは】
Rust公式のビルドシステム兼パッケージマネージャーです。プロジェクトのビルド、テスト、依存関係の管理などを非常に高速に行います。
【rustupとは】
Rustのコンパイラやツールチェーン(stable, beta, nightlyなど)のバージョンを管理するためのツールです。環境構築はrustupを使うのが最も手軽です。
# Homebrewでrustupをインストール
brew install rustup
# rustupのセットアップを実行
rustup-init環境が整ったら、Cargoを使って新しいプロジェクトを作成し、ビルド・実行してみます。
# 新しいプロジェクトを作成
cargo new hello_rust --bin
cd hello_rust
# ビルドして実行(一発で完了します!)
cargo run2回目以降に実行した際、コードに変更がなければ再ビルドされずに即座に実行されます。Cargoが変更差分を検知し、ビルド時間を最小限に抑えてくれるため非常に快適です。
まとめ
変数の宣言(Rustでは変数に値を代入することを「束縛する」と表現します)や所有権の移動など、他の言語とは異なるパラダイムが多いですが、その厳密さゆえに堅牢なソフトウェアを構築できる素晴らしい言語だと感じました。
バイタリフィアジアでは、最新の技術トレンドを常にキャッチアップし、お客様のプロジェクトに最適な技術スタックを提案しています。モダンな言語を用いたシステム開発やオフショア体制の構築にご興味があれば、ぜひご相談ください。


