確とした資料はないが、Macユーザの多くはiPhoneユーザでもあり、iCloudやAirDropなどの機能を使い連携処理を行うことは半ば常識。しかし、その方法は必ずしも最新・最高効率ではないかもしれない。今回は、iOS 13からショートカットアプリに追加された「オートメーション」機能を利用し、一歩進んだMacとの連携術を紹介してみよう。

「ショートカット」でできること

iOSのショートカットアプリは、いってしまえば「AutomatorのiOS版」だ。DeskConnect社が開発した「Workflow」を買収し、改良のうえAppleのプロダクトとして公開した経緯はあるものの、「アクション」と呼ばれる機能単位を並び順に処理すること、ファイルなどのデータをアクションを通じて受け渡しできることなど、基本的なコンセプトはほぼそのままと言っていい。MacでAutomatorを利用した経験があれば、すぐ馴染めるはずだ。

そのショートカットに、iOS 13から「オートメーション」機能が追加された。Automatorと似た響きのため混乱しそうになるが、ショートカットアプリで作成したマクロ(ショートカットと呼ぶべきだが混乱するので敢えてこう呼ぶ)を呼び出すためのトリガーであり、時刻や位置情報、Wi-Fi/Bluetooth機器との接続、アプリの起動などをきっかけにマクロを実行できる。

このオートメーション機能の目玉は、NFC/FeliCaタグへの対応だ。iPhone XS以降の端末に限定されるが、iPhoneをタグへかざせば反応し、作成済のマクロを自動実行できる。iPhoneをタグにかざしてアラームを開始/停止する、アプリを起動するといったことはもちろん、複数のタグを用意しそれぞれに異なる電話番号を割り当て(iPhoneはタグの違いを判定できる)電話をかける、などという使いかたが可能になるのだ。

と、ここまではmacOSと関係のない機能だが、ショートカットアプリには「SSH経由でスクリプトを実行」というアクションが用意されている。ご存知のとおり、macOSはSSHサーバとして機能するので、このアクションを利用したマクロを作成しNFC/FeliCaタグをトリガーとして起動するよう設定しておけば、Macの自動化処理がかなりバリエーション豊かなものになる。

この「SSH経由でスクリプトを実行」アクションには、ログイン後に実行する任意のシェルスクリプトを記述しておける。Macに多数あるコマンド群を自在に活用できることはもちろん、iOSとの間で標準入出力を介したデータの受け渡しもできるので、かなりのことが可能になる。シェルスクリプトに限らず、osascriptコマンドを使いAppleScriptを呼び出してもいいし、curlコマンドを使うなどして外部サーバとやり取りしてもいい。可能性は無限(?)だ。

  • iPhone XS/iOS 13.1以降のiPhoneでは、「オートメーション」機能でNFC/FeliCaタグをトリガーとした処理が可能になる

  • オートメーション機能のトリガーとして「NFC」を選択する

  • 「SSH経由でスクリプトを実行」アクションには、IPアドレス/Bonjour名などの情報を入力しておく

  • このように、iPhoneを使いMac上のデータ(ここでは写真)を標準入力経由で受け取ることも

まずは「タッチでアプリを起動」

ショートカットアプリのオートメーション機能を使うメリットは、「iPhoneで起こした小さなアクションをきっかけに処理が始まる」こと。時間の到来やWi-Fi接続をきっかけにするのも悪くはないが、NFC/FeliCaタグをトリガーとするほうがスマートフォンらしさがある。

ユースケースとしてもっともシンプルかつ応用が効くのは、アプリの起動ではないだろうか。「SSH経由でスクリプトを実行」アクションに記述するのはたったの1行、openコマンドだけでいい。ここでは例として、カレンダー(Calendar.app)を利用してみたが、iPhoneと組み合わせて使うことが多い写真アプリ(Photos.app)もいいだろう。個人的には、iPhoneを使いQRコードログインできるMac版LINE(LINE.app)がお勧めだ。

open -a Calendar
  • これだけの記述で、NFC/FeliCaタグにiPhoneをタッチすればMacのカレンダーが起動する

コピーしたテキストをファイル化

iPhoneとMacの間でファイルをやり取りするときの手段といえば「AirDrop」。コピーしたデータも、クリップボードを共有する「ユニバーサルクリップボード」がある現在、iCloudに同一アカウントでサインインさえしていれば、互いにコピー&ペーストできる。しかし、iPhoneでWEBブラウジング中になんとなく目についた文章を保存したいとき、iCloud経由で同期できるとはいえ「メモ」にいちいち貼り付けるのは面倒だし、作業対象をMacに切り替えて(ユニバーサルクリップボード経由で)コピー&ペーストするのも手間がかかる。

そこで作成してみたのが、コピーしたテキストをファイル化するツール。「SSH経由でスクリプトを実行」アクションに記述するのは以下に示す1行のみ、これでNFC/FeliCaタグにタッチしたタイミングで、そのときクリップボードにある文字列がホームフォルダに「西暦月日_時-分-秒.txt」というファイル名で書き出される。

このツールの奥深さは、ユニバーサルクリップボードの内容をペーストして作成するから、コピー元がiPhoneでもMacでも構わない点にある。Macで作業中に気になる文章に遭遇したときでも、その範囲をコピーしてiPhoneをNFC/FeliCaタグにタッチすれば、その文章をテキストファイルとして保存できるのだ。シンプルなわりには便利と思うが、どうだろう?

pbpaste > $HOME/`date +%Y%m%d_%H-%M-%S`.txt
  • これだけの記述で、クリップボード上文字列をテキストファイルに書き出せる

  • オートメーションの設定で、「実行の前に尋ねる」スイッチをオフにしておくと、煩わしい確認が不要になる