『これJavaならどう書くの?』から始めるRust入門 ①:Cargo編

対象読者: 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用語について共有したいと思います。

コメント

この記事へのコメントはありません。

関連記事