『これJavaならどう書くの?』から始めるRust入門 ②:用語とRustlings編

対象読者: 環境構築を終え、いよいよコードを書き始めようとしているJava経験者
目的: 公式ドキュメントの特有の用語を整理しつつ、公式が提供している学習ドリル「Rustlings」を紹介する


前回(第①回)では、VS Codeを使った環境構築の話を書きました。
今回は、コードを書き始める前に「これを知っておくだけで公式ドキュメントがぐっと読みやすくなった」というRust特有の用語の整理と、実際に使っている公式ドリル「Rustlings」について書いておこうと思います。

1. これだけは知っておきたい!Rust用語翻訳辞書(Javaエンジニア向け)

Rustの公式ドキュメント(通称:The Rust Book)はかなり丁寧に書かれているのですが、Javaの世界にはない概念がいくつか登場するせいで、自分は序盤で盛大に迷子になりました(笑)。

「クレートって何?」「マクロって関数と何が違う?」というやつです。

とりあえず自分なりにJavaの概念と並べて整理してみました。

Rustの用語 Javaで例えると(あるいは意味) 解説
Cargo(カーゴ) Maven, Gradle ビルドシステム兼パッケージマネージャ。Rust開発の心臓部です。
Crate(クレート) 外部ライブラリ(.jar) Rustにおけるパッケージやライブラリの単位です。「クレートを追加する」=「ライブラリ(依存関係)を追加する」という意味です。
Cargo.toml pom.xml, build.gradle クレート(ライブラリ)の依存関係やプロジェクトの設定を書くファイルです。
マクロ (!) (近いものがない強力な機能) 名前に ! がついているもの(例: println!)はマクロです。最初は「! がついてたら特殊な関数」と思えば大丈夫です。
所有権(Ownership) (Javaには存在しない概念) Rustの大きな特徴の一つ。JavaのGC(ガベージコレクション)に代わる、メモリを安全に管理するための厳密なルールのことです。(詳しくは第③回で解説します)
トレイト(Trait) Interface(インターフェース) 「この型はこういう振る舞い(メソッド)を持っていますよ」という約束事です。JavaのInterfaceによく似ています。
Result型 例外処理(try-catch)の代わり Rustには try-catch がありません。エラーが起きる可能性のある処理は、すべてこの Result という型(成功か失敗かが包まれた箱)で返ってきます。

これを整理してから公式ドキュメントに戻ったら、同じページがずっと読みやすく感じられたので、最初にやっておいて良かったなと思っています。


2. 実践ドリル「Rustlings」の紹介

用語の整理が終わったら、自分は次にRust公式が提供している学習ドリル「Rustlings(ラストリングス)」を始めました。
穴埋め問題やわざとエラーを含んだコードを直していくスタイルで、コンパイラのエラーメッセージの読み方に自然と慣れていけるのがよかったです。

導入手順(Mac / Linux)

ターミナルを開いて、以下のコマンドを実行するだけです。

# 最新版のRustlingsをインストール
cargo install rustlings

⚠️ つまずきポイント:バージョンエラーになったら

「rustcのバージョンが古いです」と怒られた場合は、
cargo install rustlings --version 6.4.0 のように、少し古いバージョンを指定してインストールしてみてください。

プロジェクトの初期化

インストールが終わったら、作業用フォルダを作りたい場所へ移動し、以下のコマンドを打ちます。

rustlings init

Enterを押すと、その場所に rustlings/ という問題ファイルが入ったフォルダが作成されます。


3. Rustlingsの使い方(監視モード)

フォルダが作られたら、その中に移動して起動コマンドを打ちます。

cd rustlings
rustlings

⚠️ 【注意】「watch」コマンドは過去のものです

ネットの記事ではよく rustlings watch と書かれていますが、v6以降は廃止されました。引数なしの rustlings だけで、自動監視モード(ファイルを保存すると自動で答え合わせしてくれるモード)が起動します。

初回起動時のウェルカムメッセージ

初めて起動したときだけ、以下のように少し長めの英語が表示されます。

Is this your first time? Don't worry, Rustlings is made for beginners!
We are going to teach you a lot of things about Rust, but before we can
get started, here are some notes about how Rustlings operates:
...
Press ENTER to continue

「初めてだね?心配しないで、Rustlingsは初心者のために作られてるよ!」という公式からの親切なウェルカムメッセージです。ここもEnterキーを押して先に進みます。

基本的な学習サイクル

起動すると、以下のようにコンパイルエラーの画面が表示されます。

error: cannot find macro `printline` in this scope
   --> exercises/00_intro/intro2.rs:3:5
    |
3   |     printline!("Hello world!");
    |     ^^^^^^^^^ help: a macro with a similar name exists: `println`

printline なんて見つからないよ。もしかして println じゃない?」と修正案まで出してくれています。

やるべきことは3ステップです。その前に、少しだけこの rustlings フォルダの中身を知っておくと安心です。

rustlings/
├── exercises/    ← 📝 私たちがコードを書いていく場所!(出題ファイル群)
├── solutions/    ← 💡 模範解答(どうしても分からない時だけ見る用)
└── ...

準備ができたら、以下の手順で進めます。

  1. 指示されたファイル(例:exercises/00_intro/intro2.rs)をVS Codeで開く。(注意:solutions/(模範解答)のフォルダではなく exercises/ のファイルを編集します)
  2. エラーを直す(printline!println! にする)。
  3. 保存する(Ctrl + S / Cmd + S)

保存した瞬間に自動でコンパイルが走り、正解すればターミナルに「✓ Successfully ran」と表示されて次の問題へ進みます。
途中で中断したい場合は qキー(または Ctrl + C)を押せばOKです。進捗は保存されているので、いつでも続きから再開できます。


4. 次の話

今回は用語の整理とRustlingsの導入を書いてみました。
次回は、実際にコードを書いていて自分がはじめて「???」となった「String引数」と「所有権」の話を、具体的なコード例とあわせて書いていこうと思います。

コメント

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

関連記事