NTTドコモとNTTドコモ・ベンチャーズが開催した「Developer Application Contest 3rd」に参加してきました。
※コンテストは既に終了しました
コンテストの概要は、下記3テーマの中からお題を選んで、それにあったアプリケーション、又は、サービスを、ドコモ提供APIを使って開発すると言うものです。
<お題>
・次のステージを切り開く! キュレーションサービス
・新しい形の生活支援型 エージェントサービス
・友だちとシェアしたくなる おもしろコンテンツ
その他にも、「アプリケーションアイデア部門」というのがあって、こちらは上記お題、又は、自由発想でも可という条件の企画書だけで応募できるというもの。
もちろん『アプリケーション開発部門』に参加してきました!
今回はその時のレポートです。
アイデア出し
まずは、ドコモ提供のAPIがどんなものなのかを、実際使ってみました。
Android端末で音声合成を使ってみる
Android端末でニュース記事取得APIを使ってみる
Android端末で対話API(しりとり)を使ってみる
その他にも、「画像認識」「文字認識」「発話理解」「知識Q&A」などなど、多彩なAPIが用意されています。
応募条件に、“ドコモAPIを使用すること”とあったので、基本的にはAPIから発想を膨らませて行こうかなと考えていました。
(お題はガン無視w)
案1:レシートからレシピ提案アプリ
買い物のレシートの写真を取るだけで、買った食材でできる料理レシピを検索できるというアプリ。
文字認識APIとレシピ検索API(楽天、ぐるなび等)を使ってできるかな思ったのですが…
既にありました。→あなたのレシートからレシピを提案! レシーピ!
ということで、早速ボツ
案2:栄養成分表で健康管理アプリ
コンビニおにぎりとかお弁当とかのパッケージに記載されている『栄養成分表』の写真を取るだけで、健康管理ができるというアプリ。
文字認識APIを使えば、1日の摂取カロリーとか塩分、脂質とかを記録・管理できるという。
とりあえず、ストック
案3:自分だけのニュース番組を自動生成できるアプリ
グノシーやSmartNewsを『自分だけの新聞』と考えると、『自分だけのニュース番組』ってのがあっても面白いよね。
トレンド記事取得APIのレコメンド機能と音声合成APIを使えばできそう。
とりあえず、ストック
案4:書道の臨書判定アプリ
臨書の精度を判定して、上達度を数値で見える化してくれるアプリ。
画像認識(オブジェクト認識)APIを使えばできるかも?
とりあえず、ストック
ひとまず形にできそうな案は3つほど出た。
アイデア決定。そしてモミモミ
ストックした3つの案から、今回のお題にあってそうなのは…
案3:自分だけのニュース番組を自動生成できるアプリが「キュレーションサービス」といえるかな。
その他は…
ということで、案3の『ニュース番組自動生成アプリ』を作ることにしました。
次に、コンセプトから具体的な機能を考えることにしました。
<コンセプト>
自分だけのニュース番組
<機能>
・アナウンサーがニュースを読み上げる
・TVニュースみたいにテロップとかが出る
・TVニュースみたいにTwitterのコメントとか出る
・コメンテーターがコメントを言う(コメンテーターは20人とかw)
・自分の興味があるニュースだけ読まれる(レコメンドAPIを使用)
とここまで考えて、ふと気が付く…
これ別に『TVのニュース番組見ればいいじゃん』。最近はオンデマンド放送とかあるし…
じゃぁ、TVのニュース番組じゃ絶対できないことってなんだろうと考えてみる。
対話だ!
・ニュースで解らないことが出てきたら、アナウンサーに質問できる!
・聞きたいニュースをアナウンサーにリクエストできる!
などなど…『アナウンサーと対話によって進行するニュース番組』ができたら便利だし、新しい体験になるんじゃね?
ということで、そこら辺の思い付きも追加して、完成像が見えてきました。
<コンセプト>
アナウンサーと会話できるニュース番組
<機能>
・アナウンサーがニュースを読み上げる
・TVニュースみたいにテロップとかが出る
・TVニュースみたいにTwitterのコメントとか出る
・コメンテーターがコメントを言う(コメンテーターは20人とかw)
・自分の興味があるニュースだけ読まれる(レコメンドAPIを使用)
・アナウンサーに質問できる(知識Q&A APIを利用)
・アナウンサーにニュースをリクエストできる
設計
作りたいものが決まれば、後は作るだけ。
ざっくりシステム構成を決める。
<システム構成>
最も肝心な部分は『ニュース台本作成サーバー』で、トレンド記事取得APIから取得したニュースとコメンテーターのコメントとTwitterのコメントから、ニューススクリプトを作成しています。
コメンテーターは今回用意できないのでw仮想的なキャラクターを4人作りました。
・【経済評論家】三橋 ガクポ
・【政治評論家】宮崎 キヨテル
・【天才子役】芦田 凛
・【エンタメ評論家】円 タメ子
ネーミングは使った画像から適当に(笑
音声合成APIでは、11人の音声が使えるので、それぞれ声を変えてます。
実装は、
台本作成サーバー:OpenShift(Django+cron)
ユーザーアプリ:アンドロイド
という、いつもの使い慣れた構成です。
今回はコンテスト応募作品ということもあり、サーバープログラムの方は、最低限の機能のみを実装することに。
アプリ側の設計は、基本的にはニュース番組を元にモデリング。
アナウンサー、コメンテーター、ディレクター、台本といったクラスで構成されています。
実装
頭のなかの設計に従い、ひたすら実装。
動作テスト
スクリプト作成やニュースの読み上げなど、基本的な機能の実装が終わったら一通りの動作テスト。
バグや改善箇所を洗い出していきました。
イテレーション2周目突入
動作テストの結果を踏まえ、もう一度設計からやり直し。
読み上げる文字数や句読点に合わせて口が動くようにしたり、リピート機能やチェックリスト機能の追加など、細部の作り込みと機能改善を行う。
完成&応募
こんなアプリになりました。
締切1日まえに完成したので、余裕を持って応募を行えました。
開発期間は、アイデア出しを始めてから約2週間程でした。
結果発表
2015/2/16結果発表で、
なんと優秀賞&お題賞を頂きました\(^o^)/
ありがとうございます。
あとがき
コンテストを終えての感想ですが、やっぱり開発は楽しい!
自分のアイデアを形にできるって楽しすぎますよ!
ソフトウェアエンジニアであって良かったと思います。
さてさてドコモのAPIですが、実際使ってみて良いところや不満があるところ、いろいろある訳ですが…
とにかく、音声合成APIは素晴らしい!と思いました。
・話者が多数
・いい感じに発音してくれる(※専門外なので上手く説明できませんが、棒読みでなくてより普通に近い感じで読んでくれる)
このクオリティの音声合成が使えるとか、本当に素晴らしいです。
今回音声で操作するっていう方法を取ったんですが、今後音声インターフェース(音声認識、音声合成)ってより身近になると思うんですよ。
IoT時代のインターフェースって、スペース的にもやっぱり音声がいいのかなと思ってます(まぁまだ分かりませんが。今のところは)。
Pepperくんのタッチパネルとか、やっぱりちょっとダサいと思っちゃうんですよね。ない方がいい。
ただ展示会で聞いた話だと、実際店頭とかでPepperくんが話しかけても、答えてくれるお客さんは少ないらしく、ロボットに対して話す
ということに抵抗ある人がほとんど。だから、使い慣れているタッチパネルを胸に付けたらしい。
確かに、ロボットと話すのもそうだし、メガネに話す、腕時計に話すのも抵抗あるなと。私もAndroid Wearを持ってますが、人前で
“OK Google”はちょっと言えないですし。(恥ずかしい)
でも、かなり前ですが『モニタリング』っていうTV番組見てて「自動販売機がいきなり話しかけて来たらどうなる」っての演ってたんです
が、大人はしゃべり返さないけど、小学生&高校生は普通にしゃべり返してたような気がするし。
音声で操作するモノ(家電、家具、服とか)が今後増えれば、そんな時代になっていくのかな~と思ったりもします。
ではでは~。