iOS12は地味めなアップデートだという声も聞かれますが、個人的には「ショートカット」アプリを使って様々な処理を自動化、マクロ処理できるようになった点は非常に大きな可能性を感じます。
まだ全容は追い切れていませんが、とりあえず以下、Web APIでなんらかのテキストデータを取得して読み上げるところまで素組みしてみたのでまとめておきます。
なお「ショートカット」アプリは元々「Workflow」というサードパーティ製のアプリで、Appleが買収してWi-FiオンオフなどのOS操作が行えるようになったり、iOS12のSiriショートカットから呼びだせるようになったようです。IFTTTのローカル版といったところです。現状、AppStoreから別途インストールが必要です。
マニュアルも読まずに手探りで試したので、実際にはもっと短くまとめられるかも知れませんし、ブロック、チェーンなどの用語なども適当です。
Web APIで取得した内容を読み上げるまで
例えばビットコインの価格を返すAPIを想定してみます。テストの為に単に「700000」という数字を返すだけのHTMLを適当なサーバーに置いておきます。
<html>
<body>
700000
</body>
</html>
これにアクセスして後ろに「円です。」とくっつけて音声で読み上げる、というレシピはこんな感じになります。
初見でわかりにくいのは最初に「テキスト」でURLを定義してそれを「Webページの内容を取得」に渡してやるといったところでしょうか。ブロック(?)間が線で結ばれているところは情報が受け渡されていることを示しているようです。
Web APIから返ってきた「700000」という値を一旦resultという変数に格納し、ここで一旦線が途切れます。再び新たな「テキスト」ブロックからチェーンを始め、変数を使って前チェーンの情報を引き継ぎます。例えばここから更に別の情報源からデータをもってきて、2回目の「テキスト」で合成するなんてこともできそうです。最後に「テキストを読み上げる」ブロックに渡せば完了です。
これをひとまとまりのバッチ処理(ショートカット)として保存し、
- 「ビットコインの今の価格は?」のようにボイスコマンドを定義して、Siriから呼び出す
- 「ショートカット」アプリのウィジェット上にボタンを置く
- ホーム画面にアイコンを置く
などして呼び出すことができるようになります。夢が広がりますね。ブラウザ上でJavaScriptを実行するなんてブロックもあるのでブックマークレットレベルの簡単なスクレイピングとかもできるんじゃなかろうかと。
ただしSiriから呼び出した場合、実際の読み上げ内容は、
- ショートカットを実行します。
- ショートカットによると次の通りです。
- 70万円です。
- わかりました。
という感じになり、ちょっとスマートさに欠けます。特に「わかりました。」が意味不明です(笑)。Siriショートカットの規定動作なんでしょうけど、この辺りもう少し融通が利くといいんですけどね。