対象読者: Java経験者で、Rustに興味があるが環境構築などが難しそうだと感じている方
目的: 個人的な体験として、実はJavaよりも環境構築が手軽だったことと、VS Codeでの便利な設定を紹介すること
Java畑のエンジニアがRustを始めようとすると、最初に気になるのが「環境構築、どれくらい面倒なんだろう…」というところだと思います。
自分もそこは正直ちょっと身構えていたんですが、やってみたら拍子抜けするくらいあっさり終わりました。
この記事では、Javaとの違いを比べながら、自分が試してみた環境構築の手順と気づきをメモしておきます。
1. 脱Maven/Gradle!便利な現場監督「Cargo」
Javaで pom.xml (Maven) や build.gradle (Gradle) の設定と格闘してきた身としては、Rustの 「Cargo(カーゴ)」 に初めて触れたとき、思わず笑ってしまうくらいシンプルでした。
公式が提供しているビルドツール兼パッケージマネージャで、Rustを書く人はほぼ全員これを使っています。
graph LR
A["Java/Gradle"] --> B("build.gradle")
B --> C["ライブラリ検索・追記"]
C --> D["IDEで同期"]
E["Rust/Cargo"] --> F("Cargo.toml")
F --> G["cargo addコマンド一発"]
style A fill:#f9d0c4
style E fill:#d4edda
- プロジェクト作成:
cargo new プロジェクト名(一瞬で雛形とCargo.tomlが完成) - ライブラリ追加:
Cargo.tomlに1行書くだけ(またはcargo add ライブラリ名) - 実行:
cargo run(ダウンロード・ビルド・実行を全自動で処理)
⚠️ コラム:Tomcatも web.xml も不要!?
JavaのWeb開発では、Tomcatなどのコンテナを用意し
web.xmlでルーティングを設定するのが伝統的でした。Rustには「コンテナに乗せる」という概念がなく、Spring Bootと同じようにアプリ内にサーバー機能を内蔵します。RustのWebフレームワークを使えば、ルーティングもすべてRustのコード内に書き、単体で動く超高速なWebサーバー(実行ファイル)が作れます。
💡 コラム:Cargoを使わずに rustc だけでも動くの?
はい、完全に動きます。 Cargoも裏では
rustc(コンパイラ)を呼び出しているだけです。ファイル1つの単純なプログラムならrustc hello.rsと打つだけで実行ファイルが生成されます。ただ、外部ライブラリの追加や複数ファイルの結合が必要になるとrustc単体では苦行なので、全RustエンジニアがCargoを使っています。
2. 環境構築は「rustup」の一発で完了
Javaみたいに「JDKを入れて、MavenかGradleを入れて、パスを通して…」という手間が、Rustにはほぼありません。
公式サイトの rustup というインストーラーを実行するだけで、開発に必要なものが全部まとめて入ります。
まとめて入るもの(三種の神器):
- rustc: コンパイラ本体
- cargo: ビルドツール 兼 パッケージマネージャ
- clippy / rustfmt: リンター(コードのアドバイスをくれる)と自動整形ツール
Windowsならインストーラーをダウンロードして実行、MacやLinuxならターミナルに1行貼り付ければ終わりです。
3. VS Codeの設定と、自分がハマったポイント
エディタは Visual Studio Code (VS Code) と拡張機能の rust-analyzer の組み合わせが定番で、自分もこれを使っています。
ここで一度バッチリハマったポイントがあったので、そちらを先に共有しておきます。
⚠️ 【重要】VS Codeでフォルダを開くときの罠
VS Codeで作業するときは、必ず
Cargo.tomlが直下にあるプロジェクトフォルダを直接開いてください。複数のプロジェクトをまとめた親フォルダを開いてしまうと、エディタがRustプロジェクトと認識できず、補完やエラーチェックが一切動かなくなります。
✨ 自分が使っている settings.json
rust-analyzer をインストールしたあと、設定(settings.json)に以下を追記するようにしました。
保存のたびにコードが自動で整形され、Clippyのアドバイスも出てくるので、これだけで作業環境がかなり快適になります。
{
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer",
"editor.formatOnSave": true
},
"rust-analyzer.check.command": "clippy",
"rust-analyzer.inlayHints.typeHints.enable": true,
"rust-analyzer.inlayHints.chainingHints.enable": true,
"rust-analyzer.inlayHints.parameterHints.enable": true
}
formatOnSave: 保存時にrustfmtが走り、コードが公式ルール通りに自動で整形されます。check.command: 保存時に「Clippy」のチェックが走るようになります。inlayHints: コード上に書いていない型や参照(&)を透かし文字で表示してくれます。
4. AIとClippyを組み合わせた使い方
GitHub CopilotなどのAI補完ツールは便利なのですが、Rust特有の「所有権」のルールを無視したコードを提案してくることが結構あります。
そこで個人的に気に入っているのが、ClippyとAIを組み合わせる使い方です。
- AIでとりあえず書く: AIにベースのコードを書いてもらう
- Clippyで直す: 所有権ルール違反を赤い波線で指摘してくれるので、電球マーク(💡)から自動修正で直す
エラーメッセージの中に clippy::〇〇 とあれば、それはコンパイルが通らない致命的なエラーではなく「もっとこう書けるよ」という改善提案です。怖くありません。
(個人的な感想ですが、最初の1〜2週間はあえてAIをオフにしてClippyの指摘だけを頼りに書いていたら、所有権の感覚がかなりつかめました。)
ここまでが自分の環境構築と設定のメモです。
次回は、Rust公式の練習問題集「rustlings」を使った学習の始め方と、最初に知っておくと得するRust用語について共有したいと思います。
コメント