Rust

Rustは、メモリ安全性と速度を両立させたプログラミング言語です。所有権・借用という独自の仕組みで、null参照やデータ競合をコンパイル時に防ぎます。本コースでは、変数・条件分岐・繰り返しといった基礎から、所有権・参照・構造体・enumとmatch・Resultによるエラー処理・イテレータ・ジェネリクス・トレイト・ライフタイム・モジュール・テスト・スマートポインタ・パターンマッチまでを体系的に学びます。後半ではスレッドやアトミック操作による並行処理、整数・ビット演算・メモリレイアウト・unsafe といった低レイヤー、コマンドライン引数やファイル・標準入出力を使うCLIツール、HTTPリクエストの解析とルーティング、Cargoによるパッケージ管理まで、実務に通じる内容へ踏み込みます。

  • Rust

こんな人におすすめ

Rustを基礎から学びたい方、メモリ安全な言語の考え方を身につけたい方におすすめのコースです。

  • プログラミング未経験からRustを学びたい方
  • システムプログラミングや高速な処理に興味がある方
  • 所有権や借用の仕組みを理解したい方
  • C++やPythonなどの経験があり、Rustにも挑戦したい方

Rustで学べること

本コースでは、Rustの基本構文(変数・型・条件分岐・繰り返し・文字列・関数)から、Rustの核心である所有権・借用・スライス、VecとHashMap、構造体とメソッド、enumとmatch、Option/Resultと実践的なエラー処理、イテレータとクロージャ、ジェネリクス・トレイト・ライフタイム、モジュールによるコード整理、テスト駆動開発、Box/Rc/RefCellなどのスマートポインタ、パターンマッチの応用を学習できます。さらに std::thread・チャネル・Arc/Mutex・Send/Sync・スコープ付きスレッド・アトミック操作による並行処理、整数表現・ビット演算・メモリレイアウト・unsafe、コマンドライン引数・環境変数・ファイル・標準入出力を扱うCLIツール、HTTPリクエストの解析とルーティング、Cargoとcrates.ioによるパッケージ管理まで、実務で通用する内容を段階的に身につけられます。

Rustをはじめよう

Rustの基礎を学んで、はじめてのプログラムを動かそう

  • Rust基礎
  • println
  • 数値計算
  • 振り返り
学習内容をみる (5演習)

変数を使ってデータを管理しよう プラス

変数を使ってデータを管理しよう。

  • 変数を使おう
  • 変数を書き換えよう(mut)
  • シャドーイング
  • 複数の変数を埋め込もう
  • 振り返り
学習内容をみる (5演習)

データ型について学ぼう プラス

データ型について学ぼう。

  • 整数の型
  • 小数・真偽値・文字
  • as で型変換
  • 型注釈が必要な場面
  • 振り返り
学習内容をみる (5演習)

タプル・配列・定数を使おう プラス

複数の値をひとまとめにするタプル、固定長の配列、再代入できない定数を学びます。loop と break で値を返す書き方も身につけましょう。

  • タプル
  • 配列
  • 定数
  • loop
  • 振り返り
学習内容をみる (6演習)

条件分岐でプログラムを制御しよう プラス

条件分岐でプログラムを制御しよう。

  • if文
  • else
  • else if
  • 論理演算子
  • 振り返り
学習内容をみる (6演習)

繰り返し処理でプログラムを制御しよう プラス

繰り返し処理でプログラムを制御しよう。

  • loop と break
  • while
  • for と範囲
  • break と continue
  • 振り返り
学習内容をみる (6演習)

文字列を使ってみよう プラス

文字列を使ってみよう。

  • &str と String
  • 文字列をつなげよう
  • 文字列の長さ
  • format! で組み立てよう
  • 振り返り
学習内容をみる (5演習)

関数について学ぼう プラス

関数について学ぼう。

  • 関数を作ろう
  • 引数
  • 戻り値
  • スコープ
  • 振り返り
学習内容をみる (6演習)

所有権を理解しよう プラス

所有権を理解しよう。

  • move(所有権の移動)
  • Copy 型
  • 関数への所有権の移動
  • clone で複製
  • 振り返り
学習内容をみる (5演習)

参照と借用を使おう プラス

参照と借用を使おう。

  • 参照を渡そう
  • 可変参照
  • 借用のルール
  • 参照と所有権を使い分けよう(総合課題)
  • 振り返り
学習内容をみる (5演習)

スライスでデータの一部を参照しよう プラス

所有権を移さずにデータの一部分を参照する「スライス」を学びます。文字列スライスと配列スライスを使いこなせるようになりましょう。

  • スライス
  • &str
  • 参照
  • first_word
  • 振り返り
学習内容をみる (6演習)

VecとHashMapでデータをまとめよう プラス

VecとHashMapでデータをまとめよう。

  • Vec を作ろう
  • len と iter ループ
  • Vec の合計
  • HashMap
  • 振り返り
学習内容をみる (6演習)

構造体とメソッドを作ろう プラス

構造体とメソッドを作ろう。

  • struct を作ろう
  • フィールドを使おう
  • derive(Debug) で中身を見よう
  • impl でメソッド
  • 振り返り
学習内容をみる (6演習)

enumとmatchを使おう プラス

enumとmatchを使おう。

  • enum を作ろう
  • match で分岐
  • Option で「ある/ない」
  • if let と match で取り出す
  • 振り返り
学習内容をみる (6演習)

エラーを処理しよう プラス

エラーを処理しよう。

  • Result を知ろう
  • match で安全に処理
  • unwrap と expect
  • 振り返り
学習内容をみる (4演習)

イテレータとクロージャを使おう プラス

イテレータとクロージャを使おう。

  • クロージャ
  • iter と map
  • iter と filter
  • iter で合計と最大を集計しよう(総合課題)
  • 振り返り
学習内容をみる (5演習)

ジェネリクスでコードを汎用化しよう プラス

どんな型でも動く関数・構造体・enum を書く「ジェネリクス」を学びます。型パラメータとモノモーフ化の仕組みを身につけましょう。

  • ジェネリクス
  • 型パラメータ
  • impl<T>
  • Option/Result
  • 振り返り
学習内容をみる (6演習)

実務レベルまで プロ

トレイトで共通の振る舞いを定義しよう プロ

型どうしの共通の振る舞いを定義する「トレイト」を学びます。実装・デフォルト実装・トレイト境界・derive・Display を身につけましょう。

  • トレイト
  • impl for
  • トレイト境界
  • derive
  • Display
  • 振り返り
学習内容をみる (7演習)

ライフタイムで参照の有効期間を示そう プロ

参照がどれだけ生きるかを示す「ライフタイム注釈」を学びます。ライフタイム省略のルールと、参照を持つ構造体を身につけましょう。

  • ライフタイム
  • 'a
  • 省略規則
  • 構造体の参照
  • 振り返り
学習内容をみる (6演習)

実践的なエラー処理を学ぼう プロ

? 演算子・Result を返す main・独自エラー型・From による変換を学び、実務で通用するエラー処理を身につけましょう。

  • ?演算子
  • 独自エラー型
  • From
  • Result/Option
  • 振り返り
学習内容をみる (7演習)

モジュールでコードを整理しよう プロ

mod・pub・use でコードを整理し、ファイル分割まで行います。crate ルートからのパスの辿り方を身につけましょう。

  • mod
  • pub
  • use
  • ファイル分割
  • crate/super
  • 振り返り
学習内容をみる (6演習)

テストを書こう プロ

#[test]・assert 系マクロ・should_panic でユニットテストを書きます。テスト駆動で実装を進める流れを身につけましょう。

  • #[test]
  • assert_eq!
  • should_panic
  • TDD
  • 振り返り
学習内容をみる (6演習)

スマートポインタを使いこなそう プロ

Box・Rc・RefCell・Deref・Drop を学び、所有権の高度なパターンを使いこなせるようになりましょう。

  • Box
  • Rc
  • RefCell
  • Deref
  • Drop
  • 振り返り
学習内容をみる (7演習)

コレクションと文字列処理を実践しよう プロ

chars/lines、HashMap の entry、enumerate/zip/fold/find、Result への collect など、実務で頻出のコレクション操作を身につけましょう。

  • 文字列処理
  • entry API
  • イテレータ応用
  • collect
  • 振り返り
学習内容をみる (7演習)

パターンマッチを極めよう プロ

ガード・@バインディング・let-else・while let・matches! まで、パターンマッチの全表現力を使いこなせるようになりましょう。

  • ガード
  • @バインディング
  • let-else
  • while let
  • matches!
  • 振り返り
学習内容をみる (6演習)

標準入力で数当てゲームを作ろう プロ

標準入力で数当てゲームを作ろう。

  • 標準入力を受け取ろう
  • 入力を数値に変換
  • 疑似乱数
  • 数当てゲーム
  • 振り返り
学習内容をみる (6演習)

スコープ付きスレッドとアトミック操作を学ぼう プロ

thread::scope とアトミック型で、もっと自在に並行処理しましょう。

  • thread::scope
  • ScopedJoinHandle
  • AtomicUsize
  • Ordering
  • 共有と可変性
  • 振り返り
学習内容をみる (6演習)

低レイヤーを探る: 整数とビット演算 プロ

2進数・16進数リテラル、ビット演算とフラグ、値の詰め込みと取り出し、オーバーフローの扱いを学びます。

  • ビット演算
  • フラグ
  • 16進数
  • オーバーフロー
  • 振り返り
学習内容をみる (6演習)

低レイヤーを探る: メモリと unsafe プロ

型のサイズとアドレス、生ポインタ、unsafe fn と SAFETY コメント、安全なラッパの作り方、static mut の危険性を学びます。

  • unsafe
  • 生ポインタ
  • メモリ
  • SAFETY
  • 振り返り
学習内容をみる (7演習)

CLIツールを作ろう プロ

コマンドライン引数・環境変数・ファイル・標準入出力を扱い、エラー処理を備えた実用的な検索ツールを完成させます。

  • CLI
  • env::args
  • std::fs
  • eprintln!
  • process::exit
  • 振り返り
学習内容をみる (7演習)

HTTPとサーバーの仕組み プロ

HTTPリクエストの解析・レスポンスの組み立て・ルーティングを標準入出力で実装し、Webサーバーの動作原理を体験します。

  • HTTP
  • リクエスト解析
  • ルーティング
  • ステータスコード
  • 振り返り
学習内容をみる (6演習)

Cargo とエコシステムを学ぼう プロ

cargo new でプロジェクトを作り、cargo build/run/test を実際に動かし、crates.io からクレートを追加する一連の流れを学びます。

  • Cargo
  • Cargo.toml
  • crates.io
  • clippy/fmt
  • 振り返り
学習内容をみる (5演習)