もう一人のY君

主にiPhoneのショートカットアプリのレシピやTipsなどを書いています. たまに数学の記事も書きます.

もう一人のY君 MENU  MENU

【iPhoneショートカット】「現在のアプリを取得」の使い方

 

 iOS18.2で「現在のアプリを取得」というアクションが追加されました.

 

 

ショートカット

ショートカット

  • Apple
  • 仕事効率化
  • 無料

※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.

 

 

スポンサーリンク

 


 

 

一癖あるアクション

 相変わらず説明が簡素化したため出力が何なのかイマイチわかりません.

 

 

 ものは試しでとりあえず出力を「結果を表示」で表示するとどうなるか確かめます.

 

 結果はどうもうまく行きません、やはり「アプリを取得」だからでしょう.

 

 なので属性を変えてみます.

 変数をタップすると案の定「アプリ」にチェックが入っていたのでこれを「名前」に変更します.

 

 

 該当の変数が「名前」に変わったのを確認して実行すると、ちゃんとアプリ名で表示できました.

 

 

 同じことを今度は通知でやってみるとどうでしょう.

 

 

 変数のメニューを開くとデフォルトで「名前」になっています.

 そのまま実行して問題ない…と思いきや何も表示してくれていません.

 「ショートカットの入力」ではちゃんとアプリ名が入っているのにです.

 

 これは「結果を表示」と「通知」アクションで表示できるファイルの属性の違いによるものを思われます.

 

 しかし今回のような使い方ではやはりアプリ名を取り出したいところです.

 このまま通知ではアプリ名を表示できないのか…

 

 

 というわけで思案したところ、表示させる前に一旦「入力からテキストを取得」を噛ませることでうまくいくことが分かりました.

 「入力からテキストを取得」に入れた変数をタップし、属性を「名前」にし、この結果を通知に使います.

 

 

 これで通知でも表示できるようになりました.

 もしかしたら他に手段はあるかもしれません.

 

 ともかくこれでまともに使えることが分かったので、これを使った例をひとつ紹介しておきます.

 

 

 

使用例:現在のアプリとこれまでに開いたアプリをリストする

 過去にどんなアプリを開いたか…はAppスイッチャーがありますが、これは意図的に削除することで欠けを作ることができてしまうので実際には「アプリを開いた履歴」とは言えません.

 なので正しい意味での履歴としてどこかに格納し、管理するオートメーションを組んでみます.

 

 今回は実際に格納された各種データがどうなっているかを確認するために通知をさせます.

 実際にはそれを利用して過去に開いたアプリに戻ったり、履歴に応じてChatGPTに整理やおしゃべりさせたり…と様々です.

 

 

Actions

Actions

  • Sindre Sorhus
  • ユーティリティ
  • 無料

 オートメーションを組むに当たり、Actionsというアプリを使います.

 メモアプリやファイルアプリでもいいんですがActionsで使えるグローバル変数が便利です(後の処分に気をつける必要はあります).

 

 グローバル変数というのは、簡単に言えば「どこからでも使える変数」です.

 

 

準備:Actionsのグローバル変数を定義する

 グローバル変数は一旦どこかのレシピなりオートメーションなりで一回でいいのでセットする必要があり、これをしないと"Get global text variable"などで選択肢に出てきません.

 Actionsの"Set gloal text variable"アクションで必要な変数を定義します、ここでは

 

  • current app:現在開いているアプリ
  • previous app:前回開いたアプリ(1つしか格納できない)
  • previous app list:過去に開いたアプリ(2つ以上リスト可能)

 

の3つを定義します.

 わざわざ空の「テキスト」を置いているのは、代入する値が空だと実行時に入力を促すポップアップが各々で表示されて煩わしいからです.

 後者の2つは目的次第で片方だけ使って下さい.

 

 このレシピ自体はあとで変数のクリア(削除ではないです)にも使えます.

 

 

 

アプリを開いたときのオートメーション

 まずはアプリを開いたときに処理するオートメーションを組みます.

 

 

 ショートカットアプリを開き、「オートメーション」から「アプリ」を選びます.

 

 「アプリ」から希望するアプリにチェックを入れます.

 目的を考えると全部にチェックを入れるべきですがこれは皆さんにお任せします.

 「開いている」のみにチェックを入れ、「すぐに実行」をタップ、「実行時に通知」がオフになっているのを確認し「次へ」をタップし、「新規の空のオートメーション」を選択し、編集画面に移動します.

 

 

 まずはアプリを開いた場合のメイン処理です.

 先程の使い方に倣い、まずは「現在のアプリを取得」と「入力からテキストを取得」で現在のアプリ名を取得し、これをActionsの"Set global text variable"のグローバル変数変数current appに代入します.

 

 最低限の処理はこれだけです、あとは目的に応じてアクションを追加します.

 

 最後に起動確認のために"Get global text variable"でcurrent app、previous app、previous app listの3つを通知で表示させます.

 

 

アプリを閉じたときのオートメーション

 次はアプリを閉じた場合です.

 

 

 同じくショートカットアプリのオートメーションからアプリをトリガとして新規作成するのですが、先ほどと違い「アプリを閉じている」にのみチェックを入れます.

 

 まずはcurrent appとprevious変数の処理を行います.

 "Get global text variable"でcurrent appの値であるアプリ名を取得します.

 アプリを閉じた時点でそのアプリは「過去に開いたアプリ」なのでこのアプリ名をpreviousに代入します.

 

 アプリを閉じたということは「現在開いているアプリはない」ので、最後に空の「テキスト」でcurrent appをクリアします

 

 

 次はprevious app list変数の処理です.

 "Get global text variable"でprevious app listの値、つまり過去に開いたアプリ名のリストを取得し、「テキスト」アプリでこのリストと「このオートメーションを実行した最初に取得したcurrent app」を並べたものを作っておきます.

 並べる順番によって履歴の順番が変わるのは言うまでもありません、好きな順番にしましょう.

 

 このままだといくらでもリストが増えていくので制限をつけることにします、「数える」アクションで上で作った「テキスト」の行数を数えます.

 

 

 上で取得した行数によってif文で取得する行を取り出します.

 例えば10行までにするなら行数が10を超えたら先頭から10行まで、そうでない場合はリストしたテキストそのものを「入力からテキストを取得」で確保します.

 

 このif文の結果を"Set global text variable"でprevious app listに上書きします.

 

 

 最後に起動確認のために各種グローバル変数を通知で表示させます.

 

 

実行結果

 実際に動かしてみます.

 各種グローバル変数が空の状態で例えば設定アプリを開くと、まずcurrent appにだけアプリ名が格納されました.

 そのまま設定アプリを閉じるとcurrent appはクリアされ、今度はprevious appとprevious app listに設定アプリのアプリ名が格納されます.

 

 

 続けて例えば写真アプリを開くと、current appに「写真」が格納され、previous appとprevious app listは変わりません.

 写真アプリを閉じるとcurrent appがクリアされ、previous appが「写真」に置き換わり、previous app listに「写真」が追加されました.

 

 

グローバル変数の管理と後始末

 Actionsで定義したグローバル変数は、削除しないかぎりずっと残ったままです.

 レシピが終了、中断しただけでは削除できません.

 

 

  Actionsにある"Global Variable: Delete"というアクションを使えば削除が可能なので本当に不要となったグローバル変数は適当なレシピ(このアクションだけでもいいです)でこれを実行しましょう.

 

 グローバル変数は便利な一方大規模なプログラムや並列動作するものに使うには向かないところがあります.

 

 ショートカットの多くでそのようなレシピを作る機会は少ないでしょうからさほど気にすることではないですが、うっかり別のレシピで使用しているグローバル変数と同じ変数名にしてしまった、同じグローバル変数で値を変えてしまった…となりかねないのは同じなので管理には気をつける必要があります.

 

 

 

 このままだと同一のアプリが過去にあった場合重複するので、目的次第ではそれを防ぐ処理が必要かもしれません.

 

 Appスイッチャーと異なりこの使用例では途中の履歴を意図的に削除できず残るというわけですね.

 あとはアクションボタンや背面タップ、AssistiveTouchなどと「リストから選択」→「アプリを開く」である程度スムーズに過去のアプリに戻れます.

 

 この記事ではあくまでも基礎とそのちょっとした応用でしかないので、ここからどう応用していくかで価値が生まれると思います.