見出し画像

【iOSショートカット】起きたい時間に応じてm分間隔でn個のアラームを自動でセットする

私は朝に起きるのが大の苦手である。そのため何個もアラームをセットしてから就寝するのだが、アラームを一つ一つオンにしていくのは手間に感じられる。そこで、iOSのショートカットを用いてこれを自動で行うショートカットを作成する。

本ショートカットでは起床時間から前あるいは後に自由な個数のアラームをセットすることができる。アラームごとの間隔も自由に設定できる。

説明の途中でショートカット名であることを強調するために「Set alarmsショートカット」と書くことがあるが、短縮化のために「Set alarms SHC」のように書くこととする。

大まかな動作

Set alarms SHCにより起床したい時間に応じてかける自動でアラームがオンになる。Set alarms SHCの動作は以下のような遷移図で表される。

Set alams SHCの遷移図

ショートカットには予め3つの変数を登録しておく。

  1. 期間d: 起床時間前あるいは後のどれぐらいの期間にアラームを設定するか

  2. 間隔p: dで定めた期間に何分ごとにアラームを設定するか

  3. before or after: 起床時間の前と後どちらにアラームを設定するのか

これら3つの変数もショートカット実行時に尋ねるようにはできるが、手間が増える上に日によって変わる変数でもないのでショートカットに定数として与えてある。

デフォルトではd = 60、p = 5、afterに設定されている。つまり、起床時間の60まで5分間隔にアラームがオンになるということを意味する。

アラームがオンになった後にこのまま寝るかどうかを聞かれるが、これは別記事で紹介したショートカットとの連携機能であるため、ここでは紹介しない。


実装編

準備

起きたい時間として候補になりそうな時間帯に、指定したい間隔ごとにアラームを作成しておく必要がある。アラームの題名は無題である必要がある。

10分間隔ならまだしも、5分間隔や3分間隔だとアラームを作成するだけで一苦労である。そこで、それを自動化するCreate alarms SHCを作成したので必要があればそちらを使う。

以下、この準備が済んでいるものとして進める。

Wake-up Time SHCの作成

初めに、Set alarms SHC内で起動するWake-up Time SHCを作成する。Wake-up Time SHCの動作は以下のような遷移図で表される。

Wake-up Time SHCの遷移図

Wake-up Time SHCは入力された時間を15分区切りで最も近い時間に変換するショートカットである。例えば、9時5分を入力すると、9時0分が最も近いので9時0分を出力する。このショートカットにより、起床時間を設定するときに分を多少ずれて設定してしまっても構わないようになっている。

アイデアとしては時刻(分)を4で割ったときの余りの整数部分が、00分、15分、30分、45分に近いそれぞれの時刻(分)のグループ内で同じになるように四則演算を行っている。

それでは実装していく。

Wake-up Time SHC 前半
Wake-up Time SHC 後半

このショートカットは以下のリンクからダウンロードすることができる。

Set alarms SHCの作成

次に、Set alarms SHCを作成する。遷移図を再掲する。

Set alarms SHCの遷移図(再掲)

リストs¹に対してアラームを設定したい時刻を格納していき、リストsと存在するすべてのアラームを照合して合致した場合にそれをオンにするという動作が行われている。
従来の複数のアラームをオンにするショートカットでは「〇〇のアラームをオンにする」というアクションをショートカットにすべて入れておく必要があり、間隔を変えたいときや時間を変えたいときにショートカットを再編集する必要があった。本ショートカットはその点を克服し、アラームさえ存在すればいくらでもショートカットの変更なくオンにすることができる。

註1: iOSのショートカットでは変数に対して新たにオブジェクトを追加すると変数が要素2個のリストになるという不思議な機能がある。

それでは実装していく。

Set alarms SHC Part 1
Set alarms SHC Part 2
Set alarms SHC Part 3
Set alarms SHC Part 4

自力で作成する場合や、本ショートカットを編集する場合には日付型なのか、テキスト型なのか十分注意する。日付型はIf文において「値を持たない」か「任意の値を持つ」の2つしか条件を設定できず、使い勝手が悪いので一度テキスト型に変換する方がよい。
また、日付型ではあるが時刻を扱っているので、日付型のフォーマットは全て[日付フォーマット]→[カスタム]からhh:mmに書き直さなければならないことに注意する。

このショートカットは以下のリンクからダウンロードすることができる。


運用編

動作フロー

これまでのショートカットやオートメーションなどは、以下のように動作する。

  1. 事前に設定したい間隔ごとにアラームを作成しておく

    1. Create alarms SHCを使用すると簡単

    2. タイトルを設定しないでおく

  2. Set alarms SHCの変数の設定を行う

    1. d、p、before or afterのこと

    2. 毎回行う必要はない

  3. Set alarms SHCを起動する

    1. 指定された変数にしたがってアラームがオンになる

    2. 最後に「寝る」を選択すると4.に進む

  4. Sleep SHCが起動する


まとめ

本記事では、アラーム作成・有効化を自動化するショートカットを紹介した。私の調べた限りでは、一定間隔のアラームを自動で作成・有効化できるショートカットは存在しなかったので、作成に非常に苦労した。

本ショートカットによりアラームを設定する毎晩の手間が省ければ幸いである。

もっと便利に使うには?

別記事で、アラームをかけた後に寝落ちタイマーをセットして一定時間後に自動的に画面をロックしてくれるショートカットを紹介した。そちらと合わせて使うと就寝前に色々と操作する手間が省けるので便利。


予想される不具合とその対応

ダウンロードしたショートカットが実行できない

次のリンクを参照: 【iOS】ショートカットで「信頼されていないショートカットを許可」する方法とセキュリティ設定について。


参考

【iOS】ショートカットで「信頼されていないショートカットを許可」する方法とセキュリティ設定について。

この記事が気に入ったらサポートをしてみませんか?