Rust の学習に役立つサイト

本記事では、初学者からより高度なトピックに挑戦したい開発者までを対象に、Rust の学習に役立つさまざまなサイトを紹介します。

# はじめに

Rust は近年急速に人気を集めているプログラミング言語であり、その安全性、パフォーマンス、並行性の特性から多くの開発者に支持されています。

Stack Overflow Developer Survey[^1] によると、2023 年、Rust は最も賞賛されている言語であり、Rust を使用している開発者の 80 ％以上が来年も使いたいと考えていると報告されています。

Microsoft や Dropbox、Figma などの規模の大きな企業でも Rust が採用されており、OS 開発や Web 開発など様々なプロダクトに使用されています。[^2]

一方で、Rust は学習曲線が緩やかではありません。しかし、その安全性とパフォーマンスの恩恵は非常に大きく、その理解に時間をかける価値があります。

以下で紹介するサイトが学習の手助けとなるでしょう。

# Rust の開発チームによって管理されているドキュメント
- [The Rust Programming Language](https://doc.rust-lang.org/book/)
    Rustの公式ガイドブックであり、Rust の基本から高度なトピックまでを包括的に解説しています。通称「The Book」として知られ、初心者から上級者まで、Rust を学びたいすべての人に向けた**必読書**です。
- [Rust By Example](https://doc.rust-lang.org/rust-by-example/)
     **サンプルコード集**を通じて Rust を学習するためのドキュメントです。
- [Error codes index](https://doc.rust-lang.org/error_codes/error-index.html)
    Rust のコンパイラが出力する**エラーコードの詳細な説明**を提供するドキュメントです。エラーコードごとに具体的な例と対処法が記載されています。
- [The Rust Reference](https://doc.rust-lang.org/reference/)
    Rust の参考資料であり、言語仕様についての詳細な記述がなされています。これは正式な仕様書ではありませんが、Rust の機能や構文、動作についての情報を提供しています。特に、Rust の内部動作や詳細な構文ルールを理解したい開発者にとって、有用なリソースです。

その他のドキュメントは [Learn Rust](https://www.rust-lang.org/learn) で確認できます。

また、これらのドキュメントは有志によって**日本語に翻訳**されており、以下のリンクからアクセスできます：
- [Rustの日本語ドキュメント](https://doc.rust-jp.rs/)

The Rust Programming Language を動画で学びたい方は、以下の YouTube 動画もおすすめです。

https://www.youtube.com/watch?v=tw2WCjBTgRM

# ツール
- [Rust Playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021)
    ローカルに Rust の環境を構築することなく、ブラウザ上で Rust のコードを編集、実行することができます。

# 学習サイト
- [Rust ツアー](https://tourofrust.com/00_ja.html)
    **インタラクティブな学習サイト**で、Rust の基本的な文法を実際にコードを実行しながら学ぶことができます。サイト内でコードを編集・実行できる環境が提供されており、すぐに結果が確認できるため、効率的な学習が可能です。
    
- [Rust By Practice](https://practice.course.rs/variables.html)
    練習問題を通してRustを学習できるサイトです。Rust の各種トピックに関する**練習問題が豊富**に用意されており、実際に手を動かしながら Rust の基礎から応用までを習得できます。まだ作成中の項目もあります。

- [Easy Rust](https://dhghomon.github.io/easy_rust/Chapter_1.html)
    Easy Rustは、初心者向けにRustの概念や使い方を分かりやすく解説しているサイトです。
- [100 Exercises To Learn Rust](https://rust-exercises.com/)
    約 100 個の演習を解きながら、段階的に無理なく Rust を学ぶことができます。

**Rust ツアー**と **Rust By Practice** は環境構築が不要で、ブラウザ上で実行できるため、手軽に Rust を学ぶことができます。

# チートシート
- [Rust Language Cheat Sheet](https://cheats.rs/)
Rust の重要な構文や機能を手早く確認できるチートシートです。初心者から上級者まで、コーディング中に頻繁に使う基本事項が簡潔にまとまっています。

# ロードマップ
- [Learn to become a Rust developer](https://roadmap.sh/rust)
  Rust 開発者になるための学習ロードマップです。Rust を学ぶための段階的なガイドを提供しています。それぞれの段階での簡単な解説もあります。
  
# 企業のブログ
企業のブログでは、Rust に関する最新の技術情報や実践的なチュートリアルが多く提供されています。
- [【連載】Rustで有名アルゴリズムに挑戦 | TECH+（テックプラス）](https://news.mynavi.jp/techplus/series/rustalgorithm/)
    Rust で有名なアルゴリズムを実装しながら、Rust について理解を深めることができる連載です。記事の全文を読むにはアカウントの登録が必要です。
- [Shuttle Blog](https://www.shuttle.rs/blog/tags/all)
    主に Web に関連する Rust の技術記事が掲載されています。
- [Leptonic Solutions](https://leptonic.solutions/blog/)
    Rust の基本的なトピックを掘り下げた記事が少数ながら掲載されています。

# GitHub
- [The Algorithms - Rust](https://github.com/TheAlgorithms/Rust)
    さまざまなアルゴリズムが Rust で実装されています。アルゴリズムを実装するときの参考になります。
- [Awesome Rust](https://github.com/rust-unofficial/awesome-rust)
    Rustのコードとリソースの厳選リストです。さまざまな分野のプロジェクトが掲載されています。
# YouTube チャンネル
- **[Rust Videos](https://youtube.com/@rustvideos?si=T3F9aupM06ZTg9dU)**
    Rust の開発チームによって管理されている YouTube チャンネルです。RustConf の映像を視聴することができます。
    
- **[Let's Get Rusty](https://youtube.com/@letsgetrusty?si=1g4zbNOaosC68Uep)**
  Rust に関する様々なトピックを扱う YouTube チャンネルです。Rust の基本的な機能や最新のアップデートに関する内容を取り扱っています。

# 実践
以下は、実践的な記事一覧です。（私自身はまだ以下のどれも取り組んでいません...）

- [Rust Tutorial – Learn Advanced Iterators & Pattern Matching by Building a JSON Parser](https://www.freecodecamp.org/news/rust-tutorial-build-a-json-parser/)
    Rust を使って JSON パーサーを構築することで、高度なイテレーターやパターンマッチングの使い方を学ぶチュートリアルです。JSON パーサーは、パーサーの中でも比較的簡単に実装できるため、パーサー実装未経験者でも取り組みやすいです。
- [Hecto: Build your own text editor in Rust](https://www.flenker.blog/hecto/)
    Rust を使ってテキストエディタを構築するチュートリアルです。
- [Writing an OS in Rust](https://os.phil-opp.com/)
    Rust を使ってオペレーティングシステムを構築するプロジェクトです。
- [Writing a Unix-like OS in Rust](https://vmm.dev/en/rust/osinrust.mdl)
    Rust を使って Unix 風のオペレーティングシステムを構築するチュートリアルです。
- [CodeCrafters](https://app.codecrafters.io/tracks/rust)
    Redis や Git などの有名なソフトウェアを 1 から構築するシリーズです。アカウントの登録が必要です。


[^1]: [Stack Overflow Developer Survey 2023](https://survey.stackoverflow.co/2023/#section-admired-and-desired-programming-scripting-and-markup-languages) は、Stack Overflow が毎年実施している、世界中のソフトウェア開発者を対象とした調査で、調査内容は多岐にわたります。
[^2]: [Rustの友人 · プログラミング言語Rust](https://prev.rust-lang.org/ja-JP/friends.html) では Rust をプロダクトに利用している企業・プロジェクトが紹介されています。