コンテンツにスキップ

embedded-rust.com について

embedded-rust.com は、組み込み Rust(no_std を含む)開発を始める人・深める人のためのドキュメントサイトです。 「まず動かす」だけでなく、継続的に運用できる設計・デバッグ・チーム開発まで見据えた情報提供を目指しています。


組み込み Rust は、C/C++ の資産が多い現場においても徐々に採用が進み、以下のような期待と課題が並行して存在します。

  • 期待
    • メモリ安全性・型による設計支援
    • 依存関係管理(Cargo)と再現性
    • エコシステム(HAL、RTIC、async、ログなど)の充実
  • 課題
    • ターゲットやボードによる手順差(ビルド、フラッシュ、デバッグ)
    • no_std 特有の落とし穴(アロケータ、panic、リンク)
    • crate 選定の難しさ(成熟度、互換性、メンテ状況)

embedded-rust.com は、これらを踏まえ、次の3点を大事にします。

  1. 初心者でも再現できる手順(環境構築・最小構成・トラブルシュート)
  2. crate 選定の判断材料(目的、導入コスト、相性、メンテ状況)
  3. 比較と意思決定(アーキテクチャ選択、デバッグ手法、ログ設計)

1) Crates 紹介(ライブラリ辞典)

Section titled “1) Crates 紹介(ライブラリ辞典)”

組み込み Rust の開発では、目的に応じて crate を組み合わせることが多くなります。 しかし、同じ領域(ログ、panic、HAL、テスト、RTOS 連携等)に複数の選択肢があり、初学者ほど迷いがちです。

このサイトでは、次の観点で crate を紹介します。

  • 何を解決する crate か(どんな問題に効くか)
  • 導入の最短手順(Cargo features、最低限のコード)
  • よくあるハマりどころ(linker、feature 競合、ターゲット差)
  • 組み合わせの定番(例: defmt + defmt-rtt + panic-probe
  • いつ採用すべきか / 避けるべきか(用途・制約・成熟度)

2) Dev Tips(実務で使える小技・定番手順)

Section titled “2) Dev Tips(実務で使える小技・定番手順)”

Dev Tips は「手元で動かす」だけで終わらないための実務寄りノウハウ集です。

例:

  • probe-rs / cargo-embed を使ったフラッシュとデバッグの定番
  • memory.x やリンカ設定の読み方
  • panic の扱い、ログ出力の設計(最小構成と拡張)
  • CI でのビルド(thumbv7em-none-eabihf など)と静的チェック
  • no_std でのエラーハンドリングと設計パターン

3) 技術比較(選定のためのガイド)

Section titled “3) 技術比較(選定のためのガイド)”

「結局どれを選ぶのが良いの?」に答えるのが技術比較です。 特定の技術を過度に推すのではなく、比較軸を明確にして判断できる形を目指します。

例:

  • RTT / UART / SWO のログ出力比較(速度、導入難度、安定性)
  • probe-rs / OpenOCD / vendor tool の比較
  • panic-halt / panic-probe / panic-semihosting の比較
  • async / RTIC / bare-metal loop の使い分け

  • これから組み込み Rust を触る人(ボードに書き込んで動かしたい)
  • C/C++ 組み込み経験があり、Rust の導入を検討している人
  • 既に Rust で組み込みをしているが、crate 選定やデバッグ体験を改善したい人
  • チームでの運用(レビュー、CI、再現性)まで視野に入れている人

このサイトはコミュニティの知見で育ちます。貢献は小さくて構いません。

  • 新しい crate の追加
  • 記事の誤字修正、リンク切れ修正
  • 手順の更新(ツール更新で変わった箇所の追従)
  • トラブルシュートの追記
  • 技術比較の記事の提案

貢献方法の詳細は Contributing を参照してください。

  • 20 YOE
  • 業務で使用する言語は C, C++, C#, Rust, Python, TypeScript, JavaScript, Verilog など中心
  • 組み込み中心で Renesas SH/RX/RZ シリーズを中心に開発
  • 回路・FPGA・マイコン・バックエンドのPCソフトウェア・フロントエンドのUIまでのコンテンツを提供します