iPhoneのショートカットアプリで遊んでみた

2021.06.30

ショートカットアプリとは

今回は自分が好きなiPhone標準搭載の「ショートカット」アプリについて紹介します。iPhoneのショートカットは、PC不要でiPhoneだけで作れるノーコードアプリのようなものです。いろいろなアクションが用意されており、好きなように組み合わせて一つの機能を作ります。作った機能は他の人に配布することもできます。アクションには様々なものがあり、単純な文字列操作や、画像操作、他のアプリを開いたり、iPhoneのWifi,BluetoothをOn/Offしたりできます。さらにHTTP(S)リクエストを投げることもできるためAPIを呼び出すこともできます。

https://support.apple.com/ja-jp/guide/shortcuts/welcome/ios

数あるアクションの内の一つに、「SSH経由でスクリプトを実行」があったため試しにショートカットからEC2インスタンスにログインしてみました。またもう一つ別の機能を作り、APIを実行してSLACKでメッセージを送信してみました。

iPhoneからEC2インスタンスにSSH接続

iPhoneのショートカットアプリを開き、右上の「+」を押し新規ショートカットを作成します。次に検索バーから「SSH経由でスクリプトを実行」を探して追加します。

認証の項目で「SSHキー」を選択すると、その下にSSHキーの項目が出現し「ed25519キー」もしくは「2048ビットRSAキー」となっています。そこを押すとSSHキーの詳細画面が開きます。「新しいキーを生成」を押すとキーを生成する画面が表示されます。「RSA」を選択しコメントは空白にしておきます(コメントに日本語を含んでいると登録できませんでした)。完了ボタンを押すと、アラートが表示されるので「置き換え」を押します。SSHキーの画面が表示されるので「公開鍵を共有」を押します。AirDropなどを利用してPCに公開鍵のテキストファイルを送信します。

PC側ではAWSマネジメントコンソールからEC2のキーペアの画面を開き、「アクション」>「キーペアをインポート」の順に押します。キーペアの名前に適当な名前を入力し、テキストボックスにiPhoneから転送した公開鍵をコピペします。公開鍵はテキストファイルなのでテキストエディタで開いて、文字をコピーして貼り付けます。入力できたら「キーペアをインポート」を押します。
EC2のダッシュボードからEC2を一台起動します。キーペアの設定では「既存のキーペアの選択」を選び、先ほど作成したキーペアを選択します。
iPhoneのショートカットアプリに戻り、
・ホスト:(EC2のパブリックIPv4アドレス)
・ポート:22
・ユーザ:ec2-user
を設定します。スクリプトの箇所には実行したいコマンドを入力して、左下の「▶︎」ボタンを押します。出力のあるコマンドだと画面下に結果が出力されます。apacheサーバの停止などは簡単に行えて便利そうです。

SLACKでメッセージ送信

社内の研修期間中は始業時にSlackの新卒部屋で「開店します」と送ることになっています。また終業時には、「閉店します」と送ります。ショートカットを使えばiPhoneからワンタップで送信できます。毎回Slackに文字を入力する手間を省けるので作ってみることにしました。
まずは以下のサイトを参考にSlack Appを作成しました。
Slackのメッセージ送信を行うWeb APIを公式ドキュメントから確認します。
「URLの内容を取得」というアクションを追加して設定を行います。方法ではPOSTを選択し、ヘッダには以下を入力します。
・Authorization : Bearer [OAuth Access Token]
・Content-Type : application/json
本文を要求の項目は「JSON」を選択し、内容は以下のようにします。
・as_user : true
・channel : (メッセージを送りたいチャンネル名)
・text : (送りたいメッセージ)
今回は日付アクションなどを使って午前と午後を取得し、条件分岐を行い送るメッセージを変更しています。ホーム画面にショートカットを追加することもできるので、スマホを開いてワンタップでメッセージを送信できます。最終的に以下の画像のように設定することで、手入力の時と同じようにSlack上でユーザーとして文字を送信できました。

壁紙変更

SNSでiPhoneの背面を二回タップするだけで壁紙が変更できるショートカットが流行っているのを見かけました。iPhoneのアクセシビリティから背面ダブルタップを有効化でき、そこにショートカットを割り当てています。面白いと思ったので自分も作ってみました。背面ダブルタップにより好きな壁紙をランダムに変更できます。配布リンクを貼っておくので興味のある方はぜひ使ってみてください。iOS14で作成したので古いiOSだと利用できない場合があります。ちなみに配布しても、配布者はダウンロード数など一切分からない仕様です。

https://www.icloud.com/shortcuts/1c955b2f47534070b8475eacef54acae

使い方はショートカットのコメント欄に書いていますが、多少複雑です。一番最初の利用時にはアクセシビリティから背面タップを有効化します。壁紙にしたい画像はBase64で文字列化してショートカットに組み込みます。