Rustプログラミング言語完全学習ロードマップ【2024年版】

オフ 投稿者: sesera

目次

はじめに

こんにちは!Webエンジニア歴3年、現役フリーランスのせせらです!

いきなりですが、今後Rustって今後さらに流行っていくと思うんですよね。

今はWebアプリ開発でRustを使用している案件はあまり見ませんが、一部有名な企業では採用され始めている状況からも、低レイヤーな開発以外でも今後増えていくと感じます。

という訳で、今回はRustのロードマップを考えてみたので、参考にしてみてください。

第1段階:基礎を固める(所要時間:2-4週間)

開発環境のセットアップ

  • Rustupのインストール
  • VSCode + Rust Analyzer
  • 補完ツール:rust-analyzer
  • リンター:clippy
  • フォーマッター:rustfmt

基本的なクレート管理

  • cargo(パッケージマネージャー)の使用方法
  • Cargo.toml の設定
  • cargo-edit(依存関係管理補助)
  • cargo-watch(自動ビルド)

基本文法の習得

  • 変数とデータ型
  • 所有権システムの理解
  • 基本的な制御構造
  • エラーハンドリング(Result、Option)

第2段階:主要ライブラリの習得(所要時間:1-2ヶ月)

基本ユーティリティ

  • serde: シリアライズ/デシリアライズ
  • log + env_logger: ロギング
  • clap: コマンドライン引数解析
  • rand: 乱数生成
  • chrono: 日付・時刻処理

テスト関連

  • pretty_assertions: テスト用アサーション
  • mockall: モッキングフレームワーク
  • criterion: ベンチマーキング
  • proptest: プロパティベーステスト

データ処理

  • csv: CSVファイル処理
  • regex: 正規表現
  • lazy_static: 静的変数
  • dotenv: 環境変数管理

第3段階:Web開発(所要時間:2-3ヶ月)

Webフレームワーク

  • Actix-web: 高性能Webフレームワーク
  • Rocket: 使いやすいWebフレームワーク
  • Axum: Tokioベースの最新フレームワーク
  • Warp: 型安全なWebフレームワーク

勉強するのはActix-webかAxumだけで良いかも。

データベース

  • SQLx: async SQLクライアント
  • Diesel: ORMフレームワーク
  • rusqlite: SQLiteバインディング
  • mongodb: MongoDBドライバー

非同期処理

  • tokio: 非同期ランタイム
  • async-std: 非同期標準ライブラリ
  • futures: Future処理
  • tower: サービス抽象化

第4段階:システムプログラミング(所要時間:2-3ヶ月)

システムインターフェース

  • nix: Unixシステムインターフェース
  • windows-rs: Windows API
  • libc: Cライブラリバインディング

ネットワーキング

  • tonic: gRPCフレームワーク
  • reqwest: HTTPクライアント
  • websocket: WebSocket実装
  • rdkafka: Kafkaクライアント

並行処理

  • rayon: データ並列処理
  • crossbeam: 並行プリミティブ
  • parking_lot: 同期プリミティブ

第5段階:特殊領域(所要時間:2-3ヶ月)

GUI開発

  • egui: 軽量GUIフレームワーク
  • iced: クロスプラットフォームGUI
  • druid: GUIツールキット

ゲーム開発

  • Bevy: モダンなゲームエンジン
  • ggez: 2Dゲーム開発
  • Amethyst: データ駆動ゲームエンジン

組み込み開発

  • embedded-hal: 組み込みハードウェア抽象化
  • cortex-m: ARM Cortex-M向け
  • arduino-hal: Arduino向け

実践プロジェクトのアイデア

初級プロジェクト

  1. CLIツール開発
    • clap
    • env_logger
    • serde_json
  2. ファイル処理ツール
    • walkdir
    • regex
    • rayon

中級プロジェクト

  1. WebAPI開発
    • actix-web/axum
    • sqlx
    • jwt
  2. マイクロサービス
    • tonic
    • tokio
    • prometheus

上級プロジェクト

  1. 分散システム
    • rdkafka
    • elasticsearch
    • lapin (RabbitMQ)
  2. リアルタイムアプリケーション
    • tokio
    • websocket
    • redis

学習リソース

公式ドキュメント

  • The Rust Programming Language
  • Rust by Example
  • Async Book

コミュニティリソース

  • crates.io(パッケージレジストリ)
  • docs.rs(ドキュメント)
  • lib.rs(代替パッケージインデックス)