- プロジェクトマネージャ(大阪)
- Webエンジニア(大阪PHP)
- ★東京・大阪/CS/MG
- 他64件の職種
-
開発
- Webエンジニア(大阪PHP)
- エンジニアリングマネージャ
- ブリッジSE/オフショア開発
- PM(楽楽シリーズ)
- テックリード(大阪/PHP)
- フロントエンドエンジニア
- ブリッジSE(大阪)
- エンジニアオープンポジション
- Javaエンジニア(楽楽明細)
- Webエンジニア
- Webエンジニア
- フロントエンド(リーダー)
- モバイルエンジニア
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- 社内SE(大阪/インフラ)
- 社内SE(大阪/クラウド)
- インフラエンジニア
- 品質管理/技術支援チーム
- QAリーダー/マネージャー
- 戦略企画・データマネジメント
- システム企画
- AI/機械学習エンジニア
- データマネジメント・戦略企画
- 社内SE(データエンジニア)
- UIデザイナー(リーダー)
- UI/UXマネージャー
- UIデザイナー
-
ビジネス
- プロジェクトマネージャ(大阪)
- 導入支援/導入コンサルタント
- PdM(楽楽シリーズ)
- 開発マネージャー
- プロダクトセキュリティ
- PMMプロダクトマーケティング
- アシスタントマネージャー
- 経営企画
- データマネジメント・マーケ戦略
- 法務
- 経営企画/事業分析
- 内部監査(業務監査)
- 法人営業
- ITセールス
- 営業企画オープンポジション
- ITセールス(福岡)
- ITセールス(名古屋)
- ITセールス(大阪)
- 法人営業/カスタマーサクセス
- フィールドセールス
- セールスマネージャー
- ビジネスオープン
- ITセールス経験者
- 製品企画/法要件(楽楽明細)
- オンラインマーケティング
- 営業推進リーダー(楽楽精算)
- ブランド企画・ブランディング
- ブランド企画
- マーケティングリーダー
- マーケティング担当
- オフラインマーケティング
- 製品企画/プロダクトマーケ
- CSマーケティング
- 企画マーケティング
- その他
iPhoneだけでAPI実行!!「ショートカット」アプリを試してみた
はじめに
新卒2年目エンジニアのkasuke18です。
つい先日iOS12がリリースされました。リリースされた内容は数多くありますが、その中でも気になったのが「ショートカット」というアプリです。このアプリをうまく使えばiPhone単体でAPIの実行が可能になります。実際に試してみましたので、紹介します。
もくじ
「ショートカット」アプリについて
リリースノートShortcuts 2.0 release notesを見ると、「ショートカット」アプリはiOS12の以前に「Workflow」アプリとして公開されていたようです。
「ショートカット」アプリでは、ビジュアルプログラミング言語
のようにアクション
と呼ばれる構成要素を組み合わせて1つのショートカットを作成します。アクションにはiPhone端末の設定変更
や他アプリの操作・データの受け渡し
といったものが用意されているほか、変数・条件分岐・繰り返し(for, foreach)といった制御を行うものも用意されています。
作成したショートカット
内容
クリップボードに保存されている画像のリンクに対してOCRのAPIを実行し、画像内の文字をテキストに変換して出力する、ということをやってみました。今回使用したOCRのAPIはFree 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ユーザの方は試してみてはいかがでしょうか。
最後までご覧いただきありがとうございます。