ウォーターフォールは間違っている!私がアジャイル開発をエンジニアに勧める理由
Rustプログラミング言語完全学習ロードマップ【2024年版】
目次
はじめに
こんにちは!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向け
実践プロジェクトのアイデア
初級プロジェクト
- CLIツール開発
- clap
- env_logger
- serde_json
- ファイル処理ツール
- walkdir
- regex
- rayon
中級プロジェクト
- WebAPI開発
- actix-web/axum
- sqlx
- jwt
- マイクロサービス
- tonic
- tokio
- prometheus
上級プロジェクト
- 分散システム
- rdkafka
- elasticsearch
- lapin (RabbitMQ)
- リアルタイムアプリケーション
- tokio
- websocket
- redis
学習リソース
公式ドキュメント
- The Rust Programming Language
- Rust by Example
- Async Book
コミュニティリソース
- crates.io(パッケージレジストリ)
- docs.rs(ドキュメント)
- lib.rs(代替パッケージインデックス)
- 内臓GPUの性能が良いミニPCをコスパ順でまとめてみた
- TypeScriptで非推奨になっている機能一覧
- TypeScriptのexport defaultが非推奨となっていた件
- TypeScriptのNamespaceが非推奨となっていた件
- TypeScriptのthis.constructorが非推奨となっていた件
- TypeScriptのコンストラクタ引数でのpublic/privateが非推奨となっていた件
- TypeScriptのvarキーワードが非推奨となっていた件
- TypeScriptのFunction型が非推奨となっていた件
- TypeScriptのString, Number, Boolean型が非推奨となっていた件
- TypeScriptのanyが非推奨となっていた件
- TypeScriptのenumが非推奨となっていた件
- 内蔵GPUのメモリ割り当てを増やす方法【2024年版】
- ウォーターフォールは間違っている!私がアジャイル開発をエンジニアに勧める理由
- IT業界の酷い下請け構造は誰のせいなのか
- IT業界の下請け構造が酷すぎる!!
- クラウディアと他のクラウドソーシングサービスの比較
- Zigプログラミング言語とは?RustやC++との違いを解説
- めっちゃ早いPython?Nimというプログラミング言語について
- Rubyの静的型付け版?Crystalってどんな言語なのか解説
- Elixirは開発しづらい?Gleamへ移行しよう – 開発体験が劇的に改善
- Gleamの基本的な構文とデータ型
- Gleamの環境構築方法[Linux]
- Gleam言語でのWebアプリ開発ロードマップ
- MacBook Pro M1の外部ディスプレイちらつき現象について
- MacBook Air M2で4K60Hz外部ディスプレイを使用する方法
- Ryzen 7040HS Phoenix搭載LinuxマシンのGPUドライバー設定ガイド
- 注目を集める新星Gleam言語!Elixirとの違いから見る特徴と可能性
- DellとHP、買うならどっちがマシ?徹底比較ガイド
- サブドメインのメリット・デメリットを徹底解説!
- 中古ドメインって実際どうなの?メリット・デメリットを解説
- ノートパソコン バッテリー持ち ランキング【2024年4月】徹底比較!
- なぜ安い?workドメインが安価な理由を徹底解説!
- メキシコペソ投資ってどうなの?過去データで見る特徴とリスク
- なぜ私がトルコリラ投資をおすすめしないのか – データで見る実態と注意点
- 【2024年4月最新】世界の通貨別金利ランキング!今一番利回りが高い通貨はコレだ!
- 金利5%台!?米ドル保有で高金利を受け取る方法
- axumのルーティングを整理して別ファイルに分ける方法
- Acitx-webとAxumってどっちがいいの?RustのWebフレームワーク比較
- 次期C#?注目のプログラミング言語F#を徹底解説
- 電気ストーブと石油ストーブはどっちがいい?費用や特徴を徹底比較!
- ゲーミングキーボードって正直あんまり変わらないよねって話
- 【2024年版】今後はやるマイナープログラミング言語5選|現役エンジニアが解説
- Rustの現状の課題と発展途上な部分
- 私がRustがC++より優れていると感じる理由
- Rustプログラミング言語完全学習ロードマップ【2024年版】
- おすすめプログラミングスクール比較【2024年版】現役エンジニアが徹底解説
- 未経験からでもエンジニアに全然なれる件
- Model、Repository、Controller、Serviceとは?基礎から分かりやすく解説!
- Hibernateって何?
- JPAって何?