Rust学習の次のステップ
このコースのトピックをひととおり学んだなら、あなたはもう本物のプログラムを作れるだけのRustを知っています。変数、制御フロー、関数、所有権(ownership)、借用(borrowing)、コレクション、モジュール、エラー処理、トレイト、ジェネリクス、さらにスレッド、スマートポインタ、unsafe、マクロまで。これは、ふだんの開発で使うことの大部分です。あとは主に練習と、必要になったときにライブラリごとの知識を身につけていくことだけです。
小さなものを作ってみよう
Section titled “小さなものを作ってみよう”ここから本当に身につけるいちばんの近道は、小さなプロジェクトを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面接の質問で腕試しをしてみてください。
知っておきたいクレート
Section titled “知っておきたいクレート”Rustのパッケージのエコシステム(クレートと呼ばれ、crates.io(英語)で配布されています)には、ライブラリがほしくなるようなことはたいてい揃っています。特によく見かけるものをいくつか紹介します。
serde(英語):JSON(やその他の形式)の読み書きに使います。SerdeでJSONを扱うを参照してください。clap(英語):コマンドライン引数のパーサーを作るのに使います。clapのプロジェクトを参照してください。anyhow/thiserror(英語):アプリケーションやライブラリのエラー処理に使います。anyhowとthiserrorを参照してください。rand、regex、chrono(いずれも英語):乱数、正規表現、日付を扱います。乱数、正規表現、日付と時刻を参照してください。log/tracing(英語):ログ出力に使います。ログ出力を参照してください。reqwest(英語):HTTPリクエストを送るのに使います。tokio(英語):非同期プログラミングに使います。async/awaitを参照してください。
どのクレートも 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を書くのに、これらは必要ありません。「こういうものがある」と知っておき、本当に必要な問題にぶつかったときに学べば十分です。
学び続けるためのリソース
Section titled “学び続けるためのリソース”- The Rust Programming Language 日本語版:基本がわかった今こそ、もう一度読み直してみましょう。2回目のほうが、ずっと腑に落ちるところが多いはずです。
- Rust by Example 日本語版:解説付きのコードをもっと読めます。
- Rustlings(英語):ターミナル上で、壊れたコードを直していく小さな練習問題集です。
- This Week in Rust(英語):コミュニティが何を作っているかがわかる、週刊のニュースレターです。
最後に、正直なひとこと
Section titled “最後に、正直なひとこと”これからも、よくわからないコンパイラのエラーに出会うでしょう。でも、それは普通のことです。初心者だけでなく、何年もRustを書いている人にも起こります。経験を積んで変わるのは、エラーが出なくなることではありません。エラーを読むのが速くなることです。コードを書き続け、コンパイラの言うことを読み続けてください。そうすれば、どんどん楽になっていきます。
がんばってください。ここまで続けてくれて、本当にありがとうございました。🦀
理解度チェック
Section titled “理解度チェック”理解度チェック
1. このページで、JSONの読み書きにおすすめされているクレートはどれですか?
2. 非同期プログラミング用として紹介されているクレートはどれですか?
3. このページで「扱わなかったトピック」として挙げられているのはどれですか?
スコア: 0 / 3