---
title: チャリンコオブザーバビリティ
tags: 
author: [kinoppyd](https://docswell.com/user/kinoppyd)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/87DKMVK4JG.jpg?width=480
description: チャリンコのオブザーバビリティに関してお話します
published: July 21, 26
canonical: https://docswell.com/s/kinoppyd/5Q2EG3-charinko-observability
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/87DKMVK4JG.jpg)

チャリンコ
オブザーバビリティ
kinoppyd@関西Ruby会議09 2026/07/18


# Page. 2

![Page Image](https://bcdn.docswell.com/page/VJPKRVKVE8.jpg)

Hello 琵琶湖


# Page. 3

![Page Image](https://bcdn.docswell.com/page/2EVVRZVREQ.jpg)

おぬしはだれ
I&#039;m kinoppyd
Programmer at SmartHR
I love Ruby
I love Bicycle
I love Poker


# Page. 4

![Page Image](https://bcdn.docswell.com/page/57GLM4L6EL.jpg)

よくわからないことを喋ります


# Page. 5

![Page Image](https://bcdn.docswell.com/page/4EQYRGY2JP.jpg)

チャリンコ・オブザーバビリティ


# Page. 6

![Page Image](https://bcdn.docswell.com/page/KJ4W85WP71.jpg)

チャリンコ
ロードバイクのことですね
CANYON Ultimate AL SLX 9.0
昔はアルテが30万せんかった


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LE1Y2WYX7G.jpg)

オブザーバビリティ
可観測性、つまり照
単なるモニタリングではなく、複数のコンポーネントから構成されるア
プリケーション全体の相互作用をモニタリングする
システムを外部から”理解”ること


# Page. 8

![Page Image](https://bcdn.docswell.com/page/GEWGR6GKJ2.jpg)

チャリンコ・オブザーバビリティ
ロードバイクという1つの大きなアプリケーションをモニタリングする
スポーツにおいて、オブザーバビリティはパフォーマンス向上に必須
例えば、心拍やペースを測らずにマラソンの練習する人は少ない


# Page. 9

![Page Image](https://bcdn.docswell.com/page/47ZLRYLNJ3.jpg)

チャリンコの構成
人間（エンジン）ー＞ 心拍、酸素飽和度、血糖値、etc
タイヤ
ー＞ 回転数から速度がわかる
クランク
ー＞ 回転数からケイデンス、歪みからパワーがわかる
ブレーキ
ー＞ どれくらいのブレーキをかけたかがわかる
ギア
ー＞ いまどのギアを使用しているのかがわかる
車体の傾きとか温度とか気圧とかあともうなんか色々


# Page. 10

![Page Image](https://bcdn.docswell.com/page/YJ6WRDW9JV.jpg)

現代のチャリンコモニタリング


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GJ5M83MDJ4.jpg)

既存実装
BLEにCSCP、CPP、HRPというプロファイルが定義されている
•
Cycle Speed Cadence、Cycle Power、Heart Rate
Di2とかEPSとかeTapとかメーカー独自の電動シフター規格もある
とはいえ、すくない
https://www.bluetooth.com/specifications/specs/


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LE3W869QE5.jpg)

既存実装のいいところ
ユーザーが様々なセンサとサイクルコンピュータを選べる
安価
連携とか勝手にやってくれる


# Page. 13

![Page Image](https://bcdn.docswell.com/page/8EDKMVGW7G.jpg)

でも少ないなら作る
電動シフターを使ってないけど変速は記録したい
そもそもブレーキングや傾きを記録するチャリセンサは存在しない
無いなら作る、PicoRubyを使えば作れる！！！！！


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V7PKRV3XJ8.jpg)

メトリクス


# Page. 15

![Page Image](https://bcdn.docswell.com/page/2JVVRZ43JQ.jpg)

スピード
車体のスピード
タイヤのサイズが分かっているので、回転角が分かれば計算可能
ジャイロセンサを使う


# Page. 16

![Page Image](https://bcdn.docswell.com/page/5EGLM41YJL.jpg)

スピード
ホイールの円周x単位時間あたりの回転数
画像出典：https://www.mavic.com/ja-jp/p/ksyrium-sl-rr1223


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4JQYRGD67P.jpg)

スピード
実際の所、走っている瞬間はあまり気にしない値
どちらかと言うと次のケイデンスのほうが気になる
あとから見返したときに気になる値


# Page. 18

![Page Image](https://bcdn.docswell.com/page/K74W85ZME1.jpg)

ケイデンス
クランクを毎分何回回しているかの数値
スピードと同じく、クランクの回転数と回転角から計算
スピードセンサと回転の軸が違うが、ハードは共用可能


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LJ1Y2WRYEG.jpg)

ケイデンス
1分間あたりの回転数
画像出典：https://bike.shimano.com/ja-JP/products/components/pdp.P-FC-R8100-P.html


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GJWGR61172.jpg)

ケイデンス
現代のロードバイク理論として、筋肉を使うより肺を使うほうがいい
筋肉の疲労は回復に時間がかかるが、呼吸器は短時間で回復する
なので、筋肉に疲労を与えすぎないために回転数を意識する


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4EZLRYPX73.jpg)

パワー
どれくらいの力をかけてクランクを回しているか
今回は作成してない、なぜならアルテグラのクランクという高価なパー
ツを壊したくないので……怖い……
既製品はひずみゲージを使って、クランクがどれだけ歪んでいるかを計
測している


# Page. 22

![Page Image](https://bcdn.docswell.com/page/Y76WRDMP7V.jpg)

パワー
これも筋肉をどれくらい使うかと考えるときに見る
FTPという値を維持するために意識する必要がある
FTPは、雑に言うとエンジン（人間）が1時間に出せるパワーの限界
FTPを学ぼう！： https://www.redbull.com/jp-ja/ftp-everything-you-need-to-know


# Page. 23

![Page Image](https://bcdn.docswell.com/page/G75M83ZP74.jpg)

心拍数と血糖値
心拍数と血中酸素飽和度を測ってくれるセンサがある
血糖値のセンサはあるにはあるが、マイコンから簡単にアクセスできる
ものは売ってない
専用のアプリをブリッジなどしなくてはいけないので面倒


# Page. 24

![Page Image](https://bcdn.docswell.com/page/9J29KZRZER.jpg)

心拍数と血糖値
心拍数はある程度の範囲内で安定させる必要がある
FTPを維持するためにも必要だし、ケイデンスにも比例する
血糖値は低いとハンガーノックを起こす、自分は気にしたことはない


# Page. 25

![Page Image](https://bcdn.docswell.com/page/DEY4NRDNJM.jpg)

ログ


# Page. 26

![Page Image](https://bcdn.docswell.com/page/VJNYXD6V78.jpg)

後輪のギア
後輪のギアは、ディレイラーという部品で制御されている
先端にワイヤがついた指みたいなもので、ワイヤを引くと指が内側に曲
がっていき、ギアの位置を決める
磁気角度センサを使って、どれだけ曲がっているかを測る


# Page. 27

![Page Image](https://bcdn.docswell.com/page/YE9P8GLVJ3.jpg)

後輪のギア
2．ここがギアの段数にあわせて少しずつ回る
1．ここをワイヤで引っ張ると
画像出典：https://bike.shimano.com/ja-JP/products/components/pdp.P-RD-R8150.html


# Page. 28

![Page Image](https://bcdn.docswell.com/page/GE8D8VX4ED.jpg)

後輪のギア
癖みたいなものを知れる（知ったから何だという話はある）
使ってるギアが重すぎる/軽すぎるを意識するのは大事
とはいえ、まあ経験則的にはだいたい安定する


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LELMR58V7R.jpg)

ブレーキ
何を測ればブレーキの量を測れているかは難しい問題
実用的には、たぶんブレーキワイヤをどれくらい引いたかを知りたい
磁気ホールセンサでブレーキレバーをどれだけ引いたかを測る


# Page. 30

![Page Image](https://bcdn.docswell.com/page/4JMYR36NJW.jpg)

ブレーキ
2．この場所に近づく
1．ここを引くと
画像出典：https://bike.shimano.com/ja-JP/products/components/pdp.P-ST-R8170-R.html


# Page. 31

![Page Image](https://bcdn.docswell.com/page/PJR9RQP479.jpg)

ブレーキ
整備の面で必要になる数値と思う
引きに対して制動が弱いと、何かがおかしい
普段の値を知っておくことが多分大事


# Page. 32

![Page Image](https://bcdn.docswell.com/page/PEXQR53ZJX.jpg)

そのほかにも……
チルトセンサで車体の傾きを計測、坂の勾配やダンシングの傾向を知る
気温センサで外気温を測る
気圧センサで気圧を測る
GPSで現在地を知る


# Page. 33

![Page Image](https://bcdn.docswell.com/page/3EK9R6YVED.jpg)

作る


# Page. 34

![Page Image](https://bcdn.docswell.com/page/L73W86VQ75.jpg)

どうやって作るのか？
チャリンコはわりと剥き出しの機械
車はDBWとECUで電子制御されているが、チャリはエンジンが人間で
あり、ワイヤを引っ張ればキマった出力がでるわけではない
車体を制御するチェーンやワイヤが機械に直結していて、動力を仲介す
る部品がほぼ無い


# Page. 35

![Page Image](https://bcdn.docswell.com/page/87DKMV8WJG.jpg)

中間のパーツがないということは
シャフトがないので、直接観測しないといけない
•
一応、ギアの回転を監視するという方法はあるかもしれない……
めちゃくちゃ動いている部品に直接センサを取り付けなくてはいけない
つまり、無線が必須になってくる箇所が多い


# Page. 36

![Page Image](https://bcdn.docswell.com/page/VJPKRV8XE8.jpg)

自転車競技というハードル
自転車は、車と違って頻繁にバラバラにされる
自転車自体がかなり分解しやすいように作られている
つまり、センサ類も外しやすくある必要があり、無線が求められる


# Page. 37

![Page Image](https://bcdn.docswell.com/page/2EVVRZN3EQ.jpg)

Raspberry Pi Pico2 W
RP2350とBLEがのってる
最新のPicoRubyはPR2350がターゲットだしちょうどいい
とはいえフットプリントがでかい、もっと小さいBLEが乗ってるESP32
のマイコンがあるのでそれも選択肢にすべきだったが、確実に動く方で


# Page. 38

![Page Image](https://bcdn.docswell.com/page/57GLM4KYEL.jpg)

通信方式
BLE::UART
先述のCSCP、CP、HRPには頼らない、互換性はいらないので
複数のセンサを繋ぐ必要があるので、btstack_config.hの値を書き換えて
複数つなげるようにする


# Page. 39

![Page Image](https://bcdn.docswell.com/page/4EQYRGN6JP.jpg)

複数のセンサをつなげる


# Page. 40

![Page Image](https://bcdn.docswell.com/page/KJ4W85GM71.jpg)

スピード/ケイデンスセンサ
Pico2 Wと同じサイズのユニバーサル基板にピンソケットとセンサ
Pico2 Wは取り外し可能に
200mhAの小型バッテリーをピンヘッダと基板の隙間に隠す


# Page. 41

![Page Image](https://bcdn.docswell.com/page/LE1Y2WDY7G.jpg)

スピード/ケイデンスセンサ


# Page. 42

![Page Image](https://bcdn.docswell.com/page/GEWGR6Y1J2.jpg)

スピード/ケイデンスセンサ


# Page. 43

![Page Image](https://bcdn.docswell.com/page/47ZLRYXXJ3.jpg)

後輪ギアセンサ
時間切れで作れなかった
センサはあるんだけど、ディレイラーに取り付けるパーツの成形が難
くやしみ


# Page. 44

![Page Image](https://bcdn.docswell.com/page/YJ6WRD4PJV.jpg)

ブレーキ
センサが注文しても届かねえ！！！！
許さんぞAmazon Prime Day
間に合わず


# Page. 45

![Page Image](https://bcdn.docswell.com/page/GJ5M83QPJ4.jpg)

可視化する


# Page. 46

![Page Image](https://bcdn.docswell.com/page/9E29KZPZ7R.jpg)

可視化
複数のセンサから届いた計測値を、収集用のPico2に集める
時間と同時に、その瞬間の各センサの値を記録する
このデータをPCに取り出して、最終的に可視化ができる


# Page. 47

![Page Image](https://bcdn.docswell.com/page/D7Y4NR5NEM.jpg)

既存の可視化ツール
StravaやRide with GPS、Garmin Connectなど、既存の可視化ツールは
存在する
しかし、メトリクスがやはりCSCP/CPP/HRPくらいしかない
とはいえ、共有機能とかは魅力的ではある


# Page. 48

![Page Image](https://bcdn.docswell.com/page/VENYXDNVJ8.jpg)

Strava


# Page. 49

![Page Image](https://bcdn.docswell.com/page/Y79P8GRVE3.jpg)

自作のセンサでは
InfluxDBにデータを入れて、Grafanaで可視化すれば良い
だがInfluxDBは連続的なデータを入れるやつ、ライドは非連続的な時間
時系列DBあんまくわしくないので、なんかいいのないかなぁ？


# Page. 50

![Page Image](https://bcdn.docswell.com/page/G78D8VW47D.jpg)

InfluxDB + Grafana


# Page. 51

![Page Image](https://bcdn.docswell.com/page/L7LMR5NVJR.jpg)

味気は無いね＾＾


# Page. 52

![Page Image](https://bcdn.docswell.com/page/4EMYR3XNEW.jpg)

もう一つの可視化


# Page. 53

![Page Image](https://bcdn.docswell.com/page/PER9RQN4J9.jpg)

リアルタイム表示は必須でしょ
走ってるときにこそ、リアルタイムのデータは見なくちゃいけない
振り返りも大事だけど、走ってるときにこそ現状を確認しないと
だから収集用のPico2 Wにはモニタが必要


# Page. 54

![Page Image](https://bcdn.docswell.com/page/P7XQR5NZEX.jpg)

メーターに表示したくない？
GC9A01コントローラが載った円形ディスプレイが安く売ってる
レンダリングはLovyanGFX、RP2040で動くしC拡張で書いた
1台のPico2 Wで2つのディスプレイにSPIで書き込みができるのを確認


# Page. 55

![Page Image](https://bcdn.docswell.com/page/37K9R6NV7D.jpg)

市販のメーターは味気ない
バッテリー効率を優先しているので、UIは基本しょぼい
ぼくはただ趣味で作っているだけなので、おもしろUIが欲しい
車のスピードメーターみたいなのがいいなぁ


# Page. 56

![Page Image](https://bcdn.docswell.com/page/LJ3W86ZQJ5.jpg)

ちなみにこれが普段使うサイコン


# Page. 57

![Page Image](https://bcdn.docswell.com/page/8JDKMVRWEG.jpg)

メーター
アナログメーターがかっこいい、アナログメーターにしよう
車も好き、前に乗ってた86って車のメーターを真似しよう
スポーツカーは速度よりもエンジンの回転数を気にする、チャリもそう


# Page. 58

![Page Image](https://bcdn.docswell.com/page/VEPKRVWX78.jpg)

メーター


# Page. 59

![Page Image](https://bcdn.docswell.com/page/27VVRZ837Q.jpg)

メーター
円形ディスプレイを2つ、Pico2 Wを1つつけるためのピンヘッダ
消費電力が多いので、バッテリーは単4電池2本
本当は3連メーターにしたいので、1マイコンで動く版もある


# Page. 60

![Page Image](https://bcdn.docswell.com/page/5JGLM45Y7L.jpg)

これをみてもよくわからないけど


# Page. 61

![Page Image](https://bcdn.docswell.com/page/47QYRGZ6EP.jpg)

こだわりポイント


# Page. 62

![Page Image](https://bcdn.docswell.com/page/KE4W853MJ1.jpg)

実走！


# Page. 63

![Page Image](https://bcdn.docswell.com/page/L71Y2W1YJG.jpg)

無理だわ……
プロポーザルには「琵琶湖走ったるぜ」って書いた
が、流石に35度を超える気温の中をライドするのは危険すぎる
泣く泣く断念


# Page. 64

![Page Image](https://bcdn.docswell.com/page/G7WGR681E2.jpg)

代わりにテスト機でなんとか


# Page. 65

![Page Image](https://bcdn.docswell.com/page/4JZLRY8XE3.jpg)

まとめ


# Page. 66

![Page Image](https://bcdn.docswell.com/page/YE6WRDPPEV.jpg)

チャリンコ・オブザーバビリティ
既存のセンサはメトリクスが少ないので、自分でセンサを作る
センサの値は収集用のマイコンに集めて、InfluxDBや各種サービスに入
れて可視化する
リアルタイム表示のメーターは好きに作ろうぜ


# Page. 67

![Page Image](https://bcdn.docswell.com/page/GE5M83KPE4.jpg)

Build what you want with PicoRuby.


