Rustをはじめよう
Rustの基礎を学んで、はじめてのプログラムを動かそう
- Rust基礎
- println
- 数値計算
- 振り返り
学習内容をみる (5演習)
変数を使ってデータを管理しよう プラス
変数を使ってデータを管理しよう。
- 変数を使おう
- 変数を書き換えよう(mut)
- シャドーイング
- 複数の変数を埋め込もう
- 振り返り
データ型について学ぼう プラス
データ型について学ぼう。
- 整数の型
- 小数・真偽値・文字
- as で型変換
- 型注釈が必要な場面
- 振り返り
学習内容をみる (5演習)
タプル・配列・定数を使おう プラス
複数の値をひとまとめにするタプル、固定長の配列、再代入できない定数を学びます。loop と break で値を返す書き方も身につけましょう。
- タプル
- 配列
- 定数
- loop
- 振り返り
条件分岐でプログラムを制御しよう プラス
条件分岐でプログラムを制御しよう。
- if文
- else
- else if
- 論理演算子
- 振り返り
学習内容をみる (6演習)
繰り返し処理でプログラムを制御しよう プラス
繰り返し処理でプログラムを制御しよう。
- loop と break
- while
- for と範囲
- break と continue
- 振り返り
文字列を使ってみよう プラス
文字列を使ってみよう。
- &str と String
- 文字列をつなげよう
- 文字列の長さ
- format! で組み立てよう
- 振り返り
関数について学ぼう プラス
関数について学ぼう。
- 関数を作ろう
- 引数
- 戻り値
- スコープ
- 振り返り
学習内容をみる (6演習)
所有権を理解しよう プラス
所有権を理解しよう。
- move(所有権の移動)
- Copy 型
- 関数への所有権の移動
- clone で複製
- 振り返り
参照と借用を使おう プラス
参照と借用を使おう。
- 参照を渡そう
- 可変参照
- 借用のルール
- 参照と所有権を使い分けよう(総合課題)
- 振り返り
学習内容をみる (5演習)
スライスでデータの一部を参照しよう プラス
所有権を移さずにデータの一部分を参照する「スライス」を学びます。文字列スライスと配列スライスを使いこなせるようになりましょう。
- スライス
- &str
- 参照
- first_word
- 振り返り
VecとHashMapでデータをまとめよう プラス
VecとHashMapでデータをまとめよう。
- Vec を作ろう
- len と iter ループ
- Vec の合計
- HashMap
- 振り返り
構造体とメソッドを作ろう プラス
構造体とメソッドを作ろう。
- struct を作ろう
- フィールドを使おう
- derive(Debug) で中身を見よう
- impl でメソッド
- 振り返り
enumとmatchを使おう プラス
enumとmatchを使おう。
- enum を作ろう
- match で分岐
- Option で「ある/ない」
- if let と match で取り出す
- 振り返り
エラーを処理しよう プラス
エラーを処理しよう。
- Result を知ろう
- match で安全に処理
- unwrap と expect
- 振り返り
イテレータとクロージャを使おう プラス
イテレータとクロージャを使おう。
- クロージャ
- iter と map
- iter と filter
- iter で合計と最大を集計しよう(総合課題)
- 振り返り
ジェネリクスでコードを汎用化しよう プラス
どんな型でも動く関数・構造体・enum を書く「ジェネリクス」を学びます。型パラメータとモノモーフ化の仕組みを身につけましょう。
- ジェネリクス
- 型パラメータ
- impl<T>
- Option/Result
- 振り返り
実務レベルまで プロ
トレイトで共通の振る舞いを定義しよう プロ
型どうしの共通の振る舞いを定義する「トレイト」を学びます。実装・デフォルト実装・トレイト境界・derive・Display を身につけましょう。
- トレイト
- impl for
- トレイト境界
- derive
- Display
- 振り返り
ライフタイムで参照の有効期間を示そう プロ
参照がどれだけ生きるかを示す「ライフタイム注釈」を学びます。ライフタイム省略のルールと、参照を持つ構造体を身につけましょう。
- ライフタイム
- 'a
- 省略規則
- 構造体の参照
- 振り返り
実践的なエラー処理を学ぼう プロ
? 演算子・Result を返す main・独自エラー型・From による変換を学び、実務で通用するエラー処理を身につけましょう。
- ?演算子
- 独自エラー型
- From
- Result/Option
- 振り返り
モジュールでコードを整理しよう プロ
mod・pub・use でコードを整理し、ファイル分割まで行います。crate ルートからのパスの辿り方を身につけましょう。
- mod
- pub
- use
- ファイル分割
- crate/super
- 振り返り
テストを書こう プロ
#[test]・assert 系マクロ・should_panic でユニットテストを書きます。テスト駆動で実装を進める流れを身につけましょう。
- #[test]
- assert_eq!
- should_panic
- TDD
- 振り返り
スマートポインタを使いこなそう プロ
Box・Rc・RefCell・Deref・Drop を学び、所有権の高度なパターンを使いこなせるようになりましょう。
- Box
- Rc
- RefCell
- Deref
- Drop
- 振り返り
コレクションと文字列処理を実践しよう プロ
chars/lines、HashMap の entry、enumerate/zip/fold/find、Result への collect など、実務で頻出のコレクション操作を身につけましょう。
- 文字列処理
- entry API
- イテレータ応用
- collect
- 振り返り
パターンマッチを極めよう プロ
ガード・@バインディング・let-else・while let・matches! まで、パターンマッチの全表現力を使いこなせるようになりましょう。
- ガード
- @バインディング
- let-else
- while let
- matches!
- 振り返り
標準入力で数当てゲームを作ろう プロ
標準入力で数当てゲームを作ろう。
- 標準入力を受け取ろう
- 入力を数値に変換
- 疑似乱数
- 数当てゲーム
- 振り返り
スレッドで並行処理しよう プロ
std::thread で並行処理を学びましょう。
- std::thread
- spawn と join
- move クロージャ
- mpsc チャネル
- Arc と Mutex
- Send と Sync
- 振り返り
スコープ付きスレッドとアトミック操作を学ぼう プロ
thread::scope とアトミック型で、もっと自在に並行処理しましょう。
- thread::scope
- ScopedJoinHandle
- AtomicUsize
- Ordering
- 共有と可変性
- 振り返り
低レイヤーを探る: 整数とビット演算 プロ
2進数・16進数リテラル、ビット演算とフラグ、値の詰め込みと取り出し、オーバーフローの扱いを学びます。
- ビット演算
- フラグ
- 16進数
- オーバーフロー
- 振り返り
低レイヤーを探る: メモリと unsafe プロ
型のサイズとアドレス、生ポインタ、unsafe fn と SAFETY コメント、安全なラッパの作り方、static mut の危険性を学びます。
- unsafe
- 生ポインタ
- メモリ
- SAFETY
- 振り返り
CLIツールを作ろう プロ
コマンドライン引数・環境変数・ファイル・標準入出力を扱い、エラー処理を備えた実用的な検索ツールを完成させます。
- CLI
- env::args
- std::fs
- eprintln!
- process::exit
- 振り返り
HTTPとサーバーの仕組み プロ
HTTPリクエストの解析・レスポンスの組み立て・ルーティングを標準入出力で実装し、Webサーバーの動作原理を体験します。
- HTTP
- リクエスト解析
- ルーティング
- ステータスコード
- 振り返り
Cargo とエコシステムを学ぼう プロ
cargo new でプロジェクトを作り、cargo build/run/test を実際に動かし、crates.io からクレートを追加する一連の流れを学びます。
- Cargo
- Cargo.toml
- crates.io
- clippy/fmt
- 振り返り
よくある質問
- Rustは初心者でも学べますか?
- はい、学べます。本コースでは図解を交えながら、Rust固有の概念である所有権も基礎から順番に進めるため、プログラミング未経験の方でも安心して学習を進められます。
- 開発環境の準備は必要ですか?
- 必要ありません。ブラウザ上でRustのコンパイルと実行ができるため、インストールせずにすぐ始められます。
- 何を作れるようになりますか?
- 標準入力で遊ぶ数当てゲーム、ファイルを検索するCLIツール、HTTPリクエストを処理する簡易サーバーなどを作れます。最後はCargoによるプロジェクト管理まで学びます。