Rust初心者必見!Rust初心者が実務レベルになるまでの学習ステップ

Rustプログラミングの学習を始めたばかりのあなたへ。実務で活躍できるレベルまでスキルを磨くための効果的な学習ステップを解説します。

本記事を参考に、Rustの知識を確実に身につけ、実務で役立つスキルを習得しましょう。

 

Rustを学ぶ(公式サイト)

まずは、Rustの公式サイトの「Rustを学ぶ - Rustプログラミング言語」を見てみます。

ステップ1. Rustを始める

Rustを始めるにあたり、Rustの構文を学べるドキュメントや実施にコマンドラインで読み書きしていきます。
はじめは、自分に合う方法で学び始めると楽しく学習を進められるでしょう。

ステップ2. Rustと共に成長する

Rustの基本的な構文や読み書きに慣れてきたら、次はRustの標準ライブラリや周辺ツールの基本的な部分を深く理解していきます。また、それとは別にコマンドラインや組み込みなど特定領域でのRustの使い方を学びながら応用力も高めていきます。

ステップ3. Rustをマスターする

Rust初心者が実務レベルになるまでの学習ステップ(Chat GPT-4)

Chat GPT-4にRust初心者が実務レベルになるまでの学習ステップを聞いてみました。

回答結果の学習ステップを俯瞰してみると、次のように進めるとよさそうです。

  • 学習ステップの1〜8ぐらいまでは、「the book」を読む、rustlingsでエクササイズをして復習する、Rust by Exampleでサンプルコードにふれるということを通して、Rustの基礎が学べそうです。
  • 学習ステップの9〜14は、Chat GPT-4にやり方を聞きながら、コアドキュメントを読んだりしていくのがよさそうです。

Rustの学習ステップのプロンプトは次のとおりです。

Rustの学習ステップのプロンプト - GPT-4

以下、回答です。(※回答結果に対して、実際の学習教材ややってみた感想などを追記したかったため、画像ではなくテキストで回答内容を記載しています)

 

Rustプログラミングを実務レベルまで学ぶためのステップを以下にまとめました。

1. Rustの基本を学ぶ

  • 公式ドキュメントや"The Rust Programming Language"という書籍を読む
    • 「the book」と呼ばれるだけあり、Rustについて基本を一通り学べます。
    • しかし、内容がボリューミーで途中で力尽きそうなので、以下の学習ステップを進めながら必要な部分を読んでいくほうが達成感を得やすくて学習が捗りそうです。
  • Rustのインストールと環境設定
  • Hello Worldプログラムを作成し、コンパイルと実行
    • お決まりの Hello Worldですね。「the book」のHello, World! を見ながら、"Hello, world!"をコンソールに表示することができます。

 

2. Rustの基本構文を理解する 

3. 所有権、借用、ライフタイムを理解する

  • ✅ 所有権、ムーブセマンティクス、参照、借用のルール
  • ✅ ライフタイム注釈とその利用方法
    • 「the book」の第10章のライフタイムで参照を検証する で基本的な部分を学べる。

    • ライフタイムの主な目的は、ダングリング参照を回避すること。ライフタイム注釈はコンパイラにより自動的に保管されているが、特定ケースでは指定する必要がある。

 

4. 構造体、列挙型、パターンマッチングを学ぶ

5. モジュール、パッケージ、クレートを理解する

6. トレイトとジェネリクスを学ぶ

7. 非同期プログラミングとコンカレンシーを学ぶ

  • ✅ Futures、async/await構文、非同期I/O
  • ✅ スレッド、チャネル、Mutex、RwLock、アトミック操作
    • 「the book」の第16章の並行性で学べる。
    • スレッドは`thread::spwan`で作成し、`join()`でスレッドの実行を待つ
    • `mpsc::channel`で送信側と受信側を作り、`send()`と`recv()`でやりとりする
    • 並列処理の同一データのアクセスは`Mutex`でロックをとる。また、スレッドセーフなスマートポインタの`Arc`を使う

8. テストとドキュメントを書く

  • 単体テスト、統合テスト、ドキュメントテストを行う
    • 「the book」の第11章の自動テストを書くで学べる。

    • Rustでは、単体テスト結合テストの2つがある。
    • 単体テストでは、`src`ディレクトリの各ファイルにおく。また、慣習では`#[cfg(test)]`という注釈をつけた`tests`というモジュールをつくり、`#[test]`属性で注釈した関数を記載すると、`cargo test`時にテスト実行できる。
    • 結合テストでは、`tests`ディレクトリを作成して、`#[test]`属性で注釈した関数を記載する。Cargoが`tests`ディレクトリを特別扱いするので`#[cfg(test)]`という注釈は必要ない。
  • ✅ コードに適切なコメントを追加し、ドキュメントを整備する
    • `///`でコードコメントを書くことで自動的にHTMLドキュメントを生成できる。
    • `cargo doc --open`で現在のクレートのドキュメント用のHTMLが生成され、Webブラウザで閲覧できる。

9. Rustのエコシステムに慣れる

10.  実践的なプロジェクトを手がける

11. パフォーマンスチューニングと安全性を向上させる

  • ベンチマークテスト、プロファイリングツールを利用してパフォーマンスを最適化
    • 未実施:ChatGPTに聞いてみる
  • 安全性の向上、unsafeコードの最小化、セキュリティベストプラクティスの適用
    • 未実施:ChatGPTに聞いてみる。「the book」の19章の Unsafe Rust が参考になるかも。

12. Rustの最新動向を追う

  • Rustのリリースノートやブログ記事を読む
  • 新機能や変更点を把握し、自分のプロジェクトに適用する

13. 高度なRustの機能を学ぶ

14. Rustの設計原則とベストプラクティスを学ぶ

  • Rustコミュニティが重視する設計原則やベストプラクティスを学び、自分のコードに適用する
    • 未実施:ChatGPTに聞いてみる
  • レビューを通じてフィードバックを得ることで、より良いRustコードを書く力を向上させる
    • 未実施:ChatGPTに聞いてみる

これらのステップを繰り返し学習し、実践することで、Rustを実務レベルで利用できるようになります。お互いに助け合いながら、継続的にスキルを磨いていくことが重要です。

 

ぜひ、Rustの学習ライフを楽しんでください!