2017.05.16
機械学習で遊ぼう! APIサービスやTensorFlowを使ったサンプルレシピ集
第4回 もう議事録不要? 写真から手書き文字を認識するAndroidアプリを作ろう ~環境構築編~
連載第4/5回目では、Google Cloud Vision APIの光学的文字認識(OCR)機能をつかって、カメラで撮影した写真の中に含まれる文字を認識するAndroidアプリ「PhotoOCR」を作成します。まず第4回は、Androidアプリケーションの開発環境の準備と実機での動作確認を行いましょう。
1. はじめに
最初に、連載第4/5回での対象読者や使用環境、作成するアプリケーションについてまとめます。
第4/5回の対象読者
・IDEをつかったアプリケーション開発経験がある方
・Javaの文法が分かる方
・GitHubが利用できる方
第4/5回での環境
第4/5回では、以下の環境での開発を前提にして、説明します。
・開発用PC:Microsoft Surface Pro4(Windows10 Pro 64bit)
・モバイル端末:Motorola Moto X Play(Android 6.0.1)
第4/5回で作成するアプリケーションの全体像
スマートフォンのカメラで写真を撮り、その写真に含まれる文字の情報をテキストデータとして取得できるAndroidアプリケーションを作成します。たとえば、街や駅に掲示されている看板の情報や、手書きの書類などになにが書かれてあるかを文字データとして取得できるので、うまく業務システムに組み込めば、これまで人間が手作業で行っていたことがずいぶん楽になるかもしれません。たとえば、会議で使ったホワイトボードの内容を電子化すれば、ひょっとすると議事録も不要かも?!
2. Androidアプリケーション開発について
はじめに、Androidアプリケーションを開発するにあたり、知っておきたいことを説明します。
Androidとは
Android(アンドロイド)は、Googleによってスマートフォンやタブレットなどの携帯情報端末を主なターゲットとして開発されたOSです。このOS上で動くアプリケーションを「Androidアプリケーション」と呼びます。また、作成したAndroidアプリケーションは「Google Play」を使って世界中に配信できます。現在、Google Playでは、スマートフォンやタブレットで利用できる便利なツール、ゲーム、ヘルスケアや教育など、さまざまなアプリケーションが公開されています。
[Google Play]
https://play.google.com/store/apps
このGoogle Playには、自分が作成したアプリケーションを登録することができます。登録するには、Googleデベロッパーアカウントが必要です。
連載第4回では、はじめてAndroidアプリケーションを作成されるJava開発者にむけて、開発環境構築と画像認識APIのOCR機能を使った文字認識アプリを作成します。機械学習APIをうまく使えば、アイデア次第でさまざまなアプリケーションが簡単に作成できます。
面白いAndroidアプリケーションが開発できたら、どんどん公開して世界中のユーザーに使ってもらうと良いでしょう。ものづくりが好きなエンジニアにとっては、利用者につかってもらえるというのは、なによりも開発の励みになることでしょう。Googleデベロッパーアカウントの詳しい登録手順は、公式サイトにあります。
https://developer.android.com/distribute/googleplay/start.html?hl=ja
開発の流れ
主にAndroidアプリケーションを開発するときは、Googleが提供する統合開発環境「Android Studio」を使います。開発の流れは、以下のようになります。
なお、Apache CordovaやXamarinなどをつかうとクロスプラットフォーム(iOS/Androidなど)で動作するアプリケーションも開発できます。
3. 開発環境の構築
それでは、いよいよWindowsマシンでAndroidアプリを開発する環境を準備していきましょう。
3-1 Javaのインストール
Androidアプリケーションを開発するには、Java Development Kit(JDK)がインストールされている必要があります。次の手順で導入しましょう。
3-1-1 Java Development Kit(JDK)のインストール
以下のOracle公式サイトから、JDKをダウンロードします。[Accept License Agreement]のラジオボタンを選択し、環境に応じたインストーラーをダウンロードします。今回は、Windows10 Pro(64bit) 環境を使ったので「jdk-8u121-windows-x64.exe」をクリックします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
なお、ダウンロードするファイル名はバージョンによって異なります。
ダウンロードしたexeファイルをダブルクリックして、インストールします。画面の表示に従い、インストールを進めますが、途中インストールする場所を指定する箇所がありますので、このパスをひかえておきます。
3-1-2 環境変数JAVA_HOMEの設定
環境変数とは、システムの属性を記録する変数です。Androidアプリを開発するために必要な値を設定します。
まず、[Windowsメニュー]を右クリックし、[システム]―[システムの詳細設定]を開きます。ここで、ダイアログが表示されるので、[システムのプロパティ]ダイアログで[環境変数]ボタンをクリックします。
新しく環境変数をする画面で、以下の値を設定します。
・変数名:JAVA_HOME
・変数値:<図5で控えたJDKのパス>
今回は、JDKを「C:\Program Files\Java\jdk1.8.0_121」にインストールしたので、環境変数を次のように指定します。
これで、Javaの設定はすべて完了です。
3-2 Android Studioのインストール
Androidアプリケーションを開発するには、Googleが提供する「Android Studio」という統合開発環境を使います。Android Studioは無償で利用でき、Windowsだけでなく、Mac OSやLinuxでも開発環境を作ることができます。執筆時の最新版は2.2.3です。Gradleベースのビルドのサポートがされています。次の手順で導入しましょう。
3-2-1 Android Studioのダウンロード
まず、以下のサイトからインストーラーをダウンロードします。
https://developer.android.com/studio/index.html
こちらも、バージョンによってファイル名が異なりますが、今回の環境では、「android-studio-bundle-162.3764568-windows.exe」をダウンロードします。
3-2-2 Android Studioのインストール
ダウンロードした exe ファイルを実行します。セットアップ ウィザードに従い、Android Studio と必要な SDK ツールをインストールします。画面の表示に従い、インストールを進めます。途中インストールするコンポーネントを選択するダイアログが表示されますので、すべてにチェックを入れインストールを進めてください。
これでAndroidアプリケーションの開発環境が整いました。
4. HelloWorldを試してみよう
Androidアプリケーションは、「プロジェクト」という単位で開発をします。ここでは、試しに画面にHelloWorldが表示されるサンプルアプリを作成して、開発環境が正しく出来ているかを確認しましょう。
4-1 新しいプロジェクトの作成
インストールしたAndroid Studioを起動します。はじめに起動するときは、次のように 以前の設定を使うかどうかのダイアログが表示されます。ここでは以前の設定を利用しないため、次のラジオボタンを選択し[OK]ボタンをクリックします。
セットアップウィザードが表示されるので、[Next]ボタンをクリックします。
インストールタイプを選択する画面が表示されるので、[Standard]を選び、[Next]ボタンをクリックします。
確認画面が表示されますので、[Finish]ボタンをクリックします。
セットアップが完了すると、次の画面が表示されます。ここで、新しいプロジェクトを作成するため、[Start a new Android Studio project]をクリックします。
次に、アプリケーションの名前でドメインを指定するダイアログが表示されます。ここでは、アプリケーション名(Application Name)を「HelloWorld」とします。ここで、ドメイン名(Company Domain)を指定するとパッケージ名となります。設定したら[Next]をクリックします。
次に、どの端末でアプリケーションを動かすかを決めます。今回はスマートフォンで確認するため、[Phone and Tablet]を選択します。ここで、Androidのバージョンに応じてAPIを選択します。筆者の環境では、Android6.0.1の端末を利用しますので「API:23」を選び、[Next]ボタンをクリックします。
必要なコンポーネントがセットアップされるので、[Next]ボタンをクリックします。
次に、アプリケーションの元になるアクティビティを選択します。アクティビティとは、画面を提供するアプリケーションコンポーネントのことです。ここでは空の画面である[Empty Activity]を選び、[Next]ボタンをクリックします。
次に、アクティビティの名前を聞かれますので、デフォルトのままで[Finish]ボタンをクリックします。これで、アプリケーションの作成が出来ました。
4-2 Android Emulatorで確認しよう
本稿では基本的にAndroid端末の実機でアプリを確認していきますが、Android Emulatorで簡易的にアプリを確認することもできます。ここではAndroid Emulatorの使い方を紹介します。まず、Android Studioのメニューの[Run]ボタンをクリックします。この図のようにファイルが開かない場合は、画面の一番左で「1:project」をクリックし、「java → 指定したドメイン名(後ろにカッコ書きがないもの)→MainActivity」とクリックしてファイルを開きます。
ここで、アプリケーションを実行するダイアログが表示されますので、[Create New Virtual Device]ボタンをクリックします。
※ Android Emulatorは、64bitのOSで、かつ仮想化ハードウェア拡張が有効になっていないと動かないため、あらかじめお使いの開発用PCのスペックを公式サイトで確認しておきましょう。
https://developer.android.com/studio/index.html?hl=ja
次の画面では、作成するEmulatorの画面サイズを選択します。
次の画面ではシステムイメージを選択します。ここでは、APIレベル23のアプリケーションを作成しますので、[Download]リンクをクリックして、必要なシステムイメージをダウンロードします。
次に、Android Emulatorの名前や向きなどの詳細情報を設定し、[Finish]ボタンをクリックします。
これでAndroid Emulatorの設定がおわりましたので、[OK]ボタンをクリックします。
ここで、追加のコンポーネントをインストールするダイアログが表示されることがありますが、ダイアログの指示に従ってインストールを進めてください。マシンスペックにもよりますが、Android Emulatorの起動には時間がかかります。
これで、「HelloWorld」と表示されるアプリケーションが実行できました。ただし、このAndroid Emulatorでは、Wi-i/Bluetooth/NFC/SDカードの挿入・取り出し/ヘッドフォン/USBなどの機能は利用できません。これらの機能を使ったアプリケーションを作成するときは、Android端末を用意する必要があります。
4-3 実機で確認しよう
エミュレーションは、デバイスのすべての機能を使うことが難しいため、実際のAndroid端末(実機)を使ってアプリケーションを確認する手順を説明します。なお、以降の連載はすべて実機を使った確認を行っていきます。
4-3-1 Android端末の設定
まず、Android端末側で設定を行います。[設定]―[電話情報(または端末情報)]―[ビルド番号]を7回タップすると、[設定] メニューに新たに[開発者向けオプション]が表示されます。なお、すでに開発者向けオプションが有効になっているときは、次のようなトーストが表示されます。
ここで、[開発者向けオプション]を選び、次の2つのオプションをonにします。
![]() |
![]() |
これでAndroid端末の設定がすべて終わりました。
4-3-2 開発用PCの設定
次は、開発用PCの設定を行います。Android Studioを起動しメニューの、[tools]―[Android]―[SDK Manager]を起動します。ここで、[SDK Tools]タブを選択し、その中の「Google USB Driver」にチェックを入れインストールします。
インストールが終わったらAndroid端末と開発用PCを、USBケーブルを使って接続します。
なお、Android端末にも[USBデバッグを許可しますか]というダイアログが表示されるので、[OK]をクリックします。なお、接続に使うUSBケーブルには、充電専用のものと充電/データ転送いずれも可能なものの、2種類あります。もし、端末が認識しない場合は、USBケーブルの仕様を確認してください。
※ お使いの端末によっては、専用のドライバーソフトウエアのインストールが必要な機種もあります。詳細については、端末メーカーのホームページなどで確認してください。
4-3-3 サンプルアプリケーションの実行
これで準備が整いましたので、Android端末上でサンプルアプリケーションを動かしてみます。Android Studioのメニューの[Run]ボタンをクリックします。
アプリケーションを実行する端末を選択します。今回は、先ほど作成したAndroid Emulatorではなく、実機(筆者の環境の場合、Motorola XT1562)を選択し、[OK]ボタンをクリックします。
Android端末でアプリケーションが実行されたのが確認できます。
なお、Androidアプリケーションの環境構築や開発の詳細については、公式サイトに詳細なドキュメントがありますので、ぜひ参考にしてください。
https://developer.android.com/studio/install.html
5. おわりに
今回は、Androidアプリケーションを開発するための環境構築を行いました。次回はいよいよAndroidのカメラとGoogle Cloud Platformの画像認識APIであるVision APIを使ったアプリケーションを開発します。モバイル端末と機械学習を組み合わせることで、面白いアプリケーションが簡単に作成できます。