とても面白いアイデアを見つけた方がおられました.
なおいくつか試した上では以下の条件であれば使えるようです.
- OS
iOS18,iPad OS18以上 - 使用先
・「ホーム画面に追加」で追加したアイコン
・背面タップ
アクションボタンでもできそうですね.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS18.0
スポンサーリンク
Redditから
Double-Tap Technique! - Reddit
通常ホーム画面に追加したアイコンでレシピを実行するのはワンタップですが、ショートカットアプリを補助するアプリのひとつActionsにあるグローバル変数を利用してこれを実現しています.
ちなみに「変数を設定」を含む通常の変数はローカル変数みたいなので同じことはできませんでした.
そのためActionsは今のところ必須のようです.
元レシピの解説
Redditにあるレシピを簡単に解説します(レシピはコメント欄にあります).
まずActionsの"Global Variable: Set Number"というアクションを追加します.
このアクションは指定した値をグローバル変数として定義するものですが、インクリメント(数字を増やす)やデクリメント(数字を減らす)も可能となっています.
グローバル変数と言うだけあって同期されたすべての端末にまたがって共有でき、総ストレージは1MBだそうですが、大容量のデータには使用しないよう説明には書かれています.
その場合はクラウドやメモアプリ、Data Jarが代用となります.
ともかくこのアクションでグローバル変数を定義し、更に1をインクリメント(足す)します.
更に正しくインクリメントできるよう「待機」アクションで一定時間待機します.
元のレシピでは0.3秒になっていますが、回数が増える場合や操作に慣れるまではこれでは少ないので1秒か1.5秒あたりにすると良いです.
続いてActionsの"Global Numbers: Get Number"アクションで先程のグローバル変数を出力します.
きちんと操作できていればこの出力はタップした回数の数となっています.
なのでif文を使ってこの回数で場合分けします.
最初の"Global Numbers: Number"で1をインクリメントしているのでシングルタップ時は1、なのでこれが1に等しい場合は1タップ時に行いたいアクションを追加します.
作者のレシピでは単純に1タップしたことを通知するアクションを追加しただけです.
グローバル変数が2の場合も同じように…と言いたいんですが、ここでグローバル変数をクリアする処理が必要です.
クリアと言ってもActionsの"Global Number: Set Number"で0を代入します.
最後にActionsの"Global Number: Set Number"でグローバル変数をクリア(0を代入)して完了です.
あとは「ホーム画面に追加」したアイコンなどで試してみます.
通常のタップではグローバル変数が1のときの処理が…
二度タップした場合はグローバル変数が2の場合の処理が行われます.
複数タップ速すぎると1タップ2回と誤認され、待機時間が短すぎるとレシピ自体が2度実行されるので慣れるまで苦労するかもしれません.
いずれにしろこのTipsを利用すれば「メニューから選択」や「リストから選択」などでの目視によるタップの手間を省略することができそうです.
実用例:アプリランチャー
まずやってみたいのはアプリランチャーですね.
メニューから選択するのは上記の通りですし、アクションボタンが対応していない端末では強力な味方です.
上のレシピを把握していればやることはそこまで難しくありません.
元のレシピで通知をしていたものを「アプリを開く」に差し替えるだけです.
2タップ目も同じように.
3つ4つにしたい場合
ここまでくると2つじゃ物足りないかもしれません.
試しに3つの場合を考えてみます.
元のレシピで2つ目のif文を入れ子にしていたのでそれを参考にすれば良さそうです.
グローバル変数が1の場合までは先程と同じです.
グローバル変数が2の場合も同じですが、3の場合は2の場合の「その他」の中に入れ子として追加します.
レシピ構成は2の場合と同じにしました.
最後にグローバル変数をクリアします.
実際に試したところ問題なく動作しました.
しかしこの程度なら良いですが入れ子がどんどん深くなるのは見た目がよくないです.
ショートカットのようなローコードプログラミングでは前後のコード(アクション)を参照するのも一苦労なのでできるだけ画面の中にひとまとまりになっているのが望ましいです.
入れ子を抑える工夫
というわけで結果は同じでレシピの中身が見やすくなるように書き換えてみます.
グローバル変数が1での処理まではこれまでと同じです.
ここからが変わります.
これまではif文でグローバル変数が2に等しいかどうかを見ていましたが代わりに2以上かどうかで判定します.
その後if文の条件が2か3か4か…でif文を個別に入れ子にします、これなら入れ子がどんどん深くなる心配はかなり減りました.
最後に忘れずにグローバル変数をクリアします.
〆
分岐処理が増えればより面白いレシピが作れそうですね.