うんこボタンクローンを作ったら新生児との生活が捗った
先日、このコロナ禍の真っ最中に第三子が産まれた。父親であっても面会すらできずにたいへんにもどかしい思いをすることになったが、無事に退院してきて5人(+実家からサポートに来てくれた自分の母を入れて6人)の生活が始まった。
子供が生まれたら導入しようと思っていたサービス・製品の筆頭が「うんこボタン」だったのだが、残念ながらサービス終了が予定されているようだった。
要するに、Amazon Dashボタンの排便排尿記録版みたいなものなのだが、子育てしてみるとこの手のイベントを記録・共有できることは重要だったりする。うんこボタンは、文字通りボタン一つでそのイベントを記録できて、スマホから簡単に参照・追記できるデバイスだった。
「IoTデバイスでHTTPS証明書を失効させてしまい、OTAアップデートもその証明書を検証するので文鎮化」という一件は割と有名で、他山の石として自分も心がけている事例の一つだ。これに伴う回収コストが直接的な原因なのかどうかは不明だが、結局うんこボタンはサービス終了となってしまった。
というわけで、妻が入院してから退院してくるまでの間に、オレオレうんこボタンを作ることにした。単純に作るだけであれば、Zabbixに放り込んで適当に料理するのが手っ取り早いが、今回はAWSの勉強も兼ねてAWS IoT + DynamoDB + Lambda + API Gatewayの構成で実装してみた。デバイス側は使い慣れたM5 Stackを使った。文字通り机に積んである。
こういった機能を実装するにあたり、スマホアプリやWebアプリとして実装するのがイマドキかもしれない。しかし、個人的にはこの用途には向いていないと考えている。スマホで参照するためには、スマホを把持して操作しなければならない。赤子を抱っこした状態では難しいことも多い。それに、アプリを開こうとしたら素敵なスケベピクチャが目に入ってしまったとしたら気が散ってしょうがないだろう。M5 Stackで実装すれば、磁石を使ってそこら辺の壁に貼り付けておくことができる。そこそこ大きい画面があるので、多少離れた位置からでも容易に視認可能だ。何より、操作不要で常時表示にできる。あるべき場所に目をやるだけで、必要な情報にアクセスできることは重要なのだ。
一人目を育てて得られた知見から「うんこ、しっこ、ミルク」の3イベントを記録することにした。M5 Stackにボタンが3つあるからだけど。とりあえず、これらのボタンが押されたらAWS IoTのMQTTでイベントを送出する。これをLambdaで受けて、DynamoDBの「最終うんこ時刻」などを更新する。それだけ。実に単純な実装だがちゃんと動く。(将来的にはグラフ化とかしようと思っていたので都度イベントの記録も取ってあるが今のところ実装する気力がない。)
なお、デバイス側には最終うんこ時刻ではなく、「最終うんこ時刻からの経過時間」を表示する。加えて、うんこなら12時間、しっこ・ミルクなら3時間を経過していたら赤文字で表示するようにした。これは「不意に起こされて対応する場合、思考能力はせいぜい幼稚園児程度」という自らの知見に基づくものである。寝付いたと思った瞬間に起こされた場合に「現在時刻から表示されている時刻を引き算してどれくらい経ったか考える」なんて不可能なのだ。文字が赤かったらとりあえずおむつ替えたりミルク準備したりする。判断すべき内容は極力単純化するべきである。
というわけで、こんな感じのデバイスを作って、赤子氏の近くに設置してある。泣き声割り込みで熟睡タスクが中断されたら、このデバイスに目をやって赤文字の項目をとりあえず対応すればよい。赤文字でなくとも、最終ミルク時刻から2時間も経っていれば、とりあえずミルクをやればよいと判断できる。幸いにして我が子が泣く理由は今のところこの3つ(+だっこリクエスト)に収まっている。
2週間ほど使ってみたが、思いのほか便利で妻にも好評だった。製品化してはどうかと言われるのだが、自分にはマネタイズできる自信が全くない。今でも時々スプライトがバグるしWiFiのトラブルもちょくちょく起きている。だが問題はそこではなく、このデバイスは短命に終わることが望ましいと言う点が問題なのだ。親としては早々に夜長時間寝て欲しいし決まった時刻に排泄をしてくれるに超したことはない。育児におけるごく短期間の苦労をサポートするためのデバイスなのだ。これをサービスにする場合には、クラウドサービスの費用をどう積むかという問題になるのだ。もちろん、デバイスで得られる情報をマネタイズするのもアリだろうが、相応の規模と体力のある研究機関や企業がやることであって、自分のような個人が気軽に手を出せるようなシロモノでもない。
というわけで、例によって「頭のおかしい父親がなんか便利っぽい謎デバイスを作った」という話に落ち着く。同じような問題に困っている人がいるなら真似すれば良いだろうし、自力で実装できないなら身の回りのITエンジニアに相談すると良いだろう。おそらくここまでだらだらと書いてきた内容だけで類似品を容易に実装できるはずだ。
なお、我が家の収納スペースにはまだ若干の余裕がございます。