※ この記事は、cloud.config Tech Blog にもマルチポストする予定です
子供が産まれて妻子の入院期間中、体温や授乳回数やおしっこ・うんちの時間を記録する紙があって、そこに毎日記録していました。
退院後もそのフォーマットを Excel で真似て紙に印刷して使っていて、子供の不調が無いか確認していました。
子供が 1 歳になった今も一応、記録内容を減らした紙を運用してはいるものの、ほとんど問題ないのであまり書いていないです。
ただその中で、絶対書いておきたいのが、
うんちの記録です!
便秘だと不機嫌になったり場合によっては病院に行かないといけなくなります。
うちの子は最近は割と快便ですが、最初の頃は便秘でとても心配しました。
また、うんちがあまり出ていない状態でお風呂に入ると・・・ね。。
ということで、うんちの回数を記録するアプリを書いてみましたのでご紹介です。
アプリの概要
カレンダーの中の「+」ボタンを押すと、当日の枠に 💩 マークがつきます。
データは Cosmos DB に保管されます。
アプリコード
Visual Studio 2022 で作成しました。GitHub で見れるようにしています。
https://github.com/hirokimatsueda/baby-info-recording-system
フロントアプリの実装は大目に見てください。。
フロントの作りが微妙ですが・・・赤ちゃん ID を変更すると別々のデータを管理できるので、双子や兄弟のデータも扱えます。
アーキテクチャ概要
インフラとしては Azure の Static Web Apps での動作を想定し、情報を CosmosDB に保存するので、比較的安価に運用できるものになっています。
アプリは ASP.NET Core Blazor での記述です。
インフラもアプリも、ベースとなる考え方は以前ブログでご紹介した下記のコードです。 https://github.com/hirokimatsueda/azure-managed-id-sample
インフラ構築
Api は Static Web Apps のデフォルトの機能で動かすと Managed ID が使えないため、Static Web Apps とは別で構築した Functions を Static Web Apps にリンクする形を取るのがポイントです。
下記に要点をご紹介します。
Cosmos DB と Functions の作成
下記の Terraform で作成することで、Functions から Managed ID で Cosmos DB のデータの更新ができる状態に整えます。
https://github.com/hirokimatsueda/azure-managed-id-sample/tree/main/infrastructure/terraform
Static Web Apps の作成
Functions のリンクをするので、Standard で作成します。 作成時にビルドの詳細で下記を指定します。
- ビルドのプリセット: Blazor
- アプリの場所: Client
- API の場所: (空欄)
- 出力先: wwwroot
作成後、Azure ポータルの「API」から、作成した Functions をリンクしてください。 他の人に見えないように、全般設定でパスワード保護を実施すると良いです。
まとめ
これで子育て環境の DX が完了ですね! ・・・とは現実的には、このレベルだとたぶん紙で運用した方が楽です。 機能追加すれば入院中の記録用紙と同じレベルで記録ができるようになると思うので、誰か作ってみて欲しいですね。