コンテンツにスキップ

Rust学習の次のステップ

このコースのトピックをひととおり学んだなら、あなたはもう本物のプログラムを作れるだけのRustを知っています。変数、制御フロー、関数、所有権(ownership)、借用(borrowing)、コレクション、モジュール、エラー処理、トレイト、ジェネリクス、さらにスレッド、スマートポインタ、unsafe、マクロまで。これは、ふだんの開発で使うことの大部分です。あとは主に練習と、必要になったときにライブラリごとの知識を身につけていくことだけです。

ここから本当に身につけるいちばんの近道は、小さなプロジェクトを1つ選んで、何度かつまずいてみることです。このサイトには、手始めにぴったりのプロジェクトが5つあります。

  • 数当てゲーム:Rustの最初のプロジェクトの定番です。入力、ループ、match を使います。
  • 単語カウンター:テキストファイルを読み込み、HashMap で単語を数えます。
  • ToDoリストCLI:Vec、struct、enum、ファイルへの保存を練習します。
  • clapでCLIツール:サブコマンドと --help を備えた、本格的なコマンドラインツールを作ります。
  • AxumでWeb API:async/await の上に作る、JSONを返すAPIサーバーです。

それが終わったら、自分の力で1つ作ってみましょう。

  • シンプルな電卓:match、Result、そしておかしな入力に対するエラー処理を練習できます。
  • JSONの設定ファイルリーダー:Serde を使って、ファイルから設定を読み込みます。
  • 小さなWebスクレイパーやAPIクライアント:async/await の上で reqwest を使い、URLからデータを取得します。

どんなプログラムを作りたいか、まだ決まっていませんか?「Rustで作れるもの」のページでは、Rustが得意な分野と、よく使われるクレートを紹介しています。ネットワーク、データベース、デスクトップのGUIアプリ、ゲーム、マイコンです。

まずはもっと小さな練習から始めたいですか?それならRust練習問題に取り組むか、Rust面接の質問で腕試しをしてみてください。

Rustのパッケージのエコシステム(クレートと呼ばれ、crates.io(英語)で配布されています)には、ライブラリがほしくなるようなことはたいてい揃っています。特によく見かけるものをいくつか紹介します。

どのクレートも cargo add <クレート名> でプロジェクトに追加できます。別のパッケージマネージャーは必要ありません。仕組みや、よいクレートの選び方はCargoとクレートのページで説明しています。

このコースで扱わなかったトピック

Section titled “このコースで扱わなかったトピック”

このコースは、たいていの初心者向けチュートリアルよりも先まで進みました。スマートポインタ、スレッドとチャネル、async/await、unsafe Rust、Cの呼び出し(FFI)、WebAssembly、そして自分で macro_rules! マクロを書くことまで扱っています。さらに深いトピックのいくつかには、専用のページがあります。準備ができたら読んでみてください。

  • 手続き型マクロ(procedural macros):マクロのページで学んだ macro_rules! マクロの、より強力で(より複雑な)親戚です。#[derive(Debug)] などは、裏側でこの仕組みを使っています。
  • no_std / 組み込みRust:標準ライブラリなしでRustを書きます。マイコンなど、リソースが限られた環境向けです。

役に立つRustを書くのに、これらは必要ありません。「こういうものがある」と知っておき、本当に必要な問題にぶつかったときに学べば十分です。

  • The Rust Programming Language 日本語版:基本がわかった今こそ、もう一度読み直してみましょう。2回目のほうが、ずっと腑に落ちるところが多いはずです。
  • Rust by Example 日本語版:解説付きのコードをもっと読めます。
  • Rustlings(英語):ターミナル上で、壊れたコードを直していく小さな練習問題集です。
  • This Week in Rust(英語):コミュニティが何を作っているかがわかる、週刊のニュースレターです。

これからも、よくわからないコンパイラのエラーに出会うでしょう。でも、それは普通のことです。初心者だけでなく、何年もRustを書いている人にも起こります。経験を積んで変わるのは、エラーが出なくなることではありません。エラーを読むのが速くなることです。コードを書き続け、コンパイラの言うことを読み続けてください。そうすれば、どんどん楽になっていきます。

がんばってください。ここまで続けてくれて、本当にありがとうございました。🦀

理解度チェック

1. このページで、JSONの読み書きにおすすめされているクレートはどれですか?

2. 非同期プログラミング用として紹介されているクレートはどれですか?

3. このページで「扱わなかったトピック」として挙げられているのはどれですか?

スコア: 0 / 3