Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ruby × 車 ~ 愛車のデータを取得せよ! ~
Search
matsudai
February 23, 2026
290
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby × 車 ~ 愛車のデータを取得せよ! ~
出雲Ruby会議01
https://regional.rubykaigi.org/izumo01/
matsudai
February 23, 2026
More Decks by matsudai
See All by matsudai
Rubyでゲームを作りたい
matsudai
0
59
SmTでRaspberry Pi Picoを動かす
matsudai
0
100
Ruby × 車 (その後) ~課題:オフライン対応~
matsudai
0
72
流行れ! AI Tuber!
matsudai
0
170
Islands on Rails !!
matsudai
0
80
Rubyで動かす検索機能
matsudai
0
180
ruby.wasmが簡単にビルドできるようになっていた
matsudai
0
190
Featured
See All Featured
Bash Introduction
62gerente
615
220k
Balancing Empowerment & Direction
lara
6
1.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
520
Leo the Paperboy
mayatellez
9
2.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
380
Fireside Chat
paigeccino
43
4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Transcript
Ruby × 車 ~ 愛車のデータを取得せよ! ~ Fujihara Katsutoshi (@__matsudai__) 2026-02-21
出雲Ruby会議01
自己紹介 名前: matsudai / ふじはら 所属: 事業推進部 松江在住のソフトウェアエンジニアです。 仕事はRuby、React、JavaなどでのWebシステム開発が中心です。 これは実家(出雲)の犬と猫
もくじ ・ きっかけ ① Ruby Kaigi 2024 ②
かにロボ ・ しくみ ① 車との接続 ② プログラミング ・ デモ
きっかけ
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① https://x.com/Kirika_K2/status/1791819381414199769
きっかけ ① お仕事で車関係のwebサービス作ってて… ふむふむ @__matsudai__ @nukumaro22 Ruby Kaigi 2024 Day
4(会期翌日の観光)にて…
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① お仕事で車関係のwebサービス作ってて… Rubyが車で動いたら面白いよね !?
@__matsudai__ @nukumaro22
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① お仕事で車関係のwebサービス作ってて… Rubyが車で動いたら面白いよね 面白いと思いますよ
!!?? @__matsudai__ @nukumaro22 @coe401_
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① お仕事で車関係のwebサービス作ってて… Rubyが車で動いたら面白いよね 面白いと思いますよ
!!?? @__matsudai__ @nukumaro22 @coe401_ ここまで言われたらやるしかない 😤
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① お仕事で車関係のwebサービス作ってて… Rubyが車で動いたら面白いよね 面白いと思いますよ
!!?? @__matsudai__ @nukumaro22 @coe401_ Kaigi Effect
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① お仕事で車関係のwebサービス作ってて… Rubyが車で動いたら面白いよね 面白いと思いますよ
!!?? @__matsudai__ @nukumaro22 @coe401_ KaigiEffect. set(wait: 2.years). perform_later 😨
きっかけ ② 未来の技術者育成を目的とした「ご当地こどもロボコン」 ご当地こどもロボコン, https://gotochi-robocon.com/ Matz葉がにロボコン | かにロボ連盟 ご当地こども向けプログラミングコンテスト, https://www.shimane-oss.org/kani-robo/
どじょうすくいロボコン | ご当地こどもロボコン, https://www.shimane-oss.org/dojyosukui-robo/
きっかけ ② 未来の技術者育成を目的とした「ご当地こどもロボコン」 島根県では「 Matz葉がにロボコン」「どじょうすくいロボコン」の2つ ご当地こどもロボコン, https://gotochi-robocon.com/ Matz葉がにロボコン | かにロボ連盟
ご当地こども向けプログラミングコンテスト, https://www.shimane-oss.org/kani-robo/ どじょうすくいロボコン | ご当地こどもロボコン, https://www.shimane-oss.org/dojyosukui-robo/
きっかけ ② 未来の技術者育成を目的とした「ご当地こどもロボコン」 島根県では「Matz葉がにロボコン」「どじょうすくいロボコン」の2つ ライントレースで得点を競う 第1回Matz葉がにロボコンの開催 | 松江工業高等専門学校 スタートアップ事業, https://www.matsue-ct.jp/startup/%E7%AC%AC1%E5%9B%9Ematz%E8%91%89%E3%81%8C%E3%81%AB%E3%83%AD%E3%83%9C%E3%82%B3%E3%83%B3%E3%81%AE%E9%96%8B%E5%82%AC/
きっかけ ② 未来の技術者育成を目的とした「ご当地こどもロボコン」 島根県では「Matz葉がにロボコン」「どじょうすくいロボコン」の2つ ライントレースで得点を競う マイコンのプログラミング・書き込みは「 SmT」「kaniwriter」によりWebブラウザで完結 ※ RBoard(PIC32)と ESP32
をサポート SmT, https://ceres.epi.it.matsue-ct.ac.jp/smt/ kaniwriter | mruby/c書き込みツール, https://ceres.epi.it.matsue-ct.ac.jp/writer/
未来の技術者育成を目的とした「ご当地こどもロボコン」 島根県では「Matz葉がにロボコン」「どじょうすくいロボコン」の2つ ライントレースで得点を競う マイコンのプログラミング・書き込みは「 SmT」「kaniwriter」によりWebブラウザで完結 ※ RBoard(PIC32)と ESP32 をサポート →
2025年末に Raspberry Pi Pico(RP2040)へ対応 きっかけ ② mrbwrite対応 by matsudai | Pull Request #3 | gfd-dennou-club/mrubyc-pico, https://github.com/gfd-dennou-club/mrubyc-pico/pull/3
未来の技術者育成を目的とした「ご当地こどもロボコン」 島根県では「Matz葉がにロボコン」「どじょうすくいロボコン」の2つ ライントレースで得点を競う マイコンのプログラミング・書き込みは「 SmT」「kaniwriter」によりWebブラウザで完結 ※ RBoard(PIC32)と ESP32 をサポート →
2025年末に Raspberry Pi Pico(RP2040)へ対応 きっかけ ② mrbwrite対応 by matsudai | Pull Request #3 | gfd-dennou-club/mrubyc-pico, https://github.com/gfd-dennou-club/mrubyc-pico/pull/3 せっかくなので応用例が欲しい 🤔
Ruby Kaigi 2024 Day 4(会期翌日の観光)にて… きっかけ ① お仕事で車関係のwebサービス作ってて… Rubyが車で動いたら面白いよね 面白いと思いますよ
!!?? @__matsudai__ @nukumaro22 @coe401_ Kaigi Effect…?
きっかけ 見比べてみると… 第1回Matz葉がにロボコンの開催 | 松江工業高等専門学校 スタートアップ事業, https://www.matsue-ct.jp/startup/%E7%AC%AC1%E5%9B%9Ematz%E8%91%89%E3%81%8C%E3%81%AB%E3%83%AD%E3%83%9C%E3%82%B3%E3%83%B3%E3%81%AE%E9%96%8B%E5%82%AC/ かにロボ 自分の車
きっかけ 見比べてみると… ① 色が赤い 第1回Matz葉がにロボコンの開催 | 松江工業高等専門学校 スタートアップ事業, https://www.matsue-ct.jp/startup/%E7%AC%AC1%E5%9B%9Ematz%E8%91%89%E3%81%8C%E3%81%AB%E3%83%AD%E3%83%9C%E3%82%B3%E3%83%B3%E3%81%AE%E9%96%8B%E5%82%AC/ かにロボ 自分の車
きっかけ 見比べてみると… ① 色が赤い ② センサーがある 第1回Matz葉がにロボコンの開催 | 松江工業高等専門学校 スタートアップ事業, https://www.matsue-ct.jp/startup/%E7%AC%AC1%E5%9B%9Ematz%E8%91%89%E3%81%8C%E3%81%AB%E3%83%AD%E3%83%9C%E3%82%B3%E3%83%B3%E3%81%AE%E9%96%8B%E5%82%AC/
かにロボ 自分の車
きっかけ 見比べてみると… ① 色が赤い ② センサーがある ③ モーター(アクチュエーター)で動く 第1回Matz葉がにロボコンの開催 |
松江工業高等専門学校 スタートアップ事業, https://www.matsue-ct.jp/startup/%E7%AC%AC1%E5%9B%9Ematz%E8%91%89%E3%81%8C%E3%81%AB%E3%83%AD%E3%83%9C%E3%82%B3%E3%83%B3%E3%81%AE%E9%96%8B%E5%82%AC/ かにロボ 自分の車
きっかけ 見比べてみると… ① 色が赤い ② センサーがある ③ モーター(アクチュエーター)で動く → 同じ!
題材としてちょうど良いのでは? ※ 車のアクチュエーター操作は危険なので読み取りのみ 第1回Matz葉がにロボコンの開催 | 松江工業高等専門学校 スタートアップ事業, https://www.matsue-ct.jp/startup/%E7%AC%AC1%E5%9B%9Ematz%E8%91%89%E3%81%8C%E3%81%AB%E3%83%AD%E3%83%9C%E3%82%B3%E3%83%B3%E3%81%AE%E9%96%8B%E5%82%AC/ かにロボ 自分の車 ∽
しくみ SmT + kaniwriter 車 ? ? Ruby (mruby/c) Raspberry
Pi Pico ▼どのように繋ぐ?
しくみ SmT + kaniwriter 車 ? ? Ruby (mruby/c) Raspberry
Pi Pico ① 車との接続
そもそも車の制御が外部から可能なのか? しくみ ① 車との接続
そもそも車の制御が外部から可能なのか? → 2024年から車検時の「 OBD 検査」が義務化 しくみ ① 車との接続 物流・自動車:自動車の電子的な検査(OBD検査)について |
国土交通省, https://www.mlit.go.jp/jidosha/jidosha_OBD_user.html
そもそも車の制御が外部から可能なのか? → 2024年から車検時の「OBD 検査」が義務化、PCと繋いでいる! しくみ ① 車との接続 物流・自動車:自動車の電子的な検査(OBD検査)について | 国土交通省,
https://www.mlit.go.jp/jidosha/jidosha_OBD_user.html
そもそも車の制御が外部から可能なのか? → 2024年から車検時の「OBD 検査」が義務化、PCと繋いでいる! しくみ ① 車との接続 物流・自動車:自動車の電子的な検査(OBD検査)について | 国土交通省,
https://www.mlit.go.jp/jidosha/jidosha_OBD_user.html
そもそも車の制御が外部から可能なのか? → 2024年から車検時の「OBD 検査」が義務化、PCと繋いでいる! → プロトコルも (いくつか種類はあるが)決まっている しくみ ① 車との接続
OBD 検査関係法令・通達集, https://www.mlit.go.jp/jidosha/content/OBDkensa-regulations_set.pdf
そもそも車の制御が外部から可能なのか? → 2024年から車検時の「OBD 検査」が義務化、PCと繋いでいる! → プロトコルも決まっている。今回は「CAN」プロトコルの開発キットを購入 しくみ ① 車との接続 検索:
「OBD II」の検索結果11件 — スイッチサイエンス, https://www.switch-science.com/search?q=OBD+II
そもそも車の制御が外部から可能なのか? → 2024年から車検時の「OBD 検査」が義務化、PCと繋いでいる! → プロトコルも決まっている。今回は「CAN」プロトコルの開発キットを購入 開発キット(モジュール)と Raspberry Pi Pico(マイコン)間は
UARTで通信 UARTはSmTでもサポートしているため問題なさそう しくみ ① 車との接続 OBD-II CAN-BUS DEV KIT | Longan Docs, https://docs.longan-labs.cc/1030002/ OBD II + CAN UART = (モジュールで吸収)
しくみ ① 車との接続 ※ 実装
しくみ ① 車との接続 ※ 実装
しくみ SmT + kaniwriter 車 OBD II + CAN プログラム
Ruby (mruby/c) Raspberry Pi Pico ② プログラミング
UARTは「送信側・受信側でタイミングを合わせてビット送受信」する規格 しくみ ② プログラミング TX RX TX RX OBD-II CAN-BUS
DEV KIT | Longan Docs, https://www.switch-science.com/search?q=OBD+II マイコン側 モジュール側
UARTは「送信側・受信側でタイミングを合わせてビット送受信」する規格 ビット列の意味(プロトコル)はモジュールの仕様で決まっている しくみ ② プログラミング TX RX TX RX OBD-II
CAN-BUS DEV KIT | Longan Docs, https://www.switch-science.com/search?q=OBD+II ① 「車速をください」 ② 「60km/hです」 マイコン側 モジュール側
UARTは「送信側・受信側でタイミングを合わせてビット送受信」する規格 ビット列の意味(プロトコル)はモジュールの仕様で決まっている ① データの送受信単位:送信 14バイト、受信 12バイトの固定長 しくみ ② プログラミング CAN
ID(6 or 4バイト) データ(8バイト)
UARTは「送信側・受信側でタイミングを合わせてビット送受信」する規格 ビット列の意味(プロトコル)はモジュールの仕様で決まっている ① データの送受信単位:送信 14バイト、受信 12バイトの固定長 → OBD II はシンプルな(「標準」+常にデータ部を持つ)仕様なため
CAN ID固定 しくみ ② プログラミング データ(8バイト) 00 00 07 DF (00 00) バイト 名称 説明 [0] ID3 ID CAN ID(24-31 bit) ※標準は0固定 [1] ID2 ID上位 CAN ID(16-23 bit) ※〃 [2] ID1 ID CAN ID(8-15 bit) ※通常の操作では全体(0x07DF)固定 [3] ID0 ID下位 CAN ID(1-7 bit) ※〃 [4] EXT フレーム種別 0=標準、1=拡張 ※標準は0固定 [5] RTR リモート要求 0=データ、1=リモート ※OBD II は必ずデータ部を持つため0固定 CAN ID(6 or 4バイト) ※ 受信時は [4] - [5] EXT/RTR が省略されて12バイトになる
UARTは「送信側・受信側でタイミングを合わせてビット送受信」する規格 ビット列の意味(プロトコル)はモジュールの仕様で決まっている ① データの送受信単位:送信 14バイト、受信 12バイトの固定長 → OBD II はシンプルな(「標準」+常にデータ部を持つ)仕様なため
CAN ID固定 ② データ部の 8バイトで命令・データを送受信 しくみ ② プログラミング バイト 名称 説明 [0] 有効データ長 0x02 ※モード + PIDの2バイト固定 [1] サービスモード 「取得モード」など ★ 重要 [2] PID 取得するデータの種類 ★ 重要 [3] - [7] 未使用 ゼロ埋め バイト 名称 説明 [0] 有効データ長 2 + 取得データバイト数 [1] サービスモード 要求されたサービスモード + 0x40 [2] PID 要求されたPID [3] - [7] 取得データ 要求されたデータ本体 ★ 重要 データ( 8バイト) 00 00 07 DF (00 00) 送信:モジュール ← マイコン 受信:モジュール → マイコン CAN ID(6 or 4バイト)
どのようなデータが取得できるか? しくみ ② プログラミング TX RX TX RX ① 欲しいデータの指示
例)「車速をください」 ② データの送信 例) 「60km/hです」 マイコン側 モジュール側 バイト 名称 説明 [0] 有効データ長 0x02 ※モード + PIDの2バイト固定 [1] サービスモード 「取得モード」など ★ 重要 [2] PID 取得するデータの種類 ★ 重要 [3] - [7] 未使用 ゼロ埋め バイト 名称 説明 [0] 有効データ長 2 + 取得データバイト数 [1] サービスモード 要求されたサービスモード + 0x40 [2] PID 要求されたPID [3] - [7] 取得データ 要求されたデータ本体 ★ 重要 送信:モジュール ← マイコン 受信:モジュール → マイコン
どのようなデータが取得できるか? しくみ ② プログラミング バイト 名称 説明 [0] 有効データ長 0x02
※モード + PIDの2バイト固定 [1] サービスモード 0x01:「取得モード」など [2] PID 0x0D:「車速」など [3] - [7] 未使用 ゼロ埋め バイト 名称 説明 [0] 有効データ長 2 + 取得データバイト数 [1] サービスモード 要求されたサービスモード + 0x40 [2] PID 要求されたPID [3] - [7] 取得データ 「車速」なら 0x3C(60km/h)など バイト モード 取得データ のバイト数 0x0C エンジン回転数 2 0x0D 車速 1 0x33 大気圧 1 0x42 バッテリー電圧 2 0x46 外気温 1 車両データ取得モードの主要なPID バイト モード 0x01 車両データ取得 ★ 今回はこれを利用 0x03 故障診断コード(DTC) ※主に車検で参照 0x09 車両情報 主要なサービスモード ※ PIDは約90種類(対応状況は車種による) 送信:モジュール ← マイコン 受信:モジュール → マイコン
どのようなデータが取得できるか? (例)時速60kmの車速の取得 しくみ ② プログラミング TX RX TX RX OBD-II
CAN-BUS DEV KIT | Longan Docs, https://www.switch-science.com/search?q=OBD+II ① 欲しいデータの指示( 0x01:取得、0x0D:車速) ② データの送信( 0x3C:10進数で60 [km/h]) マイコン側 モジュール側 00 00 07 DF 00 00 02 01 0D 00 00 00 00 00 00 00 07 E8 03 41 0D 3C 00 00 00 00
実装: ① CAN フレームの送受信:送信14バイト、受信12バイトをビット演算で表現 しくみ ② プログラミング 送信:モジュール ← マイコン
受信:モジュール → マイコン
実装: ① CAN フレームの送受信:送信14バイト、受信12バイトをビット演算で表現 ② PIDごとのデータ取得メソッド:命令の送信 → 結果の受信 → データの取出
しくみ ② プログラミング (例)車速の取得
実装: ① CAN フレームの送受信:送信14バイト、受信12バイトをビット演算で表現 ② PIDごとのデータ取得メソッド:命令の送信 → 結果の受信 → データの取出
③ メインループ:各データを取得して出力 しくみ ② プログラミング (例)エンジン回転数・車速・外気温を CSVで書き出す
しくみ SmT + kaniwriter 車 OBD II + CAN プログラム
Ruby (mruby/c) Raspberry Pi Pico ✅
デモ SmT + kaniwriter 車 OBD II + CAN プログラム
Ruby (mruby/c) Raspberry Pi Pico
運転中のデータ取得の様子 https://drive.google.com/file/d/13qx0iCObOMRKfYOK5iT4oYyFF9b6sqo-/view?usp=sharing (撮影協力: @zipseven) デモ
・ 走行時間 :2026-02-20 (金) 16:00 - 16:30 (30分) ・ 走行ルート:松江→出雲、国道431沿い 約20km
・ 計測データ:車速、エンジン回転数 デモ 会場 出雲空港 松 江 城
・ 走行時間 :2026-02-20 (金) 16:00 - 16:30 (30分) ・ 走行ルート:松江→出雲、国道431沿い 約20km
・ 計測データ:車速、エンジン回転数 デモ
こども向けロボコンでも使われるプログラミングツール「SmT」の Raspberry Pi Pico 対応 → 応用例として車両データ計測に挑戦 昨今のデジタル化の流れで車検も「OBD」「CAN」により規格化され mruby/cからもデータが取得できた 今後はRaspberry
Pi Pico 2対応などに合わせてWi-Fiから送信も試したい まとめ
謝辞 SmT対応などへのアドバイス: 松江工業高等専門学校 杉山 耕一朗 教授 しまねソフト研究開発センター( ITOC ) 東 裕人
様 きっかけをくださった方: iberianpig (@nukumaro22) 様 Misaki Shioi (@coe401_) 様 業務の調整・撮影協力など: Zipseven (@zipseven) 様
余談 - Rubyで組み込みプログラミングすること 2月中旬の寒波はみなさま大丈夫でしたでしょうか このような極限環境での開発ではRubyの生産性が活きました