繰り返し回数が多い処理をしたい場合に困るのは, アプリがちゃんと処理しているのかフリーズしているのか分からない点です.
特にショートカットアプリは不特定の不具合が不意に起こるため自然と疑いたくなります.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS14.0.1
スポンサーリンク
定期的に通知させる
というわけで, それを少しでも払拭するために簡単な進捗を通知で表示させたいと思います.
(ショートカットにおける)一般的なfor文
まずは繰り返しの一つであるfor文から見てみます.
ショートカットには「繰り返す」アクションが存在しますが, これ自身には初期化や条件, 変化式を指定する項目は存在しません.
そのため他の場所に追加する必要があります.
ショートカットでfor文を作る例としては, 画像のように初期値と繰り返しの最大値を先に指定しておき, 変化式は「繰り返す」で行いたい処理の最後, 「繰り返す」終了直前に書くのが定石です.
進捗通知のフロー
繰り返し回数が多かったり, 繰り返しの内容が処理のかかるものである場合, 最初に書いた通りで処理中なのか停止しているかの区別がつきません.
なので今回は「繰り返す」の処理の中で全体のどのくらい進んでいるかを知ることによって解決の一助とします.
進捗通知を行うフローは画像のようになります.
画像から見切れていますがtmpという変数は「繰り返す」を行う前に初期値は1で定義しています.
今回は進捗として繰り返し回数Nを100%としてtmpだけ分割することで全体の10%, 20%, 30%…と表示させます.
そのため最初に「計算式」アクションで繰り返し回数Nを10等分したうちのtmp個分が終わったタイミングで通知させます.
100%の表示は不要と判断したため, tmpは8までとし, その後tmpをカウントアップします(順番を逆にしたい場合は9も含めることになりますね).
通知の体裁は好みで行います, 今回はシンプルにtmpを10倍したものに%を付けたものを表示する形です.
あとは実際に行いたい処理を入れます.
どうせ繰り返し回数は多いのですからどちらを先にするかどうかはどちらでも良いです.
これで然るべきタイミングで進捗通知がやってきます.
iOS14からは通知がレシピごとにまとまるようになったため, 大量の通知を吐き出しても簡単に削除できます.
〆
繰り返し処理以外の処理も時間がかかるようであれば, 通知させる文章に一言加えたほうが良いでしょうね.
逆に繰り返し回数が少ない場合は途中の通知の表示が省略されてしまいます, 被るので90%の通知が結果の表示よりやや遅れてやってくる…なんてことがあります.
中で行う処理次第ですが最低でも1000回繰り返すくらいでないと余り恩恵を受けられないでしょう, 場合によっては1000回でも一つ二つ省略されます.
繰り返しがなくとも, 段階によって通知させるのは利用者への配慮の意味を考えると無駄なものではありません.
ただショートカットレシピの多くは全体の処理自体が少ない, 簡単なものであることが多いものです.
それでも一部の数処理を伴うレシピでは知っておくと良いかもしれません.
そうでなくとも繰り返しを頻繁に行うレシピは何かと不安なので.