はじめに
この記事では、Rust初心者向けに、学習ツールRustlingsの紹介と、実際に取り組んだ感想を共有します。
最近マイコンの学習を始めたのですが、その際にRustが組み込みシステムに適しているという記事を読みました。実行速度が速く、メモリ安全性が高いそうです(そのあたりの詳細は本記事では解説しません)。
そこでRustの勉強法を調べてみると、Rustlingsという無料の演習問題集が提供されていることを知りました。
動作確認環境
- Windows 11
- rustc 1.95.0
- cargo 1.95.0
- rustlings 6.5.0
Rustlingsとは
Rustlingsは、Rustの公式リポジトリで公開されている無料の演習問題集です。
演習としてコンパイルエラーやロジックエラーを含むコードが出題され、それらを修正していくことで学習を進めます。
Rustはカニがマスコットらしいです。何でカニ…??
セットアップ
Rustのインストール
まず、以下の公式ドキュメントを参考にRustをインストールします。
以下のコマンドでrustcとcargoのバージョンを確認できたらOKです。
rustc --version
cargo --version
Rustlingsのインストール
Rustlings公式サイトのQuick startに従い、以下の4つのコマンドでRustlingsをインストールします。
cargo install rustlings
rustlings init
cd rustlings
rustlings
うまくインストールできていれば、コマンドラインに以下のような画面が表示されます。
Output
Welcome to...
_ _ _
_ __ _ _ ___| |_| (_)_ __ __ _ ___
| '__| | | / __| __| | | '_ \ / _` / __|
| | | |_| \__ \ |_| | | | | | (_| \__ \
|_| \__,_|___/\__|_|_|_| |_|\__, |___/
|___/
This exercise compiles successfully. The remaining exercises contain a compiler
or logic error. The central concept behind Rustlings is to fix these errors and
solve the exercises. Good luck!
The file of this exercise is `exercises/00_intro/intro1.rs`. Have a look!
The current exercise path will be always shown under the progress bar.
You can click on the path to open the exercise file in your editor.
Exercise done ✓
Solution for comparison: solutions/00_intro/intro1.rs
When done experimenting, enter `n` to move on to the next exercise 🦀
Progress: [>---------------------------------------------------------------------------------------------------] 0/94
Current exercise: exercises/00_intro/intro1.rs
n:next / h:hint / l:list / c:check all / x:reset / q:quit ?
凝っていてすごいですね……!本当にゲームのようです。
用意するもの
この節では学習に必要なものを解説します。
-
Rust公式ドキュメント
Rustlingsは、公式ドキュメントを読みながら解くことが前提になっています。常に見られる状態にしておきましょう。
-
コードエディタ
コードを修正していくため、コードエディタを用意しておきましょう。私はVS Codeを使いました。VS CodeのターミナルでRustlingsを起動すれば、進捗とコードを同時に確認できるのでおすすめです。
勉強のフロー
この節では私がどのようにRustlingsを進めていったかを解説します。
1. 各章のREADMEを読む
まずは該当する章のディレクトリのREADMEを読みましょう。
以下がexercises/00_intro/README.mdの中身です。
# Intro
Rust uses the `print!` and `println!` macros to print text to the console.
## Further information
- [Hello World](https://doc.rust-lang.org/rust-by-example/hello.html)
- [Formatted print](https://doc.rust-lang.org/rust-by-example/hello/print.html)
重要なのは、後半のFurther informationです。問題を解くために参考になる公式ドキュメントや関連ページが記載されています。
2. 公式ドキュメントを読む
公式ドキュメントの該当する箇所を読み、問題を解くために必要な知識を覚えます。日本語版も結構文章が難しいので、まずはコード部分だけに目を通すのがおすすめです。
3. コードを修正する
必要な知識が身についたら、エラーが出ているコードを修正しましょう。
ターミナルの画面下部にあるCurrent exerciseには、現在出題されている問題(=修正すべきコード)が表示されます。以下の場合は、intro2.rsが出題中です。
(中略)
error: could not compile `exercises` (bin "intro2") due to 1 previous error
Progress: [>---------------------------------------------------------------------] 1/94
Current exercise: exercises/00_intro/intro2.rs
h:hint / l:list / c:check all / x:reset / q:quit ?
コードを修正して保存すると、自動的に再コンパイルされます。
コンパイルが通ったら n キーで次の問題に進みましょう。
4. 章が終わったら手順1に戻る
その章のすべてのコードを修正し終えたら、次の章に移ります。
同じように、README → 公式ドキュメント → コード修正 の流れで進めていきましょう。
必ずしも章の順に出題されるわけではないので、Current exerciseは毎回チェックしてください。
完走した感想
以下、Rustlingsを最後まで解いた私自身の感想です。
Rustの特徴に触れることができた
Rustの特徴的な概念や記法に触れることができました。Rustを使ってプログラムを書けるほどの技術はまだ身につきませんでしたが、今後の開発の下地になる基礎力は得られたのではないかと思います。
問題はサクサク進む!楽しい!
1〜2行加筆・修正するだけでクリアできる問題が多く、進めやすかったです。勉強時間のほとんどは公式ドキュメントの読解でした。
やっぱりRustは難しい
所有権やResult、Stringと&strの違いなど、独特な概念と記法が多く難しかったです…。スレッド関連はドキュメントだけでは理解しきれませんでした。
ただ、コードを書く時点でここまでメモリのことを意識するからこそ、実行時の安定性につながるのだろうなという実感は得られました。
ドキュメントだけでは解けない問題もあった
序盤はドキュメントにあるサンプルコードをそのまま書くだけでクリアできる問題もありましたが、後半になるにつれドキュメントにある知識だけでは解けなくなってきました。そのため、ヒント(ターミナルで h キー)を見たり、別のサイトで調べてみたりしながら解く必要も出てきます。わからない箇所をAIに解説してもらうのもよいかもしれません。
エンディングがあった!
最後まで問題を解いたら、特別なメッセージが表示されました。完走までの苦労も相まって、達成感があり嬉しかったです。ぜひ皆さんも、そのメッセージが見られるよう頑張ってみてください。
日本語で学べる記事があるの!?
Rustlings修了後に、日本語でRustlingsに取り組める記事を発見しました。そちらも参考にすればよかったです……。
まとめ
本記事では、Rustlingsを使ったRust学習のフローと、学習を通して感じたことをまとめました。私と同じようなRust初心者の助けになれば幸いです。
余談ですが、今回の記事は、伊藤淳一さん著の『技術記事を書く技術』に感銘を受け、Qiitaに初めて投稿したものです。いずれ同書の書評も投稿できればと思います。

