「goo」の広報ブログ「gooの音」

「goo」広報担当が、みなさんにとっておき情報をお伝えしていきます!

【エンジニアに訊く】Alexaスキルの審査を通すために抑えておくべきポイントは?社内勉強会「アサレン」でAlexaスキルを開発したエンジニアに訊いてみた。

2018-08-31 | ★もっと知りたい!NTTレゾナント

NTTレゾナントでは、社内のスペシャリストが講師となり、業務に必要なスキルを習得する場として勉強会を実施しています。その1つが「アサレン」です。「アサレン」は、朝の時間を活用し、UI/UX、 プログラミング等といった、技術力の向上を目的に開催している勉強会です。

今回は、「アサレン」で講師を務めた伊東さん、アサレンに参加した若手エンジニア久澤さん、岩田さんにインタビュー。3名とも今回の「アサレン」で、Alexaスキルを1ヶ月ほどで開発し、リリースしたとのこと。開発で苦労したポイントや、審査を通すために抑えておくべきポイントなどを訊きました。

※今回の記事はスマートスピーカーのスキル開発(主にAlexaスキル)を検討されている方向けのものです。

左)メディア事業部 ポータルサービス部門 技術開発チーム 岩田 紘成
2018年、NTTコミュニケーションズへ入社、同年にNTTレゾナントに配属。「gooニュースアプリ」のバックエンドの開発業務などに従事。

中央)スマートナビゲーション事業部 サービステクノロジー部門 AIチーム 伊東 久
2008年、NTTレゾナントに入社。「goo AI x DESIGN(エーアイクロスデザイン)」や「教えて!gooのAIオシエル」など、NTTレゾナントの主要なAI案件に従事。

右)ソリューション事業部 サービス基盤部門 課金/IDチーム 久澤 大輝
2016年、NTTコミュニケーションズへ入社、同年にNTTレゾナントに配属。「goo」のID・決済基盤の運用に加え、社内インフラ整備などの情報システム業務や、スマートフォンアプリの管理業務などに従事。

 

 

個人の作り手は「コンテンツ持っていない問題」にぶち当たる

 

――今回はAlexaスキルについてお話をお聞きします。皆さんは今回のアサレンで初めてAlexaスキルを開発したそうですが、どのようなスキルを開発したのでしょうか?

伊東
私は「アニメトークイベントお知らせ」というスキルを作りました。このスキルは都内で開催されているアニメ制作陣によるトークライブイベントのスケジュールをお知らせしてくれるスキルです。

久澤
私が作ったのは、食品名を言うとその食品の100グラムあたりの糖質とカロリーの量を教えてくれる「糖質チェッカー」というスキルです。文部科学省の『日本食品標準成分表2015年版(七訂)』のオープンデータをコンテンツとして利用しています。

岩田
私は「川崎のゴミ係」というスキルを作りました。捨てたいゴミを発話すると、そのゴミの川崎市での分別方法を教えてくれるものです。


――皆さん、ご自分でスキルを企画されたとのことですが、スキル設計で悩まれたところってありますか?

伊東
スキルを作るにあたって、どういったものにしようかいろいろと考えましたが、個人として発信するためのコンテンツを持っていないことが大きな課題でしたね。Alexaスキルでよく使われているのって、フラッシュブリーフィングスキルといわれているもので、これはニュースやメディアの情報を音声で聞けるスキル。簡単に言うと「アレクサ、今日のニュースを教えて」といったら、Alexaがニュースを読み上げてくれるものです。

このフラッシュブリーフィングスキルを作るには、まず自分が発信するためのコンテンツを用意しないといけません。みんなが知りたいと思う有用なコンテンツを持っていないとこういったものができないのです。「伊東久の今日のニュース」を流してもしょうがないので(笑)

なので、コンテンツを持っていない個人がAlexaスキルを作ろうと思ったときには、「コンテンツに頼らないもの」「オープンデータを活用してコンテンツとするもの」「なにかしらの手法で情報をキュレーションする」のどれかになるかと思います。私が開発した「アニメトークイベントお知らせ」は、3つ目ですね。Web上にあるイベントのタイムテーブルのデータを取得してきて、いつどこでアニメイベントが開催されているのかを教えてくれるようにしました。

岩田
私も、コンテンツ持っていない問題に悩まされましたね。どうしようかと考えた結果、オープンデータを活用することにしました。神奈川県川崎市に住んでいるのですが、ゴミの分別方法がオープンデータとして公開されていて、それを利用しました。なぜ川崎市なのかというと、社会人一年目で川崎市に引っ越してきたばかりなのですが、ゴミの分別方法がよくわからなくなるからです(笑)。

 他の市町村で、すでにゴミ分別に関するスキルがあったけど、川崎市にはまだない!!
これは俺が作るしかねぇ!!と決めたとのこと。

 


Node.jsは非同期処理が辛い


――開発で苦労したことは?

久澤
Alexaスキルの多くがNode.jsかPython作られています。私は以前Pythonを使ったことがあったので、未経験だったNode.jsを選びました。初めて触る言語だったのですが、私が開発した「糖質チェッカー」ではスクレイピングはしないし、JavaScriptの経験はあったので、簡単だと思っていたのですが、実際は非同期処理という沼にハマりましたね。

伊東
私も、Node.jsを最初に選んだのですが、非同期処理で挫折しましたね(笑)。PythonはABCという処理を記述するとA、B、Cと順番通りに処理をするのですが、Node.jsはWebサーバーなどのサーバーサイドで動作させることを想定したJavaScript環境なので時間のかかる処理は処理が終わって値を返すことができる状態になったら返す(処理が速いものはすぐに返す)という動作になります。
例えば、ABCと記述しても、Bの処理が遅いと、A、C、Bとなり、Bの値が最後に返却されます。この非同期処理に慣れていない、私のようなプログラマーからすれば、かなりやっかいなんですよ。「Node.jsいけるっしょ!」っていうテンションで挑んだのですが、文字列を正規化するための関数を1つ書いただけなのに、「あれ?順番違うじゃん!やってられん!」となりましたね。結局、私は途中まで書いたNode.jsを全部捨てて、Pythonで書き直しました(笑)。

  

Node.jsでコールバック地獄に飲みこまれ、Pythonで息を吹き返したとのこと。

 


発話されやすいコンテンツを用意しよう


――みなさん、無事にリリースまでたどり着いたとのことですが、審査ではどういうポイントが指摘されましたか?

岩田
私は審査に何度も落とされました(笑)。スキルのエラーというよりも、ユーザーとの会話インターフェイスの部分で指摘を受けましたね。いかにユーザーが直感的に操作できるかが、重要視されているような気がします。
当初、オープンデータのテキストをそのまま使っていたんですが、それを人が発話するような書き方に直しました。例えば、元データでは「アイスクリームのふた(プラスチック製)」や「アイスクリームのふた(紙製)」という感じで分類されているんです。
ユーザはそんな聞き方をしないので「アイスクリームのふた」でまとめる、といった作業をひたすらやりましたね。ある程度は機械的にできますが、最終的には手作業で修正していく感じでした。これはスマートスピーカーのスキル開発ならではの作業かなと思います。

久澤
私もこの作業に結構時間がかかりましたね。日本食品標準成分表に記載されている食品名が「(えんどう類) さやえんどう 若ざや 生」みたいな絶対に人が発話しないような書き方なんですよ。

 

エクセルでゴリゴリ成形して、食品名のクリーニングを行ったとのこと。

 

あと、Alexaのシミュレーターは、実機と異なることを意識しておいたほうがいいですね。私の場合、シミュレーターではタイピングで文字を入力するのですが、発話だと音声で文字が入力されます。
具体例をあげると、シミュレーターで「はんぺん」と打つとちゃんと認識してくれるのですが、実機で試してみると「半片」と漢字に変換されてデータベースに飛んでいくんです。データベースには漢字の「半片」が登録されていないので、Alexaが「見つかりませんでした」と返答してしまうようになってしまって・・・。ですので、実機でも動作を確認しつつ、ひらがな、カタカナ、漢字でも対応できるデータベースにしないといけないんです。

また、審査を受けるときには、サンプルフレーズというものを用意しなくちゃいけないのですが、ここで指摘される人は多いのではと思います。私の「糖質チェッカー」というスキルの場合、自分でタイピングして打つときはシミュレーター上でAlexaがすでに起動しているので、「糖質チェッカーで唐揚げを調べて」で動作するのですが、実機の場合は、「アレクサ、○○して」というふうに、”アレクサ”をきちんとつけないといけないんです。ですので、ちゃんと”アレクサ”というウェイクワードをサンプルフレーズに入れなさいという指導が入りました。


――なるほど、シミュレーターと実機では動作が異なる場合があるのですね。

久澤
他にも注意しておきたい点がありまして、それがサンプル発話の準備ですね。アレクサがユーザーの発話を正確に認識できるように学習するための辞書のようなものです。サンプル発話には、「〇〇の糖質を調べて」「〇〇の糖質を知りたい」「〇〇の糖質を教えて」などユーザーのさまざまな発話に対して対応できるように辞書を用意する必要がありまして、これの数が10個以下だとおそらく審査で指摘されますね。

岩田
私はまさに、それを審査で指摘されました。Amazonのウェブサイトにサンプルはあるものの、スキルによってユーザーの発話方法がそれぞれ異なるので、そのまま転用することはほとんどできません。初めて申請される方の多くがここで指摘をされるのではと思っています。

伊東
私の場合は、Alexaスキルの説明欄に書く文章について指摘を受けました。申請時にこのスキルはこういうことができるという説明を書いたドキュメントを提出するのですが、その体裁について指摘を受けています。Alexaの標準機能と誤解させてしまうので、これがスキルであることを明示的に書いてくださいという指摘を受けました。最終的には説明文に”Alexa”という表現をしていたところをすべて”スキル”に直しました。

 

 

Alexaスキルをリリースするなら今がチャンス


――Alexaスキルって今が審査に通りやすいとの噂を聞くのですが、実際に体験してみていかがでしょうか。

岩田
私は何度も審査されましたが、実際はそれほど厳しいものではないと思います。指摘ポイントはある程度限定されていて、スキルの実装で指摘をされることはないですし。また、
Alexaはスキル数の拡大に力を入れているときで、キャンペーンなども積極的に実施しているので、それもあって今はスキル審査が通りやすい時期なのかなと思います。

久澤
岩田さんと同じく、それほど厳しくはないという印象ですね。Amazonが求めるユーザーエクスペリエンスに関する資料や審査のチェック項目があるので、それをきちんと見ていれば、大丈夫だと思います。

今がチャンスというのは、審査のスピード感からも伝わってきますね。私の場合は、日曜日の夜に出して、月曜日の昼に返ってきたのでかなりスピーディーだと思います。営業日的には半日くらいですね。次の日の昼に指摘されたポイントを改善して出したら、その日の夕方に審査通りました。

伊東
スキル開発に関する情報もネット上では充実しつつありますね。AmazonのAlexaスキル開発トレーニング、Qiitaの記事か、GitHubのサンプルコードなどが参考になるので、それらの情報をみれば簡単なものであればすぐに作れると思います。逆に書籍はいろいろと見ましたが、参考になるものはなかった(アサレン開始時 2018年6月の段階)ので、情報収集は基本的にウェブサイトで良いと思いますね。

今後は、各社がスマートスピーカーにディスプレイを備えたものを市場に提供してきますので、機能もよりリッチなスキルが作れるんじゃないかと思います。そういった意味でも、スキル開発の可能性が広がっている段階なので、今スキル開発を経験しておくことをおすすめします。 


――ありがとうございました!

NTTレゾナントでは、「goo」を一緒に作るエンジニアを募集中です!採用ページでは、実際のエンジニア社員へのインタビューや社内カルチャーを紹介していますので、ご興味があればぜひご覧ください。

この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
goo blogユーザーが出品しています
他の出品作品をマルシェルで見る
« プロアクティブチャットサポ... | トップ | 【社員紹介企画Vol.44】NTTレ... »
最新の画像もっと見る

★もっと知りたい!NTTレゾナント」カテゴリの最新記事