これは ドリコム Advent Calendar 2021 の3日目です。

はじめに

こんにちは!enzaのインフラをみているmendです。
インフラは監視するにあたり、例えばCPUの使用率であったりメモリの使用状況であったり、様々な情報を確認する必要があります。
ここで一つ気になりました。
人間のメトリクスってなんなんだろうと。
というわけでこの記事ではarduinoで人間の心拍を計測してみましたという話をしてみたいと思います。

動機(動悸ではないです)

サーバーはメトリクスを確認することで健全な状態であるかを確認しますが、サーバーのメトリクスを確認するのも人間です。
つまり人間が正常(健康)な状態であることがサーバーの正常な状態の維持につながるので、人間のメトリクスもサービスの安定性を高める要素の一つであると言えます。(個人的見解です)
というわけで自身のメトリクスを確認し、現在の体が健康がどうかを調べてみたいと思います。

なぜ心拍?

体の健康の指標には血圧や血液の成分、体重など様々な指標があります。 しかしこれらの指標を計測するには、生活には邪魔になってしまう血圧計であったり、床のスペースを大きくとってしまう体重計で計測する必要があります。 ましてや血液成分は侵襲的処置のため、一般人の私には日常的な計測は不可能といえます。
> 侵襲:「侵襲」とは,研究目的で行われる,穿刺,切開,薬物投与,放射線照射, 心的外傷に触れる質問等によって,研究対象者の身体または精神に傷害または負担が生じることを指します。

https://www.jspaci.jp/assets/documents/2016-01.pdf
このことから手軽で、それでいて場所も大きくとらずに計測できる心拍を体のメトリクスとして確認してみることにします。

arduinoで心拍数を見れるようにする

これまでのLily58 Proで自作キーボードデビューした話Drecom SRE Sundayと比べるとかなり簡単な作業になります。 まず使用する部品ですが、Arduino Uno(互換品でも可)とAmazonで800円ほどで購入した心拍センサーの二つだけになります。 まずはパーツを接続します。
こちらの図のように、黒(-)の線をGND、赤(+)の線を5V、紫(S)をA0に繋ぐだけです。
ここまで繋いだらあとは接続してソースコードを書き込むだけになります。 ソースコードはこちらで公開されているライブラリから Getting_BPM_to_Monitor を書き込みました。
書き込みが終わったらシリアルモニタを開き、心拍センサーに指を置いてみましょう。
すると以下のように心拍に合わせて表示がされるはずです。

♥  A HeartBeat Happened !
BPM: 62
♥  A HeartBeat Happened !
BPM: 66
♥  A HeartBeat Happened !
BPM: 69
♥  A HeartBeat Happened !
BPM: 72
... 
おお…

心拍数でわかること

さて、手軽な体のメトリクスとして心拍を計測してみましたが、実は心拍でわかることって結構多いみたいです。 まずわかるのは心疾患の可能性です。
高血圧患者は心拍数が高い場合が多く、高血圧は心疾患の発症や死亡リスクが高いとされているようです。 ちなみに心拍数が1分あたり100回よりも高い場合は頻脈と区分されるようです。
逆に心拍数が低いことは基本的に健康、とされるそうです。
そしてもう一つわかることがストレスだそうです。 心拍数には交感神経、副交感神経がそれぞれどのくらい働いているかの比率が含まれているそうです。 詳細な記載は省きますが、一概に心拍数が低いから、高いからストレスの有無は決まりません。
心拍数の変動で高周波成分と低周波成分の比を見て、高い周波数成分が大きい場合はリラックスした状態、低周波成分が高ければストレス状態と判断できるそうです。

最後に

今回はarduinoで心拍数を計測してみました。
心拍数には実は様々な情報が含まれており、計るだけでも健康を判断する十分な指標になりそうですね。
これでインフラの監視もバッチリできそうです。

明日は尾﨑 春菜さんです。
ドリコムでは一緒に働くメンバーを募集しています!
募集一覧はコチラを御覧ください!