iOSでGoogle Cloud Vision APIのサンプルをランするまでの手順(5分以内に)

#はじめに#
Google Cloud Vision APIのiOSアプリのサンプルをランするまでの手順です。
5分程度でランするところまで進めると思います。
被写体が何であるかを座標つきで返してくれたり、顔が含まれている場合にその情報を返してくれるサンプルになっています。APIの種類を変更することで、OCRの結果を取得することもできます。


#流れ#
1.Vision APIサンプルをクローン
2.Google Could Platformの登録
3.Vision APIのキーを作成
4.APIキーをアプリにセット
5.必要なライブラリの導入
6.ラン

#サンプルのクローン#
iOSアプリのサンプリが公式に用意されています。
Google Cloud Vision API examples
https://github.com/GoogleCloudPlatform/cloud-vision

このリポジトリをクローンします。iOSのサンプルはiOSフォルダの中に入っています。

#GCPの登録#
Google Could Platform
https://console.cloud.google.com/

Google Could Platformの登録が未了の場合、無料試用のキャンペーンがあります。

<img width="507" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/a1ac8cf7-fd0a-5fb7-bba6-eefa77c0a978.png">

しかるべき選択をして次へ進みます。
<img width="594" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/ef7eee2b-8ccd-a597-6a8c-74147065db14.png">

ここで、アカウント情報の登録です。
<img width="285" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/94b72ee2-c77c-17a0-8d6a-487249929a0f.png">

なお、クレジットカードの情報については、お支払い→お支払い設定で確認・編集できます。

#Vision APIキーの作成#
新しいプロジェクトを作成します。プロジェクト名を記入して、作成ボタンを押します。ここでは、仮に"My First Project"と命名しました。

APIを利用するために必要となるキーを取得します。
たくさんのAPIが用意されているので、"Vision"と入力して検索して絞り込みます。

<img width="1157" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/027b0027-f73f-3e9d-45de-5bd98802eec8.png">

Vision APIを選びます。
<img width="631" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/c28c2f04-599b-6074-dfa7-e8879c47fe44.png">

有効化します。

<img width="1202" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/d45887b4-d43f-48e0-4ad8-1f25e0675dea.png">

認証情報を作成します。

<img width="1047" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/3f38aa14-5da8-21fe-6439-5b7085593ebb.png">

新しいキーの作成では、iOSキーを選びます。
<img width="498" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/93e4274d-db9b-5369-4995-76640f58c74c.png">

さきほどクローンしたサンプルのXcodeプロジェクトを開きます。
Bundle Identifierを確認します。

<img width="477" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/332003a2-ec1d-223b-d3af-2e61847646f7.png">

bundle IDが一致していることを確認して、名前をつけて、作成します。
<img width="475" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/283249bd-1a9a-eaca-e51f-8de9b92d76c2.png">

APIキーが表示されますので、これを後で使います。
<img width="493" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/939390ba-b48d-8206-78dc-9c23529db1bd.png">

なお、作成すると、このようにリミットを確認することができます。
<img width="825" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/8f39f8a5-bcf2-97f8-53d7-f2ee37e336ec.png">

一定の利用量までは無料で使えます。また、無料試用キャンペーンでデポジットが与えられている場合はその限度で実質、無料利用できるようです。

#APIキーをアプリにセット#
ImagePickerViewController.swiftのAPI_KEYにさきほどのAPIキーを文字列としてセットします。
(※直接キーを書くのは簡単ですが、そのソースをGitHubなどで公開するとAPIキーを悪用されるおそれがあります。ご注意ください。)
<img width="509" alt="screenshot.png" src="https://qiita-image-store.s3.amazonaws.com/0/84185/410a4b4e-e5a6-bc94-33f9-aa7678c1b0fe.png">

赤いエラーが出ているのはライブラリが導入できていないからです。

#必要なライブラリの導入#
このサンプルは、SwiftyJSONという外部ライブラリを利用しています。Podfileは用意されているので、Cocoapodsでインストールします。

#ラン#
あとは普通にランするだけです。
Vision APIでスキャンしたい画像をアルバムに用意しておいて、Choose...から画像を選択してセットする方式です。
(サンプルは非常に簡素なUIで、最初はどう使うのか一瞬、困惑しました。)

<img width="320" alt="IMG_3451.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/84185/8a7320c5-949e-f2e7-fb15-4824e10f0814.png">

ほんの一瞬で認識が終わり、被写体が何なのか顔がどうなのかの情報をデバイス上に表示してくれます。

また、より詳しいJSON形式のレスポンスがXcodeコンソールに表示されます。

以上のようにして、iOS上でCould Vision APIのサンプルを実行できます。

#発展(OCRの精度をちょっと確認する)#
createRequest()のjsonRequestのfeaturesのtypeを"TEXT_DETECTION"にすると、OCRの結果を取得してログに表示させることができます。
UIのほうにしかるべき表示をさせるにはさらにコードをいじる必要があるのですが、OCRの精度がどの程度であるかを調べるためであれば、上の修正をしてログを見るだけで済みます。

#参考#
Could Vision API
https://cloud.google.com/vision/

Google Cloud Vision API を使う準備をする
http://qiita.com/yukotan/items/09098c5b6f18c2dd3c35
WebアプリとしてAPIを利用したい場合の手順が詳しく説明されています。