0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者完全版】0から Rust を3日で書けるようになる最短ハンズオン2026年版

0
Posted at

Rust は「難しい言語」と長らく言われてきたが、2026年現在は学習リソースが充実し、cargo 周辺ツールも洗練されたので、3日あれば実用的なコマンドラインツールくらいは自分で書けるレベルに到達できる。本稿では、プログラミング自体は経験あるが Rust は触ったことがないという読者を想定し、3日間でやることを時間割形式で提示する。

学習のゴール

  • 所有権・借用・ライフタイムを「とりあえず動かせる」レベルで理解する
  • cargo での依存追加・テスト・ビルドが自走できる
  • 簡単な CLI ツール(ファイルを読んで集計する系)を最後まで書ききる

1日目: 環境構築と基礎文法(4時間)

インストール

# rustup 経由が一番素直
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
rustc --version
cargo --version

Windows なら公式の rustup-init.exe を実行するだけで良い。インストール直後に rustc --versioncargo --version が通ることを必ず確認する。

最初のプロジェクト

cargo new hello_rust
cd hello_rust
cargo run

src/main.rs を開いて、まずは変数と型を触る。

fn main() {
    let name: &str = "Rust";
    let mut count: i32 = 0;
    count += 1;
    println!("Hello, {}! count = {}", name, count);
}

let はデフォルトで不変、mut を付けると可変。これだけ覚えれば1日目の前半は十分だ。

制御構文と関数

fn add(a: i32, b: i32) -> i32 {
    a + b // セミコロン無しは式 = 戻り値
}

fn main() {
    for i in 0..5 {
        if i % 2 == 0 {
            println!("{} is even", i);
        }
    }
    println!("sum = {}", add(3, 4));
}

2日目: 所有権・構造体・エラー処理(5時間)

所有権の最小例

fn main() {
    let s = String::from("hello");
    let t = s; // s は move されたので、ここ以降 s は使えない
    // println!("{}", s); // コンパイルエラー
    println!("{}", t);
}

借用 (&) を使えば所有権を奪わずに値を渡せる。

fn len(s: &String) -> usize {
    s.len()
}

構造体と impl

struct User {
    name: String,
    age: u32,
}

impl User {
    fn new(name: &str, age: u32) -> Self {
        Self { name: name.to_string(), age }
    }
    fn greet(&self) {
        println!("Hi, I'm {} ({})", self.name, self.age);
    }
}

Result と ? 演算子

use std::fs;
use std::io;

fn read_first_line(path: &str) -> Result<String, io::Error> {
    let body = fs::read_to_string(path)?;
    Ok(body.lines().next().unwrap_or("").to_string())
}

? は「エラーなら早期 return、成功なら中身を取り出す」というショートカットだ。これを覚えると一気に書きやすくなる。

3日目: 実用 CLI ツールを完成させる(4時間)

題材は「ログファイルを読んで、ステータスコードごとに件数を集計する」CLI とする。

cargo new logstat
cd logstat
cargo add clap --features derive
use clap::Parser;
use std::collections::HashMap;
use std::fs;

#[derive(Parser)]
struct Args {
    /// 入力ファイル
    file: String,
}

fn main() {
    let args = Args::parse();
    let body = fs::read_to_string(&args.file).expect("ファイル読込失敗");
    let mut counts: HashMap<String, u32> = HashMap::new();
    for line in body.lines() {
        if let Some(code) = line.split_whitespace().nth(8) {
            *counts.entry(code.to_string()).or_insert(0) += 1;
        }
    }
    let mut pairs: Vec<_> = counts.into_iter().collect();
    pairs.sort_by(|a, b| b.1.cmp(&a.1));
    for (code, n) in pairs {
        println!("{} {}", code, n);
    }
}

cargo run -- access.log で動く。これが終わるとあなたは「Rust で何か作れる人」になっている。

まとめ

3日で Rust を完璧に理解することはできない。だが、3日もあれば「自分用のツールを Rust で書く」覚悟が決まる。所有権で詰まったら、まずは clone() で逃げてよい。最初から最適化しなくても良いというのが、Rust 学習の最大のコツだ。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?