iOSのショートカットアプリで睡眠時間を強制確保する。

普段、iPhoneの睡眠計測系アプリで睡眠記録をつけてそのデータをヘルスケアのアプリに記録しているが、睡眠の状況を確認するのはたいてい睡眠時間が長い時で、睡眠時間が短い時に気づくという役割を果たしていないことに気づいた。これではせっかくの睡眠記録のデータが役に立っていない。
そこで、iPhoneの備え付けの自動化アプリであるショートカットを活用してヘルスケアの情報を読み取り通知を送るショートカットを作成しようとした。

基本的な方法

ショートカットアプリを開くと、ショートカットを作成というアイコンがある。そこをタップすると、新規ショートカットの作成画面が出てくる。
そこで、アクションを追加をタップ-> 検索バーでヘルスケアで検索すると、ヘルスケアアプリでできるアクションの一覧が出てくる。ここで重要なのはヘルスケアサンプルの検索だ。

画像6

ヘルスケアサンプルの検索を選ぶとこのような画面になる。検索の設定は、ヘルスケアの情報の種類(ここでは睡眠分析)を選び、期間を選び、検索条件を設定する。ここで、再生時間には、睡眠計測系アプリで測った睡眠時間が、値には"睡眠"とか”就寝”という情報が入っている。ちなみに、就寝は就寝時間で、睡眠はそのうち実際に眠っていた時間だ。睡眠計測を始めてから実際に眠るまでの時間(スマホを触っていた時間など)は睡眠時間には入らないが、就寝時間には入る。

画像1

そして、欲しい情報が手に入ったので、通知を行う。プラスの記号をタップして、新たなアクションを追加する。選び出したヘルスケアサンプルから再生時間(睡眠時間)を取得して、さらにif文を追加し、(if文はアクションを追加のスクリプティングの中の下の方にある。xみたいなアイコンをタップして下の方にある制御フローの"if文"を選ぶ)再生時間が短い時に通知を出す。(通知のアクションは検索バーで検索するとすぐ出てくる)

これでやりたいことのショートカットができた、はずだった。

画像2

そんなに単純にはうまくいかない。

よしできた、と思って色々確かめていると、あることに気づいた。

期間を長くしても、反応が変わらない...
期間が長くなると、睡眠時間が短い日が出てくるはずなのに...

それもそのはず。先ほどのショートカット、一番最近の再生時間が長いか短いかしか判定していなくて、昨日の睡眠時間なんてさっぱり気にしていないから。

回避方法は、スクリプティングの中にある計測というアクションを追加して、再生時間の項目数を数えること。例えば、睡眠時間が6時間以下の場合をヘルスケアサンプルの検索のアクションで選び出し、その睡眠時間6時間以下のイベントの数を計測というアクションで数えればいい。

それ以外にもうまくいかないことがあって、
私が使っている睡眠計測アプリは二度寝もちゃんと測ってくれて、2度寝50分とかも記録されている。だから、単純な6時間以下、ではダメで、2時間以上6時間以下として2度寝のデータを含めないようにしている。

一番ハマったポイント

そして、一番問題だったのは、値だ。値には"就寝"と"睡眠"があって、初めは、"就寝"に等しいの情報を加えれば2度寝を気にしなくて良いと思っていた。でも、どうやらこれがうまくいかないらしく、試行錯誤の末、日本語ではなく英語の"Asleep"("睡眠"と同じ)ならうまく動くことがわかった。いまいち、このショートカットというアプリは出来が悪い。

なんにせよ、睡眠時間を調べてお知らせするショートカットができた。

完成したショートカットは写真の通り。通知の代わりに全てのデータ通信をオフにするよ!
あとは、同じアプリのオートメーションで決まった時間にこのショートカットを実行するようにするだけ!!

画像3

画像4

画像5


微妙に出来が悪いけど、iOSのショートカットアプリは使える。

微妙に条件判定がうまくいかなかったり、スクリーンタイムにアクセスすることができなかったりなどなど出来が良いとは言えないけど、アプリを横断して処理できるのはとても良い。これで”ここ最近睡眠時間が短いのにスマホを触り続けている"なんてことは減るはず。


最後までお読みいただきありがとうございます。私たち大学院生にとっては、多くの人に実情を知ってもらうことがなによりの支援になります。普段の会話やSNSで大学院生について話題にしていただけると大変ありがたいです。