けものフレンズのアラーム!すっごーい!
(2026.01.01)
(2026.01.01)
けものフレンズのBGMを流すアラームアプリのようなものを開発。
1話冒頭ののんびりした感じで朝とか起きてみたくなった。それだけ。
サーバルちゃんの声があるといいかなぁ。
iPhoneのアラーム音をカスタムするのは難しそうなので、完全に個別のものとして専用システムを開発しよう。
「ショートカット」App(iPhone、iPad標準)
通常のアラーム音のように音を鳴らせて(音源をループ可能)、かつ
同一ショートカット内で設定、停止などの操作が完結する
前提として、本ショートカットは多重実行を想定しており、ショートカットの実行状況によって処理の順序や内容が異なる
時刻形式での入力を受け取り、アラームを作成する
※指定するラベル(アラームの名前的なもの)をもとに、すでにアラームが存在する場合は削除してから作成を行う
作成したアラームに対するこれらの機能も同じショートカットに含めたい(すべてをできるだけ一つで実行させたい)ので、ショートカットに与えられる入力[1]により処理(①と②)を分岐させる形で実装する
[1]有無を確認しているだけなので、②を実行する際の「入力」の内容は適当でいい
音声再生専用のモード
あらかじめショートカット内に組み込まれた音声ファイルを再生させるのだが、実行停止をすみやかに検知したいので5秒ごとにクリップボードの内容を監視(再生処理はサブルーチンで実行→参考リンク:「ショートカット」Appで並列処理を行う方法)
停止フラグ[2]を検知するとその時点でループを終了し、ショートカット自体は停止するはずだ
すでに音声の再生が行われている場合、アラームの設定時に一旦「停止」させる必要があるので、実行停止のフラグ[2](目印のようなもの)を上げる
[2]実行停止用のフラグはクリップボードに書き込む形で管理・参照させる
本体の処理はアラームが作動した際に自動的に開始するように指定
アラームを止めたら(正確には停止フラグ検出時)、サーバルのセリフを再生
最初は「オートメーション」でのイベント検知時に、直接本体であるショートカットを実行(内部でサウンド再生!)していた が、
短時間の実行であれば問題なかったのだが、4分を超えるとどんな処理内容であっても強制的に停止する…
オートメーションの処理内でループを開始するのが問題なのかと思い、オートメーション内に作成していた他の処理(アラームの判定やラベル取得)ごと通常のショートカットに移動して呼び出す形に変更
なぜかうまく実行させることができた(おそらく、停止フラグを上げるまでは無限ループが可能である)
実行時間の制限はあくまで「オートメーション」処理内の話なのか?(普通のショートカットとどう違いがあるのだろうか…)
「あらーむ」を起動し、時刻のセレクターで設定したい時刻を選択
(「の」の名前でアラームが作成され、自動でホーム画面に移動する)
指定時刻になり、アラーム音が鳴っている際に「あらーむ」を起動
アラーム音が止まり、そのまま新たにアラームを設定することも可能になる
※起動のタイミングによってはなかなか止まらないこともあるかもしれない…
以下のリンクからダウンロードできます。実行には、「ショートカット」アプリが必要です。
1.0.0
①「sound」集中モードを作成する(サウンド再生時に必須)
「『設定』>集中モード」からカスタムで作成する
名称欄に「sound」と入力して、「集中モードをカスタマイズ」を選択すれば作成完了
②上記のリンクを開いて、「ショートカットを追加」を押し、3つともダウンロードする
☆ (・・・)を押してアップデートログを確認可能です
③「[sound]」を集中モードに紐づける
→[sound]は集中モードの切り替えをトリガーに実行を開始するため必須
ショートカットAppの<オートメーション>で「sound:例"'sound'がオンになった時"」のような項目を探し、「オンになった時」に「[sound]」の実行を割り当てる
※実行の妨げとなってしまうので「すぐに実行」を選択し、実行毎に確認を求められないようにしておく
※「空のオートメーション」ではなく、<マイショートカット>から直接選択する方が簡潔に設定できる
④「Japari_Alarm_Trigger」を集中モードに紐づける
→アラームが鳴った際に本体を起動するための重要な処理となる
新規の<オートメーション>で「アラーム:例"アラームが止まった時"」を選択
「オフになる」ときに「すぐに」実行するように指定
同じく<マイショートカット>のカテゴリから「Japari_Alarm_Trigger」を選択して設定完了
あっ、ない…
あれー?
…わかんないや!
tag:「ショートカット」App,iPhone,時計