実際に使ってみる
この記事が良かったら
「チップをリクエスト」で著者にチップの受け取り設定をお願いできます
睡眠日誌アプリ「sleep-diary-php」の紹介
実際に使ってみる
この記事が良かったら
「チップをリクエスト」で著者にチップの受け取り設定をお願いできます
毎日の睡眠を24時間タイムラインで記録し、受診時の帳票としても使えるWebアプリ「sleep-diary-php」を紹介します。
睡眠に悩む方のセルフケアと、医療機関での受診補助を目的に作りました。
本番環境はhttps://sleep.223n.tech/で公開・稼働中です。
睡眠日誌は、就寝・起床の時刻や夜間の目覚め、日中の眠気などを日々書きとめる記録です。
不眠症や過眠症の診療では、患者さん自身がつけた睡眠日誌が診断や治療方針の重要な手がかりになります。
紙の用紙に手書きする方法が一般的ですが、次のような悩みがつきまといます。
このアプリは、こうした手書きの負担を減らしつつ、医師に見せられる帳票の形を保つことを目指しています。
記録の中心は、正午から翌正午までを30分刻み48スロットで表した24時間タイムラインです。
眠っていた時間帯をタップして塗るだけで、1日の睡眠が視覚的に入力できます。
タイムラインは3列で構成します。
状態は相互排他で同じ時間帯に1つだけ、服薬と食事は同じ時間帯に両方を記録できます。
備考のほかに、服薬メモと非公開メモも持てます。
非公開メモは本人だけが見るためのもので、医師へ渡すPDFには載りません。
一覧画面では、月単位で各日の睡眠を横並びのチャートとして見渡せます。
未記録の日は空白行として表示し、タップするとその日の記録をすぐに作成できます。
詳細画面では、1日ごとに合計睡眠時間・中途覚醒回数・就寝と起床の時刻・服薬回数などの集計を表示します。
さらに推移グラフでは、睡眠時間の日次バーと7日移動平均を重ねて、傾向の変化を追えます。
医療機関へ持っていくための出力も用意しています。
印刷帳票は未記録の日も空欄で出力するため、手書き用の白紙帳票としても使えます。
これらはサーバー側でPDFを生成してダウンロードできるので、印刷機能が使いにくいiOSのホーム画面アプリでも確実に保存できます。
記録は続けてこそ意味があります。
睡眠のデータは、健康に関わる繊細な個人情報です。
そのため、認証とプライバシーの保護に力を入れています。
データはユーザーごとに厳密に分離し、他人の記録は参照も編集もできません。
新規登録は管理者が発行した招待リンク経由に限る招待制で、誰でも勝手に登録できない仕組みです。
ここからは、開発者向けに実装のこだわりを紹介します。
ビルド工程を持たないぶん構成はシンプルで、共有ホスティングでもそのまま動きます。
lbuchs/webauthnライブラリを用いて実装しています日付と時刻はすべて日本時間(JST)で扱い、「現在の対象日」は正午を基準に判定します。
深夜をまたぐ睡眠区間を正しく1日として扱うための設計です。
開発環境はDockerとDevContainerでそろえ、本番はさくらのレンタルサーバー(スタンダード)で運用します。
本番は共有ホスティングでDockerを使えないため、git archiveとSSHを組み合わせてデプロイします。
これらの仕組みにより、機能追加のたびに品質を確認しながら安全に開発を進められます。
sleep-diary-phpは、睡眠に悩む方の毎日の記録を支え、医師とのコミュニケーションを助けることを目指したアプリです。
手書きの負担を減らしながら、診療で役立つ帳票の形を保つ点にこだわりました。
興味を持たれた方は、ぜひ次のリンクをご覧ください。
ライセンスはMIT Licenseです。