目次


Android Studio 内で Watson Android SDK を使用してアプリケーションを構築する

Watson Android SDK の基礎となっているいくつかの Watson API について学び、Android Studio でサンプル・アプリケーションを構築する

Comments

IBM Watson は米国のクイズ番組 Jeopardy で対戦したことでよく知られているかもしれませんが、このテクノロジーが持つ力は、単なる質疑応答という枠を遥かに超えています。Watson はまったく新しいコンピューティングの形であり、私たちの周りに溢れているデータに基づいて、これまで発見されたことのなかった洞察を明かにすることを約束するものです。従来のコンピューター・モデルでは厳格な数学的原理に依存し、ルールとロジックに基づいて作成されたソフトウェアを使用しますが、それとは異なり、Watson が依存するのは IBM で「コグニティブ・コンピューティング」と呼んでいるテクノロジーです。このリンク先のカタログを見るとわかるように、IBM Watson には Assistant、Discovery、Personality Insights をはじめとする多数のサービスがあります。

開発者が Watson をさまざまなプログラミング言語で使用できるよう、Watson チームは複数のソフトウェア開発キット (SDK) も提供しています。利用可能な SDK の完全なリストについては、このリンク先の watson-developer-cloud GitHub 組織を参照してください。

学習の目的

このガイドを完了すると、以下の方法を習得できます。

  • Watson Android SDK をダウンロードしてインストールする
  • Watson Android SDK で Android Studio を使用する
  • Android Studio 内で Watson サービス資格情報および API を使用して Watson サービスを操作する
  • Watson を利用するサンプル Android アプリケーションを構築して実行する

前提条件

この入門ガイドに従うには、次のものが必要です。

  • IBM Cloud アカウント: まだアカウントをお持ちでない場合は登録してください。
  • ローカル・マシン上にインストールされた Android Studio
  • IBM Cloud 上でプロビジョニングされた Language Translator サービス
  • IBM Cloud 上でプロビジョニングされた Speech to Text サービス
  • IBM Cloud 上でプロビジョニングされた Text to Speech サービス

所要時間

この入門ガイドを完了するには、約 1 時間かかります。前提条件を揃えるための時間が 30 分、手順に従うための時間が 30 分です。

手順

: この入門ガイドは、Android Studio 3.0.1、Watson Android SDK v0.4.3、macOS High Sierra を使用してテストされています。

Watson Android SDK をダウンロードする

GitHub 上の Watson Android SDK にアクセスし、「Clone or Download (複製またはダウンロード)」ボタンをクリックして、このリポジトリーを ZIP ファイルとしてダウンロードします。

必要に応じて、Watson チームが保守している watson-developer-cloud GitHub 組織を参照してください。ここで、その他すべての利用可能な SDK を確認できます。

Android Studio 内で新しい Watson Android SDK プロジェクトを作成する

ここでは出発点として、Watson Android SDK 内の example フォルダーを使用します。

  • ワークスペース用のフォルダーを新しく作成し、そこに、新しくダウンロードした ZIP ファイル (おそらく android-sdk.zip という名前になっています) を解凍します。
  • Android Studio を起動します。
  • メニュー・バーで「File (ファイル)」 > 「Open (開く)」の順にクリックし、解凍したファイルの example フォルダーの場所を指定します。
  • これで、Android Studio が Gradle を使用してプロジェクトをビルドします。

: 「Install missing platform(s) and sync project (欠落しているプラットフォームをインストールしてプロジェクトを同期してください)」または「Install Build-Tools 26.0.1 and sync project (Build-Tools 26.0.1 をインストールしてプロジェクトを同期してください)」というエラーが表示されたら、画面に表示されているハイパーリンクをクリックして、欠落しているプラットフォームまたはツールをインストールしてください。インストールが完了すると、ビルドが再開されて正常に完了するはずです。

サンプル・アプリケーションを探索する

SDK 内に提供されているサンプル・アプリケーションの内容を確認しましょう。具体的には、「example」 > 「java」 > 「com.ibm.watson.developer_cloud.android.myapplication」 > 「MainActivity」にある MainActivity.java ファイルを開きます。

このファイル内で、サンプル・アプリケーション用にすでにインポートされている多数のライブラリーを確認できます。他の利用可能なライブラリーを使用するには、以下に説明する方法を使用して目的のライブラリーをインポートできます。

ファイルの先頭にある「import」セクションを展開すると (「import ...」をクリックします)、MainActivity.java 内で使用されているさまざまなインポートを確認できます。watson_developer_cloud パッケージ (Watson Android SDK) で使用されているインポートに注目してください。利用できる他の Watson サービスの完全なリストを速やかに確認するには、「import com.ibm.watson.developer_cloud」と入力すると、自動補完機能によって利用可能なサービスが表示されます。

次は、「example」 > 「res」 > 「layout」 > 「activity_main.xml」にある activity_main.xml の内容を確認しましょう。この XML ファイルには、MainActivity.java のレイアウトが格納されています。activity_main.xml をダブルクリックすると、Android Studio により、このアプリケーション用のアクティビティーのサンプル・デザインが自動的に生成されます。サンプル・デザインは編集することもできます。それには、タブの左下隅にある「Text (テキスト)」をクリックして XML ファイルを開きます。

最後にもう 1 つ、「example」 > 「res」 > 「values」 > 「credentials.xml」にある credentials.xml の内容を確認しましょう。この XML ファイルには、サンプル・アプリケーションで使用する各種 Watson サービスの資格情報を指定するテンプレートが格納されています。このアプリケーションの場合、使用する Watson サービスは Watson Language Translator、Speech to Text、Text to Speech の 3 つです。XML ファイル内のそれぞれの値には、MainActivity.java から参照できるリソース名が含まれています。

サービス資格情報を credentials.xml に追加する

次は、各 Watson サービスの資格情報をコピーして credentials.xml に貼り付けます。特定の Watson サービスを作成する手順については、「前提条件」のセクションを参照してください。

サービス資格情報の値を確認するには、IBM Cloud にログインして、ダッシュボード内で該当するサービスを見つけます。そのサービスを選択してから、「Service Credentials (サービス資格情報)」タブを表示します。以下のスクリーンショットには、Language Translator サービスの「Service Credentials (サービス資格情報)」タブが示されています。

各サービスの urlusernamepassword をコピーして、Android Studio 内の credentials.xml に貼り付けます (以下のスクリーンショットを参照)。他のすべてのサービスについても、同じ手順を繰り返します。

モバイル・アプリケーションをビルドして実行する

アプリケーションをビルドする

3 つすべての Watson サービス (Language Translator、Speech to Text、Text to Speech) の資格情報を指定した後は、プロジェクトをビルドして実行する作業に移ります。アプリケーションを実行するには、接続されたデバイスを使用することも、APK をビルドしてから、それを携帯電話に転送して手作業でインストールすることもできます。両方の方法を見ていきましょう。

接続されたデバイスにアプリケーションを転送する

接続されたデバイス上で Android プロジェクトを実行すると、プロジェクトを効率的にデバッグできます。デバッグを可能にするには、モバイル・デバイスと Android Studio の両方に、関連するドライバーをインストールする必要があります。また、ユーザーがモバイル・デバイス上で開発者モードを有効にする必要もあります。

最初に必要な作業として、Android Studio で Google USB Driver をダウンロードしてインストールします。macOS または Linux 上で開発している場合は、この USB ドライバーをインストールするのではなく、このリンク先の「Using Hardware Devices」で説明している手順に従ってください。

場合によっては、他のドライバーも必要になることがあります。このガイド (Android バージョン 7.0 で稼働する Samsung Galaxy S8+ 上でテストしました) を作成する際は、Samsung 用の USB ドライバーを Windows にインストールしなければなりませんでした。

接続されたデバッグ用デバイスとしてモバイル・デバイスを使用するために必要となる最後のなるステップは、USB デバッグを有効にすることです。それには、「Developer Mode (開発者モード)」を有効にする必要があります。デバイスの「Settings (設定)」を表示して、「About Phone (バージョン情報)」「Software Information (ソフトウェア情報)」の順に選択し、「Build number (ビルド番号)」を 7 回タップしてください。「Settings (設定)」に戻ると「Developer Options (開発者オプション)」という新しいメニューが追加されているはずです。このメニューで「USB Debugging (USB デバッグ)」を有効にしてから、手順を続けます。

これで、接続されたデバイス上でプロジェクトを実行してデバッグできるようになりました。Android Studio のメニュー・バーで「Play (再生)」をクリックするだけで、プロジェクトを実行してデバッグできます (以下のスクリーンショットを参照)。

以下に示す「Select Deployment Target (デプロイ・ターゲットの選択)」ダイアログに、接続されたデバイスが示されるはずです。

「OK」をクリックすると、プロジェクトのビルドが開始され、接続されたデバイス上で実行されます。

APK を生成してインストールする

アプリケーションを APK としてインストールするには、まず、APK を生成する必要があります。それには、「Build (ビルド)」画面を表示して、「Build APK (APK のビルド)」を選択します。これにより、Android Studio がプロジェクトのビルドを開始し、APK を生成します。このプロセスが完了したら、以下に示す「Event Log (イベント・ログ)」セクション内の「Show in Explorer (エクスプローラーで表示)」をクリックして、APK の場所に進むことができます。

この APK ファイルを任意の方法(e-メール、SD カード、Google ドライブなど) でモバイル・デバイスに転送します。モバイル上のファイル・ナビゲーターを開き、転送した APK の場所にナビゲートします。APK ファイルを開きます。Android から未知のソースからのインストールを許可するかどうかを尋ねられたら、許可することを確認します。これで、モバイル・デバイス上でアプリケーションのインストールが開始されます。

アプリケーションを実行する

以下のスクリーンショットでは、Watson Language Translator サービスを利用してサンプル・テキストが翻訳されています。ここに示されているように、テキストを翻訳するターゲット言語を選択できます。

Watson Speech to Text サービスを利用して、マイクで音声入力を録音することもできます。これを試すには、テキスト・ボックスの横にあるマイクのボタンをクリックして何か喋った後、ボタンを再度クリックして録音を停止します。再生ボタンをクリックすると、翻訳されたテキスが再生されます。これには Watson Text to Speech サービスが利用されています。

バックエンドと API 呼び出しについて理解する

このセクションでは、入力が翻訳される仕組みと、テキストを選択した言語に翻訳するために、API がどのように呼び出されるかを見ていきます。ここでは例として、LanguageTranslator API の呼び出しを取り上げます。

まず、次のコマンドを使用して Language Translator クラスをインポートします。

import com.ibm.watson.developer_cloud.language_translator.v2.LanguageTranslator;

このクラスのインスタンスを作成しましょう。それには、次のようにします。

private LanguageTranslator translationService;

このインスタンスを初期化して、資格情報を反映させる必要があります。usernamepasswordendpoint/url を使用していることに注意してください。

private LanguageTranslator initLanguageTranslatorService() {
LanguageTranslator service = new LanguageTranslator();
String username = getString(R.string.language_translator_username);
String password = getString(R.string.language_translator_password);
service.setUsernameAndPassword(username, password);
service.setEndPoint(getString(R.string.language_translator_url));
return service;
}

次は、「Translate (翻訳)」ボタンのバックエンドで行われる処理を確認します。ユーザーが「Translate (翻訳)」ボタンをクリックすると、以下の関数が呼び出されます。

translate.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
    new TranslationTask().execute(input.getText().toString());
    }
});

上記のTranslationTask() 関数はクリック・イベントによって呼び出され、以下のコードを使用して AsyncTask を実装します。

private class TranslationTask extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {
    showTranslation(translationService.translate(params[0], Language.ENGLISH, selectedTargetLanguage).execute()
        .getFirstTranslation());
    return "Did translate";
    }
}

このバックグラウンド非同期タスクを詳しく調べると、関数内で API が呼び出されることがわかります。この API により、以下の翻訳テキストが設定されます。

translationService.translate(params[0], Language.ENGLISH, selectedTargetLanguage).execute()
.getFirstTranslation()

この Language Translator サービスの呼び出しで渡すのは、1) 入力テキスト、2) 入力の言語 (デフォルトでは英語に設定されます)、3) 選択されているターゲット言語です。

この Translator API 呼び出しにより、文字列形式の翻訳結果が返されます。この結果を、以下に示す showTranslation(final string translation) 関数に渡します。

private void showTranslation(final String translation) {
runOnUiThread(new Runnable() {
    @Override
    public void run() {
    translatedText.setText(translation);
    }
});
}

showTranslation 関数は、Translation API 呼び出しとは別のスレッド上で実行されることから、runOnUiThread を追加する必要があります。これにより、この関数がキューに入れられます。この関数が Translation API 呼び出しの後に実行されることで、API 呼び出しから返されたテキスト翻訳が設定されます。

他の API 呼び出しも、同じように機能します。「参考文献」に記載されているリンクを使用して、Watson サービスのドキュメントとそれぞれの API リファレンスを参照してください。

まとめ

このガイドでは、Watson Android SDK を導入する方法、Android Studio と Watson サービスを利用してサンプル・アプリケーションを構築する方法、そしてコード・ベースの詳細を説明しました。他の SDK や Watson API リファレンスについては、「参考文献」に記載されているリンク先のページを参照してください。このガイドを最後まで読んでいただいて、ありがとうございます!


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cognitive computing, Cloud computing
ArticleID=1065669
ArticleTitle=Android Studio 内で Watson Android SDK を使用してアプリケーションを構築する
publish-date=04252019