傘持っていくかどうか機 for Kids
着想
朝、子供が学校に行くときに傘を持って行くべきかを毎朝聞いてくるので、僕に聞かなくても降水確率などを自分で把握できるような装置を靴箱の上に置いて、僕が楽になる、という試み。
気象APIとラズパイあたりでどうにかしようかと思案中。
Why & What
改めて、なぜ、このプロダクトが必要なのか。理由をまとめる。こうすることでプロジェクトのブレを最小限にしていきたい。
- 家事を安定的にこなすことができるのは僕のみである。
- シングルファザー気味な僕にとって朝の時間はとても大切である。
- 朝のルーティンはこんな感じだ
- 目を覚ますと朝食を大急ぎで準備し、子どもを起こす。
- 彼らはリビングに入ってくるなりドアを開け放ち、パジャマを脱ぎ捨て、ギガスクール構想で配られたiPadでおもむろにYoutubeを見始める。
- これら全てをいなしながら、朝食に向かわせ、支度させる。
- その間に脱水の終わった洗濯物を干し、
- 朝食の終わりを見届けるたらすぐに食器を片付けているちょうどその頃、いつも聞かれる
- 「パパー、今日って雨降るの?」
- 先ほどとはうって変わってパリッとした格好に着替えた彼らは、寝癖のままシンクで作業中の僕の泡だらけの手を尻目に聞いてくる。
- 思わず「知らん」と言いそうになる自分を必死でこらえ、泡を洗い流しタオルで拭くと、スマホに手を伸ばして、今日の天気を見る。
- タオルの拭きが甘いと指紋認証はうまくいかない。もう一度しっかりと水分を拭き取り認証を試みる。
- 目的の情報を子どもに伝えると彼らは学校へ、僕はもう一度手を泡泡にして調理器具などを洗う。
- 他のある日は2階で洗濯物を干しているその時に1階から大声で聞いてくる。「パパー、雨降るの?」僕のスマホは1階だ。。攻撃は容赦ない。
- 仕事のSlackをさっとチェックしているとき、シャワーを浴びている時、トイレに入っている時、「パパー、今日って雨降るの?」は最優先事項としていつでも割り込むことができる。
以上がこのプロダクトを作ろうと思った背景・ペインである。
伝わるだろうか。
さて、このProblemに対してフィットするSolutionは世の中に溢れかえっている。
敢えて自作する意味は3つある。
- 自分もプログラムというやつを勉強してみたい。ついでに、子どもに開発・メンテ・改修に携わらせ、案外できそうだなって思わせたい。
- 買って使うより、作って使い改良していきたい。お金がより多くかかっても。
- 来年の長男坊の夏休みの自由研究の素材にできる(世のお父様方、毎年困りますよね・・・)
ゴタクを並べ立てたが要は「朝、子供が学校に行くときに傘を持って行くべきかを毎朝聞いてくるので、僕に聞かなくても降水確率などを自分で把握できるような装置を靴箱の上に置いて、僕が楽になる、という試み。」である。
今回開発するプロダクトの概要は以上である。
なお、今回、営業上がりのボクは初めてコードを書く。
したがって複雑なことを目指すより、目的達成に至る最低限の実装に留めたプロダクトを本番投入するのが望ましいだろう。
お便利機能は全て後回し。ライフスタイルの変更に応じて本当に必要なものだけを実装していこう。
無料の気象APIがあるか調査
気象庁
気象庁が無料APIを公開している(?)という噂を聞きつけ、データを調査。
- 気象庁API
- https://www.jma.go.jp/bosai/forecast/data/forecast/エリアコード.json
- エリアコードはここで拾う
- エリアは一次細分区域
- 保証されているAPIではない
自宅付近の一番細かいエリア単位で取得したいので、都道府県レベル(西部・東部とか)では粗すぎる。
Open-Meteo
Open-Meteoという無料API(?)を発見したのでこれを調査してみることに。
Open-Meteoの調査
大きく分けて2種の情報
ドキュメントによると取得できる変数には以下2つの区分がある。
- 時間毎=Hourly Weather Variables
- 日次=Daily Weather Variables
どちらが我が家のユースケースに合う?
対して、今回のユースケースは以下のようなものだ。
朝、子どもたちが、自分で情報を読み取って傘を持って行くかの判断を支援する
半袖長袖、セーター、マフラー、コート、手袋といった防寒具をどの程度着るべきかの判断を支援する
帰宅後、再度遊びに行くにも同様の判断を行うかもしれない
Minimum Viable Product
- 帰宅時刻付近の時間毎の傘必要度合いを靴箱上に新規設置するデバイス上で可視化する
- 07:00ごろ
データ表示
する- なるべくエリアメッシュの細かい
無料の気象API
で情報を取得する - 朝時点で発表された時間毎の降水確率から
傘必要指数
を演算する -
傘必要指数
は変更できる必要があるが、設定インターフェースまでは不要
- なるべくエリアメッシュの細かい
- 10:00ごろ
非表示化
する - 翌朝に再度処理が走り、同様のことが行われる
- 07:00ごろ
- 07:00時点で処理が中断しデータ表示が失敗した場合、
エラー表示
を行う。
傘以外にも着ていく洋服をどうするか、学校から帰ったあと遊びに出る時の天気、など考えたら色々と「あったらいいな」が思いつく。
我が家に翻って考えると、コート・マフラー・手袋を付けていくべきかなんて一度も聞かれたことがない。典型的な思い込みだ。
その多くはプロダクト開発側の思い込みや仮説に過ぎず、真にユーザーが必要としている要素は別物だったりする。今回は確実に必要なものだけに限定しよう。MVPはそんな最低限の要素になるはずだ。
無料の気象APIから取得したい要素
MVP仮説の実証に必要なデータをブレイクダウンする
- 時間帯毎の降水確率(傘必要指数に変換して何らかの電子デバイスに伝送する用途)
Open -Meteoのデータ調査
取得を試みる
区分はhourly, dailyの2種だ。
これかなと思う「Precipitation」というものにチェックを入れて進めてみる。
結果はこちら。
疑問2つ
- hourly、常に0:00時からデータ配信されるということか
- Daily、7日先までの週間予報か?
分かったこと
- HourlyもDailyも7日間分出ている様子
- うちのユースケースを満たせるのはHourlyっぽい
Precipitationで返ってくるデータ
- Precipitation
- Total precipitation (rain, showers, snow) sum of the preceding hour
- うーん、降水量のことなのか?
見つけた!weathercodeが該当か
このコードで来るということか?
weathercodeで返ってきたデータ う、予報が当たってない疑惑
今日はこれで打ち止め