学習計画

他の言語でプログラミングした経験があり、Rustは初めて、という出発点で用意した。各回は45〜60分が目安。週2〜3回なら4〜5週間、毎日進めてもよい。日付より、到達条件を優先する。未経験なら01・02をそれぞれ2〜3回に分ける。

毎回の進め方

  1. 予想(5分): 実行前に出力やコンパイル結果を自分の言葉で書く。
  2. 書く・動かす(20分): 最小例を読み、1つ変更して実行する。
  3. 壊す・調べる(15分): エラーを読み、ブレークポイントやテストで仮説を確かめる。
  4. 説明(5分): なぜそうなるか説明する。理解が曖昧なら、さらに小さい例に戻る。
  5. 記録(5分): docs/progress.md に実行結果と次の疑問を残す。

10回の道筋

回 テーマ・作業 到達条件
01 Cargo、main、変数、関数。挨拶を自分で書く(ex01) コードを変えて実行し、テストの失敗を読める
02 型、mut、if、for、式と文(ex02) 入力と戻り値の型を説明できる
03 String、move、Copy、clone、drop 移動とコピーの違いを図とコードで説明できる
04 &、&mut、&str、slice(ex03・ex04) 借用で元の値を残せる。参照が使われる範囲を説明できる
05 コンパイル診断、LLDB、panic、境界のバグ ブレークポイントで仮説を検証し、3つのテストを通せる
06 struct、enum、match、Vec、Option(ex06) 状態と「値なし」を型で表現できる
07 Result、?、I/O、終了コード(ex05) 失敗をpanicに頼らず呼び出し元へ返せる
08 impl、trait、generics、iterator、module 共通動作をtraitで表し、ループとiteratorを比較できる
09 mini-grepを読み、機能を追加する 引数・ファイル・検索処理・表示を分けて拡張できる
10 要件、回帰テスト、fmt、Clippy、振り返り 自作CLIを再現可能な手順とテスト付きで説明できる

最終課題

mini-grep に、まず --ignore-case、次に任意で --count を追加する。最初は標準ライブラリだけでよい。

  • 通常の検索結果と行番号を保つ。
  • 大文字小文字の扱い、引数の順序、未一致時の終了コードを先に決める。
  • 検索成功、未一致、空ファイル、不正な引数、存在しないファイルを試す。
  • 学習者自身が書いたテスト、実行例、READMEの使い方を揃える。

出発点のCLIは用意済みだが、拡張課題の解答は入れていない。

図解の使い方

Rust図解 で操作し、必ず対応するRustコードでも確認する。

  • 所有権: move・clone・Copyと、共有借用・可変借用の制約を比較する。
  • Result: 入力からOk/Errへの分岐を観察する。
  • デバッグ: 半開区間の終点を変え、最後の要素が処理されるか予想する。

図は理解を助ける簡略モデル。Rustをブラウザ内でコンパイルする機能はない。新しい疑問が出たら、図と10〜20行程度の実験コードを同じテーマで追加する。

その先

基礎が説明できたら、プロダクト学習の11〜30へ進む。同じ作業ログ「Trail」を、CLI → 保存基盤 → Web → ジョブと復旧 → 保守・配布へ育てる。

入口の Trail v0 は実行できる。各段階には具体的な作業手順、演習、検証、次へ進む条件がある。設計の考え方は メンタルモデル集と対応づけて学ぶ。

最初から全てを覚えない。asyncは保存と同期I/Oの後、unsafeは必要性がある時の専門分岐として扱う。

到達条件を使う理由

学習の順番は、章を読んだ順ではなく、前の小さな作業を自分で再現して説明できるかで決める。例えば所有権では、用語を暗記したかではなく、値がどこへ移動し、いつ借用だけで足りるかを短いコードと実行結果で説明する。失敗したコンパイルも証拠になる。診断の最初の数行を読み、最小例へ戻り、変更前後で何が変わったかを記録する。

各段階で新しい概念を増やし過ぎない。予想してから実行し、出力やエラーを観察して、自分の言葉で理由を書く。この往復を続けると、後で非同期処理や保存を扱う時にも、問題を型・所有者・失敗経路へ分解できる。学習記録には通過したコマンドだけでなく、まだ説明できない点も残す。次の実験の入力になるからである。

図解は実際のコンパイラの代わりにはならない。図で関係を予想し、対応する十行程度のRustを実行し、異なる結果なら仮説を直す。これを完了条件に含める。

一つの段階を終えるたび、変更した行、実行したコマンド、観察した結果を結び付けて残す。後から同じ問題に戻った時、記録が再現可能な説明になる。

理解は、観察可能な小さな根拠から少しずつ作る。焦らない。

参考: The Rust Book と Rust By Example。本を通読するより、各回の疑問に対応する章を読む。

教材のソースと演習は、非公開のKumyuリポジトリの labs/rust にまとまっている。自分の作業環境へcloneして、対象のレッスンと実行例を同じ版で読もう。

2024〜2026:固定された構文表でなく compiler feedback loop を学ぶ

Rust の2024年 project goals は、2024 Edition、より良い async 体験、stable Rust による Linux への進展を主要目標に置いた。Rust 1.85.0 は2025年2月に 2024 Edition を stable にした。最初の10 stage にとって重要なのは、edition が opt-in の互換性境界だという点である。新規 project は意図した edition を明示し、既存 project は cargo fix --edition で移行して diff をレビューする。自動書換えを設計 review と取り違えない。

stage 07 の後に次の実験を行う。edition = "2024" の scratch crate を作り、compile-time の演習として小さな unsafe extern 宣言を一度加えてから消す。別にローカル値を borrow する async || closure を書き、|| async { ... } と比較する。compiler diagnostic、rustc --version の正確な toolchain、await の地点で何を own しているかを記録する。新しい構文を集めるのでなく、compiler の境界を見えるようにするのが目的である。

公式 Rust Blog は2026-10-01に Rust 1.99.0 を掲載しており、この章の現在確認範囲に入る。これは現在の release 事実であり、全 lesson を変更する理由ではない。rustup update stable の後は release note を読み、workspace を変える前に既存 exercise を pin した toolchain で実行する。

AI 文脈も acceptance condition を変えない。Google の2026-10-01 Argon 発表は、C/C++ から Rust への移行に自動・手動 audit、emulation test、review を経て本番へ進むと記す。リンク先 r/rust はコミュニティ反応であり独立検証ではない。初学者は assistant に10行の counterexample を提案させてもよいが、自分で予測し、compile し、説明する。生成された ownership 説明を、対応する小プログラムと test が示すまで受け入れない。

MENTAL MODEL / 考える順序

発表から、自分の判断へ。

一次資料

発表の主張と、論文・公式ドキュメントの条件を並べて読む。

出典

01
The Rust Programming Language ↗doc.rust-lang.org · unknown
02
Rust Project goals for 2024 ↗blog.rust-lang.org · 2024-08-12
03
Announcing Rust 1.85.0 and Rust 2024 ↗blog.rust-lang.org · 2025-02-20
04
Announcing Rust 1.99.0 ↗blog.rust-lang.org · 2026-10-01
05
Introducing Gemini 4 Argon ↗blog.google · 2026-10-01
06
r/rust Google migration discussion (community experience) ↗www.reddit.com · 2026-10-01
07
r/rust AI-post discussion (community experience) ↗www.reddit.com · 2026-09-12

自分のノート