はじめに
第1回目の本稿は、「docomo Developer support」の概要と、手軽に機能が試せるAPIコンソールの使い方を解説しましょう(本稿は、2014年11月19日時点の最新情報に基づいております)。
対象読者
JavaとEclipseを用いたAndroidアプリの開発で、基本的な知識がある方を対象とします。
「docomo Developer support」とは
「docomo Developer support」は、NTTドコモが開発者向けに情報を提供しているサイトで、2013年11月11日に開設されています。このサイトでは、ハッカソンなどのイベント情報も提供されていますが、メインとなるのは、さまざまな開発に活用できるAPIやツールの情報です。
APIとは「Application Programming Interface」の略で、あるプログラムの機能を外部のアプリケーションから呼び出して利用するためのインターフェース、という意味です。つまり、このサイトで提供されているAPIを利用すれば、どのキャリアのユーザーでも(注1)、NTTドコモのサービスのような機能を持つアプリが作成できる、ということです。
また単にAPIの情報だけでなく、SDK(Software Development Kit)などの開発支援ツールも提供されていますので、APIを使ったアプリの開発がすぐに行えるようになっています。
さらに「docomo Developer support」では、FAQページや技術的な問い合わせの窓口もありますので、万全なサポートのもとで開発することができるでしょう。
フォトコレクション、ドコモ電話帳、データ保管BOXの各APIについては、ドコモとのSPモード契約をもつユーザが利用対象となります。
どんなAPIがあるか
2014年11月時点で提供されているAPIは、次の表のとおりです。
| API | 概要 |
|---|---|
| 画像認識 | 画像内の物体を認識し、その名称を返す。 |
| 発話理解 | テキストの文脈を解析し、その意図に沿った機能名を返す。 |
| 音声合成 | テキスト入力した内容を音声化する。 |
| 音声認識 | 話した音声を認識し、内容をテキスト化する。 |
| 文字認識 | 画像に書かれている単語とその位置を認識する。 |
| 雑談対話 | テキスト入力に対して自然な会話となる雑談を返す。 |
| トレンド記事抽出 | インターネット上の記事を検索し、注目度の高い記事一覧を返す。 |
| 知識Q&A | 自然な文章の質問文に対して、回答をテキストで返す。 |
| 環境センサー | 各都道府県の気温、降水量、紫外線量を返す。 |
| フォトコレクション | 写真や動画データをクラウドで管理できる。 |
| ドコモ電話帳 | クラウドのドコモ電話帳データを操作できる。 |
| データ保管BOX | クラウドのデータ保管BOXを管理できる。 |
個々のAPIの詳細については、「docomo Developer support」サイトで解説されていますので、そちらを参照してみてください。
この連載では、これらのAPIを利用してアプリを作っていきます。APIの具体的な内容や使い方については、その際に説明することにしましょう。
APIの利用方法
APIを利用するにあたっては、少し手続きが必要です。遵守しないといけない事項もありますので、まずは「API共通リファレンス・ガイドライン」に目を通しておきましょう。
実際の開発および商用利用のためには、最初に「APIキー」というものを取得する必要があります。APIキーを取得するには、次の手順に従います。
- 「docomo Developer support」で、開発者アカウントを登録する。
- 登録したアカウントで「docomo Developer support」へログインする。
- アプリケーションの登録と、希望するAPIの申請を行う。
- 開発用APIキーが即時発行される。
なお、APIのなかには、商用利用する場合、開発したアプリの審査が必要なものやAPI利用にあたって本人確認の必要なものがあります。
開発者アカウントの登録と、マイページログイン
では開発者アカウントを登録してみましょう。
トップページの「新規登録」ボタンをクリックすると、登録ページに遷移します。もしFacebookのIDがあれば、かんたんです。ここで「Facebookで新規登録」ボタンをクリックし、認証許可するだけです。
Facebookを利用せずに新規アカウントを登録するには、初めにメールアドレスの登録を行います。登録すると、開発者仮登録完了のメールが届きますので、本文に書かれたURLにアクセスしましょう。次のようなページが表示されたら、パスワードを登録します。
パスワードの登録が完了するとログイン可能になります。ログインすると、マイページが表示されます。
アプリケーションの登録と、希望するAPIの申請
次に、マイページから、アプリケーションの登録と希望するAPIの申請を行います。実際にアプリでAPI利用するためには、このページで登録する必要があります。ただ、事前にちょっとAPIの機能を試してみたい場合には、いちいち登録するのは、少しめんどうです。そのような時には、APIコンソールを利用します。
アプリケーションの登録は、また次回説明しますので、今回は、APIコンソールで遊んでみましょう。
APIコンソール
APIコンソールとは、APIを簡単に試すことができるページです。アプリケーションの登録が不要で、ログインするだけで使うことができます。
ここでは、Web API形式に対応した「画像認識」「発話理解」「音声合成」「文字認識」「雑談対話」「トレンド記事抽出」「抽出知識Q&A」「環境センサー」のAPIが利用できます。
発話理解
では、実際にNTTドコモのサービスと同等の機能が体感できるAPI、「発話理解」と「音声合成」を試してみましょう。
左のメニューから発話理解APIを選択すると、次のような画面になります。
発話理解APIでは、テキストの文脈を解析して、その意図に沿った機能名を返します。
APIコンソールの初期画面で、すでにAPIキーと、発話理解APIの引数となるサンプルのテキストがセットされています。
HTTPリクエストボディというタブをクリックすると、どのようなリクエストを行うかが表示されます。
ここでは表示だけでなく、直接編集することもできます。デフォルトの「山田さんに電話して」という文字列を変更してみましょう。
「大阪から東京に行きたい」と変更して、実行ボタンをクリックします。すると、NTTドコモのサーバにリクエストが送られ、しばらくするとHTTPレスポンスが返ってきます。
ページには実行結果として、HTTPヘッダとボディが表示されます。HTTPボディには、次のようなJSON文字列が格納されています。
{
"projectKey": "OSU",
"appInfo": {
"appName": "hoge_app",
"appKey": "hoge_app01"
},
"clientVer": "1.0.0",
"dialogMode": "off",
"language": "ja",
"userId": "12 123456 123456 0",
"userUtterance": {
"utteranceText": "大阪から東京に行きたい",
"utteranceRevised": "大阪から東京に行きたい",
"utteranceWord": [
"大阪",
"から",
"東京",
"に",
"行き",
"たい"
]
},
"dialogStatus": {
"command": {
"commandId": "BT00101",
"commandName": "乗換案内"
},
"slotStatus": [
{
"slotName": "stationTo",
"slotValue": "東京",
"valueType": "station"
},
{
"slotName": "stationFrom",
"slotValue": "大阪",
"valueType": "stationFrom"
}
]
},
"taskIdList": [
"BT00101",
"BT00201",
"BT00901",
"SE00101"
],
"extractedWords": [
{
"wordsValue": "大阪",
"wordsType": [
"stationFrom",
"upoi",
"snoun"
]
},
{
"wordsValue": "東京",
"wordsType": [
"station",
"upoi",
"snoun"
]
},
{
"wordsValue": "大阪から東京に行きたい",
"wordsType": [
"inputText"
]
}
],
"serverSendTime": "2014-11-01 12:05:53"
}
いろいろな情報が返されるのですが、このAPIで重要なものは次の5つです。
| キー | 概要 | 値の例 |
|---|---|---|
| commandId | 機能ごとのID | BT00101 |
| commandName | 機能ごとの名称 | 乗換案内 |
| slotName | 機能ごとに設定されたスロット名称 | stationTo |
| slotValue | スロットに格納された単語 | 東京 |
| valueType | 単語のタイプ | station |
ここでのスロット(slot)とは、機能ごとに設定された単語のひとまとまりのことです。例えば、乗換案内には、stationFrom(乗車駅)とstationTo(降車駅)という名前のスロットがあります。slotValueは実際にスロットに格納された単語で、valueTypeは単語のタイプを意味します。
なお、返却されるキーの詳細については、別途APIごとの機能別リファレンスページに記載されていますので、それを参照してください。
utteranceWordキーの値(ユーザ発話ワードリスト)には、入力文を形態素(意味を持つ最小の言語単位)に分割した情報が格納されますので、簡易な形態素解析機能として活用することもできます。
音声合成
今度は、音声合成を試してみましょう。このAPIの実行結果は、テキスト情報ではなく、バイナリデータとして取得することになります。
音声合成APIでは、音声合成のエンジンとして、株式会社エーアイ製とNTTアイティ製の2種類が利用可能です。APIコンソールの音声合成メニューは、デフォルトでは株式会社エーアイ製が選択された状態になっています。
このAPIでも、HTTPリクエストボディのタブを選択すると、パラメータを編集することができます。
実行ボタンをクリックしてしばらくすると、結果データとして、パラメータのテキストを読み上げた音声データがダウンロードできるようになります。
ここで得られる音声データは、ヘッダのない生データです。PCではやや扱いにくいのですが、Audacityなどの波形編集ソフトウェアを使ってRawデータとして取り込むと、再生可能です。
なお、NTTアイティ製の音声合成エンジンの場合は、WAVファイルとしてダウンロードできますので、そのままWindows Media Playerなどで再生することができます。
長い文章でも、驚くほど自然に読み上げることができますので、いろいろと遊んでみてください。
最後に
今回は、「docomo Developer support」の概要とAPIコンソールを紹介しました。APIコンソールでは、手軽にAPIの機能が試せますので、実際のアプリ開発においても、APIの選定に活用できることでしょう。
次回は、APIに用意されているSDKを使って、AndroidアプリからAPIを利用する方法を紹介します。










