Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby × 車 ~ 愛車のデータを取得せよ! ~
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
matsudai
February 23, 2026
270
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
15
SmTでRaspberry Pi Picoを動かす
matsudai
0
62
Ruby × 車 (その後) ~課題:オフライン対応~
matsudai
0
65
流行れ! AI Tuber!
matsudai
0
150
Islands on Rails !!
matsudai
0
69
Rubyで動かす検索機能
matsudai
0
170
ruby.wasmが簡単にビルドできるようになっていた
matsudai
0
180
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
220
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Mind Mapping
helmedeiros
PRO
1
250
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Typedesign – Prime Four
hannesfritz
42
3.1k
Six Lessons from altMBA
skipperchong
29
4.3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
Thoughts on Productivity
jonyablonski
76
5.2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
620
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
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の生産性が活きました