1
/
5

iPhoneだけでAPI実行!!「ショートカット」アプリを試してみた

はじめに

新卒2年目エンジニアのkasuke18です。
つい先日iOS12がリリースされました。リリースされた内容は数多くありますが、その中でも気になったのが「ショートカット」というアプリです。このアプリをうまく使えばiPhone単体でAPIの実行が可能になります。実際に試してみましたので、紹介します。

もくじ

「ショートカット」アプリについて

リリースノートShortcuts 2.0 release notesを見ると、「ショートカット」アプリはiOS12の以前に「Workflow」アプリとして公開されていたようです。
「ショートカット」アプリでは、ビジュアルプログラミング言語
のようにアクション
と呼ばれる構成要素を組み合わせて1つのショートカットを作成します。アクションにはiPhone端末の設定変更
他アプリの操作・データの受け渡し
といったものが用意されているほか、変数・条件分岐・繰り返し(for, foreach)といった制御を行うものも用意されています。

作成したショートカット

内容

クリップボードに保存されている画像のリンクに対してOCRAPIを実行し、画像内の文字をテキストに変換して出力する、ということをやってみました。今回使用したOCRAPIFree OCR API | OCR.spaceです。POSTパラメータやレスポンスのJSON構成はリンク先でご確認ください。

作成例

まずはPOSTリクエストを送信する部分です。

今回POSTパラメータとして必要な情報はAPIキー画像内の文字の言語base64エンコードされた画像の3つです。このうち画像内の文字の言語

は日本語で固定としているので、残り2つを取得する処理はサブルーチンとして別ショートカットに切り出し、それらを呼び出す方式をとっています。ではそれぞれのショートカットを見ていきます。

APIキーの取得処理です。APIキーは環境変数に持っておきたいのですが、さすがにそこまではできないようなので、今回はリマインダーアプリに保持・読み出すようにしています。


図2. APIキーの取得

内容はAPIキーを保持していリマインダー

を検索し、その中から今回使用する

       OCR.space

というタイトルの項目からAPIキーを取得しています。
ショートカットの最後では、メインのショートカットに値を渡すため、変数から値を取り出して終了しています。

次にbase64エンコードされた画像
の取得処理です。このパラメータに設定する値はdata:image/[フォーマット],[base64エンコードされた画像]
ですので、実際は拡張子
画像をbase64エンコードしたテキスト
の2つが必要になります。
まずは拡張子の取得処理です。

大きな流れとしては、まずクリップボードの内容がURL形式どうか確認し、URL形式ならその内容を取得します。さらにその内容がイメージであれば拡張子を、そうでなければnone

というテキストを返却する、という処理を行っています。このnone

というテキストは、ショートカットを実行する側の処理none

を受け取り、エラーとして処理を終了するために利用します。
次が画像をbase64エンコードしたテキスト

の取得処理です。

これは拡張子

の時とほぼ同じ処理の流れをしていて、拡張子

を取得していたところを画像をbase64エンコードしたテキスト

を取得するように変更しただけです。

最後にメインのショートカットで他のショートカットを実行する&その結果を受け取る
処理と、レスポンスJSONをパースする
処理を行います。 まずは他のショートカットを実行&その結果受け取る
処理です。

処理の流れは画像の通りです。ショートカットを実行し、その結果が拡張子ではないときは中断されたことを通知しショートカットを終了します。
続いてレスポンスJSONをパースする

処理です。

                図5. レスポンスJSONのパース

「ショートカット」アプリ内ではJSON

辞書

という単語で扱われています。アクションとしては辞書の値を取得

というもので、これは組み合わせればネストされたJSONのパースも可能です。また今回は結果出力のため、最後にメモに書きだすようにしています。

実行結果

以上のサンプルを、前回私が書いた記事の画像に対して実行した結果が以下となります。

 図6. OCRで認識する画像

  図7. 実行結果

おわりに

今まではちょっとAPIを試してみたいだけでもPCを用意する必要がありましたが、この「ショートカット」アプリを使用すればiPhone単体で簡単にできます。また今回は紹介していませんが、テキストに対して正規表現を用いたマッチングもできるので、スクレイピング
も可能です。iPhoneユーザの方は試してみてはいかがでしょうか。
最後までご覧いただきありがとうございます。

株式会社ラクスでは一緒に働く仲間を募集しています
今週のランキング
株式会社ラクスからお誘い
この話題に共感したら、メンバーと話してみませんか?