CANViewer をリリースしました
CANViewer をリリースしました

CANViewer をリリースしました

Tags
雑記
tool
Software Development
Published
October 1, 2024
CANデバッグ、もう心を擦り減らさなくていい ― CANViewer をリリースしました
CANViewer
TomiXRMUpdated Apr 14, 2026

こんな経験、ありませんか?

大会前夜、基板は組み上がった。ファームも焼いた。電源を入れる。
……動かない。
オシロを引っ張り出して CAN_H と CAN_L の波形を眺める。たしかに何か流れてはいる。でも、何が流れているのかはわからない。別にプロトコル解析がしたいわけじゃないんだよな。
ターミナルでは candump がズラーッと数字を吐き続けていて、目的のIDがどこにあるのか、定期送信のヒートビートに埋もれて全然見えない。チームメンバーに Slack で「いま送ってる?」と聞いて、「送ってるはず」と返ってきて、また波形を見る。
「はず」じゃ困るんだよな、と思いながら深夜2時。
CAN通信って、動く時はあっさり動くのに、動かない時は地獄みたいに情報が少ないんですよね。

なぜ作ったか

僕はロボカップでサッカーロボットの開発をしていて、モータドライバ、センサ、メインボード、キッカーボードの間を CAN でつなぐことが本当に多かったんですよね。そのたびに、
  • 「とりあえず1フレーム投げて疎通確認したい」
  • 「このIDのデータだけ見たい、他のノイズは消したい」
  • 「送信したい10進数をHEXにパッと直して雑に送信したい」
みたいな、ちょっとしたことを手軽にやりたい場面が繰り返し訪れました。
既存のツールはもちろんあります。でも、Windows しか対応してなかったり、ライセンスが高かったり、GUI が90年代から時間が止まっていたり、インストールだけで半日溶けたり。そもそもMacはcandump対応してないし、メンバーはWindowsとMacユーザーしかいない。
「SLCAN のデバイスを挿したら、何も考えずにすぐ使えるやつ」がほしい。
ないなら作るか、となって生まれたのが CANViewer です。
notion image

CANViewer でできること

CANViewer
TomiXRMUpdated Apr 14, 2026
要するに、SLCAN 対応デバイスに特化した、プラグアンドプレイの CAN デバッグツールです。
具体的な使いどころはこんな感じ。

1. 自作CANプロトコルのテスト

新しいプロトコルを実装したとき、「このIDでこのペイロード投げたら、相手はどう返すか」を手で試したいタイミングがあります。CANViewer から1フレーム単位で送信して、返ってきたフレームをそのまま見られるので、仕様書と照らし合わせながら詰めていけます。

2. 買ってきたCANデバイスとの疎通確認

秋葉原や通販で買ってきた謎のセンサ、モータドライバ。データシートは中華PDFで半分くらい意味がわからない。こういう時、とりあえず「生きてるか」を確認するだけでも一苦労です。CANViewer なら挿して開いて送るだけ。返事が来れば「生きてる」、来なければ「死んでるか、こっちの設定がおかしい」と切り分けがすぐできます。

3. 走ってるCANバスの生データ観測

ロボットを動かしながら、どのセンサがどんな値を吐いているかをリアルタイムで見たい。これは開発中は毎日発生するやつです。

便利機能

実際に使っているときの摩擦を減らす機能を優先して入れました。

🔌 プラグアンドプレイ

SLCAN デバイスを USB で挿せば、あとはポートを選ぶだけ。ドライバインストールに戦ったり、謎の設定ファイルを書いたりする必要はありません。

⏲️ 定期送信

データを定期送信しないと動いてくれないモータドライバとかのデバイスありますよね。定期送信用のスクリプトを書いてもいいけど、毎回書くのって手間です。CANViewerにはデータフレームを定期送信できる機能があり、雑なデバッグコードを実装することもなくなります。
notion image

🕸️フィルタ機能

定期送信のヒートビートとかIMUの100Hzデータとか、デバッグ中は「今は見たくない」ノイズが大量にあります。CANViewer では特定のIDを除外したり、逆に特定のIDだけ表示したりできます。目的のフレームが埋もれて見えない問題、これで解決です。
notion image

🔢 HEX / DEC 切り替え

CANのデータって、プロトコルの実装場、「HEXで送る時はこの数値」みたいなことが書かれていることが多い。その割に送信するデータは10進数のものが多く、16進数と10進数が混ざっていて頭の中でのトランスパイルがめんどくさいみたいなこと、多くないですか?でも毎回頭で変換するのはだるい。CANViewerならワンクリック(キーバインドもあり)で切り替えられます。
notion image

🖥 macOS / Windows / Ubuntu 対応

Python で書いて、各OS向けにクロスコンパイルしてバイナリ配布しています。Python 環境を準備する必要すらないので、チームメイトに「これ入れて」と渡すだけで使ってもらえます。これ、地味だけど大きい。
notion image

インストール

GitHub Releases から各OS向けのバイナリを落としてきて、実行するだけです。
SLCAN対応デバイス(candleLight, CANable など)を用意して、USBで挿して、CANViewer を起動。ポートを選んでビットレートを設定したら、もう使えます。

さいごに

CAN のデバッグで夜中にうんうん唸っている人、開発会に向けて疎通確認を急いでいる人、そういう人に「あ、これでいいじゃん」と思ってもらえたら、作った甲斐があります。
バグ報告・機能要望は GitHub の Issues まで。スターをくれると次の機能実装の燃料になります🔥
CAN、もう少し楽に向き合いましょう。
CANViewer
TomiXRMUpdated Apr 14, 2026

Loading Comments...