7rikazhexde’s tech log

技術的な興味関心や備忘録をまとめてます。

iPhoneのショートカットアプリで土日、祝日、平日を考慮してアラームを指定時間で設定するオートメーションについて

経緯

iPhoneの時計アプリではアラームを設定することができますが、設定を自動化したいと思いショートカットアプリで作成することにしました。
iPhoneでは「ヘルスケア」の睡眠スケジュール機能として曜日ごとにアラームを設定できる機能がありますが、アラーム設定は平日と休日で異なる場合があります。例えば祝日の場合は平日のアラームが設定することがあると思います。しかし、現状のヘルスケアの睡眠スケジュール機能では祝日の判定ができないため、希望通りの設定ができません。 また、睡眠スケジュールアラームには曲を選択することはできたいため、曲を指定したい場合は時計アプリを使用する必要があります。 そこで本記事ではカレンダーの情報から平日と祝日の情報を取得してアラームを設定するショートカットアプリを作成したので紹介します。

作成したもの

指定時間(デフォルトでは0時)に土、日、祝日用と平日用に2種類のアラームを設定するショートカットアプリです。

動作確認環境

iOS 13.x以降

使用手順

  1. 下記リンクよりアラーム設定のショートカットをショートカットアプリに追加する。
    ※リンクから追加画面に遷移しない場合はメモにURLを貼り付けてからアクセスしてください。 www.icloud.com
  2. 時計アプリで土、日、祝日用と平日用のアラームを作成する。
  3. アラーム設定のショートカットに2.で作成した時間を土、日、祝日用と平日用のアラームについて、アラームの切り替えアクションでオン、オフをそれぞれ設定する。
  4. 新規オートメーション画面で個人用オートメーションを作成して時刻を00:00、繰り返しを毎日に設定し、アクションを追加ボタンから1.で追加したアラーム設定のショートカットを設定する。

注意事項

土、日、祝日は同じ時間のアラームを設定するようにしています。(個人的に土、日、祝日で分ける必要はなかったためです。)
それぞれ設定する場合は後述するアラーム設定用の変数と判定処理を追加すれば対応可能です。
実行可能な端末はiPhoneiPadです。Macでもショートカットアプリはサポートしていますが。時計アプリとオートメーションが未サポート(MacOS バージョン12.5現在)のため実行できません。

ショートカットの処理について

以下アクティビティ図に従い処理します。
※アラーム設定のショートカットにもコメントを追加していますので合わせて確認ください。 アラーム設定初期化処理平日と土、日、祝日用のアラームをオフにする。アラームオフ処理アラーム設定用変数を0で初期化する。 土日用:flagSetAlarmSatAndSub 祝日用:flagSetAlarmHolidayアラーム設定用変数の初期化処理土日判定処理カレンダーアクションから現在の日付指定でフォーマットした日付情報を取得する。 日付フォーマット:カスタム 文字列フォーマット:EEE ロケール:デフォルト日付情報取得処理trueフォーマット済みの日付が次を含む 土ならばflagSetAlarmSatAndSub=1trueフォーマット済みの日付が次を含む 日ならば)falseflagSetAlarmSatAndSub=1土日ではない(flagSetAlarmSatAndSub==0)N/A祝日判定処理カレンダーアクションから全てのカレンダーイベントを検索(以下の条件に合うもの)次の全てが真(TRUE) 開始時日が今日であるおよび カレンダーが次と等しい日本の祝日カレンダーイベント検索処理日本の祝日と等しいtruefalseflagSetAlarmHoliday=1祝日ではない(flagSetAlarmHoliday==0)N/Aアラーム設定処理祝日用アラームをオンにするショートカットを停止して終了する。trueflagSetAlarmHoliday==1土日用アラームをオンにするショートカットを停止して終了する。trueflagSetAlarmSatAndSub==1平日用アラームをオンにするショートカットを停止して終了する。trueflagSetAlarmHoliday==flagSetAlarmSatAndSubショートカットを停止して終了する。※基本的にこの分岐に来ることはないが念の為ショートカットを停止する。

まとめ

iPhoneの時計アプリのアラームを自動で設定するショートカットアプリを作成しました。
カレンダーから土日、祝日、平日の情報を取得、判定することでアラームを設定しました。 気になった方は是非使ってみてください。
本来は寝る時間も起きる時間も固定化して規則正しい睡眠を取ることが理想ですが、寝る時間はバラついているので寝るまでの時間も意識して習慣化したいなと思っています。