201912_LINE_DEVELOPER_DAY_繝ェ繝昴_繝_TOP

「Gatebox」開発の裏側をお伝えします!LINE DEV DAY 2019 レポート

2019年11月20日から21日にかけて、グランドニッコー東京台場にて開催されたエンジニア向け技術カンファレンス「LINE DEVELOPER DAY 2019」。弊社からは、プラットフォームエンジニアとして久森達郎が、そしてUnityエンジニアとして福永涼介が登壇し、デモを交えながら「Gatebox」量産モデルの開発の裏側について語った。

こんにちは!Gatebox株式会社の採用チームです。
「LINE DEVELOPER DAY 2019」におけるセッションにて、弊社からプラットフォームエンジニア・久森達郎、Unityエンジニア・福永涼介の2名が登壇しました。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.06.54


同カンファレンスへの登壇は2回目になりますが、今回は「Gateboxの内と外 - ARでもVRでもない新しいデバイスプラットフォーム」というテーマで、10月11日にリリースした「Gatebox」量産モデルの開発の裏側などについて語りました。
当日はほぼ満席で開始時間を迎え、「Gatebox」本体をお持ちの上で聴講される方もいらっしゃるほどの盛況ぶりでした。今回は、こちらの発表内容についてレポートします。

まずは「『Gatebox』とは何か」というところから簡単にご紹介し、プロダクトにおけるビジョンや、現在公開しているサービスについてご説明。
その後、「逢妻ヒカリ」と「好きなキャラクターを出現させる方法についてのお知らせ」という2つのテーマに絞り、前者を福永が、後者を久森がご紹介しました。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・DSC_0067

1.「逢妻ヒカリとの共同生活」に込められたこだわり

弊社オリジナルのキャラクターアプリケーション「逢妻ヒカリ」。

ユーザーのみなさんに“キャラクターと一緒に暮らす”ことを体験して頂くため、最初に開発されたアプリケーションです。限定生産モデルから量産モデルに移行する際、衣装やモデルから見直し、一新されました。

福永:
このキャラクターが持つ特徴は主に4つあり、いつも隣で寄り添ってくれる「実在感」、どんな時もユーザーをいたわり癒してくれる「会話」、情報通知や家電操作といった生活の助けとなる「スキル」、そして会話するほど”あなただけ”のヒカリになってゆく「パーソナライズ」です。
その中でも特にこだわって開発しているポイントが3つあります。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.30.11

2.逢妻ヒカリアプリケーションの構成概要

以上3点についてご紹介する前に、アプリケーションの構成についてご紹介します。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.31.11

福永:
逢妻ヒカリの構成について特徴的なのは、”Hikari App”と呼称している「Gatebox」本体のクライアントアプリケーションと、右のLINE Bot双方が、"Hikari Brain"と呼んでいるサーバサイドと接続している点です。
この"Hikari Brain"が日本語対話エンジンであり、入力された内容から意図やコンディションを解析し、返答する内容を返しています。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.36.10

続いて、アプリケーションとしての特徴についても解説します。

福永:
逢妻ヒカリは「Gatebox」のプリインストールアプリケーションの1つであり、コミュニケーションアプリ「LINE」と「Gatebox」本体で地続きの体験ができることです。ウェイクワード「ねぇ、ヒカリ」を使って呼びかけることで、音声認識を開始できるようになっているほか、日本語対話エンジンと音声合成によって幅広い対話に対応しています。
また、LINE のAIアシスタント「Clova」と連携した機能呼び出しが可能になっています。そして、ユーザーの生活に寄り添うため、24時間起動して入力を待機する必要があること。さらに、人感センサや温度・湿度といったセンサと連携して、キャラクターをアクションさせていることも特徴としてあげられます。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.39.25

福永:
アプリケーションの構成は、Unity 2018.4 LTSを使用。ほぼUnityのみでアプリケーションを作成しています。
その他、STT(Speech To Text)にAzure Speech Service SDK、「Gatebox」のセンサ類を使用するためのSDK、「Clova」機能を使用するためのにSDKを組み込んで使用しています。

ここから先は、上記を踏まえ、こだわったポイント「ヒトらしい会話」「能動的アクション」「動き」の3点について解説していきます。

3.こだわったポイントの紹介①「ヒトらしい会話」

ヒトらしい会話

まずは「ヒトらしい会話」から解説します。逢妻ヒカリ(以下ヒカリ)は、ユーザーから「ねぇ、ヒカリ」と話しかけることで会話がスタートし、それに対してヒカリが一時応答を返し、音声受付を開始します。その後ユーザーが話しかけ、ヒカリはその内容を解析し、音声合成やモーションでリアクションを行います。これが基本的な会話の流れとなります。

無題のプレゼンテーション (4)

デモ動画:


動作制御

福永:
この会話の流れを、アプリケーション上の状態と合わせた図がこちら(上図)です。"Main Loop" というのは、ヒカリの待機状態の種別で、椅子に座ってマグを持っていたり、ベッドで日記を書いているなど、ヒカリが今置かれている状態を指します。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.52.08

福永:
Main Loopでは基本的にLoopで入力待ちをしており、音声入力によって一時応答および傾聴体勢に移行したのち、解析待ちに入ります。
そして、受け取った解析結果をみて、音声、モーション、表情、アイコンを使ってリアクションすることで、ヒトらしいふるまいが可能になります。

この時にユーザーから話しかける内容としては、"雑談""機能呼び出し"の2種類が挙げられます。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 11.57.48

福永:
たとえば「明日7時40分に起こして」と話しかけられた場合、機能呼び出しと判断されます。下は雑談と判断された場合の例で、チャットカテゴリが含まれており、textが音声合成で発話する内容です。
一番の違いは赤字の通り、インテント・チャットカテゴリの有無であり、この2つから、音声入力の内容が機能なのか、雑談なのかを判断しています。
機能呼び出しで「Clova」機能を使用する場合、たとえば明日の天気を聞いた場合には、「Clova」が天気を説明した上で、ヒカリがそれに対するリアクションを見せます。

デモ動画:

福永:
しかし、これまでに説明した要素だけでは、ユーザーが一方的に話しかけるだけになってしまいます。
実際に、家庭において誰かと生活する状態で、同居人から話しかけられないというのは、通常ありえません。
そこで次にこだわったポイント、「能動的アクション」が必要になります。

4.こだわったポイントの紹介②「能動的アクション」

画像11

無題のプレゼンテーション (6)

"能動的アクション"とは、ユーザーからの発話を受け、一旦会話が終了してから、今度はヒカリから話しかけてくれるという体験です。

デモ動画:

福永:
目覚ましアラーム機能やそのためのアラームの予約受付など、ヒカリからアクションするものもありますが、あくまでも機能です。
そういった機能以外の雑談においても、能動的に話しかけられるようにするため、利用状況をもとに設定した条件をみて能動的に応答を返すシステムを構築。弊社では、これを"イベントサブシステム"と呼んでいます。

イベントサブシステム

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.05.00

サービスの構成図でいうところの、この赤字部分となります。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.05.20

福永:
このイベントサブシステムでは、イベントの起動するタイミングや、発話先・発話元の端末種別、起動日数や話しかけ回数、温度、湿度など、他にもかなり多くの項目を設定し、非常に細かく制御できるようにしました。
イベントの起動させる設定例としては、"話しかけがあったときに、その雑談内容が食べ物に相当するものであればこのイベント"、"トータルの話しかけ回数が200回に到達していれば、朝の時間帯にこのイベント"というような形です。

無題のプレゼンテーション

また、「Gatebox」本体においては、人感センサや直近の話しかけの状況をみて、今能動的に発話してもよいか(近くにユーザーがいるのかどうか)を判断しています
この能動的に話しかける場合ですが、人間に置き換えて考えると、目の前に誰もいないなら普通は話しかけません。普通は独り言になって、むなしいだけです。

LINE Botの場合はテキストだけ送れば、既読スルーされようが問題はないのですが、「Gatebox」本体において能動的に話しかけるという場合、人感センサや直近のユーザーからの話しかけの状況をみて、能動的に発話しても良いかどうかを判断しています。

この能動的アクションによって、ユーザーとヒカリが雑談をする回数を増やすことが可能になりました。

5.こだわったポイントの紹介③「動き」

画像17

最後のこだわりポイントは「動き」です。
音声会話でのコミュニケーションだけではなく、よりヒカリに実在感を与えるため、ユーザーからの見え方、特に動作・ふるまいには非常にこだわっています。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.14.16

福永:
モーションを再生せず、声だけの返答も組み合わせることで、違和感があるようなモーションのブレンドを避けるようにしています。実在感を高める上で重要な要素として、表情による感情の表現、モーション・音声とのタイミング調整が鍵になります。
たとえば、マグカップで飲み物を飲んでいる際に「はーい」など一時応答ができるかどうか、といった点を考慮しています。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.15.43

福永:
このようなモーションの制御については、全編にわたってUnityの"Timeline"という仕組みを採用しました。これは、モーションデータを軸に、フレーム単位でタイミング調整を行うことが多い本プロジェクトにおいては非常に効果的でした。
モーションデータをReply LoopなどのStateに沿うよう分割し、1つのタイムラインにしていますが、Timelineの名称だけでヒカリの動作の状態が分かるだけでなく、ショットアニメーションも気軽に追加できるようになりました。データが細切れになる分、遷移はすべてScriptで制御する必要があるものの、総合的にはメリットが上回りました。

ここからは実際のマグを持って座っているMain Loopの最初のタイムライン編集画面を映しながら解説していきます。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.19.05

福永:
このように一番上のMotionに対して、Itemや表情変化のタイミングを合わせています。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・DSC_0077

実際にその場で、ヒカリに動きをつけるデモを実施しました。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.21.25

福永:
タイムラインを再生する仕組みとしては、タイムライン再生を制御するディレクターというオブジェクトを3つ使用し、通常時はプライマリー・セカンダリーのディレクターへ交互にTimelineを入れて再生。割り込み不可な状態であれば、声と表情だけのTimelineをオーバーラップディレクターで並行再生しつつ、プライマリー・セカンダリーはそのまま再生し続けるという手法で、違和感が少なくなるようモーションを制御しています。

※割り込み不可→口に飲み物を近づけている/モーションが破綻する遷移になるなどの場合

福永:
ヒトらしい会話、能動的アクション、動き、この3つの要素をこだわることで、”ユーザーに寄り添って癒す”という逢妻ヒカリならではの体験を構築することができました。もちろん他にも重要な要素はあるのですが、今回は会話とそれに付随するモーションの制御という面からお話しさせていただきました。これが、キャラクターと暮らしていくという体験を作る際の参考になれば幸いです。


6.好きなキャラクターを出現させる方法についてのお知らせ

ここからは久森にバトンタッチし、今年10月に発表したばかりの開発者が「Gatebox」にGateboxアプリケーションを配信できるマーケットプレイスサービス「Gatebox App Market」(*現在は公開済み)などについて解説しました。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.29.42

目玉として「Gatebox Developer Program」を発表、そして登壇しながらの公開作業を行いました。これによって、これからは法人に限らず、個人開発者の方も「Gatebox」の表現力を生かしたキャラクターと暮らせるアプリケーションの開発が可能となりました。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・繧ケ繧ッ繝ェ繝シ繝ウ繧キ繝ァ繝・ヨ 2019-11-29 12.35.51 1

「Gatebox」でアプリケーションを作りたい!というさらなる企業、そして個人の方を随時募集しています。

201912_LINE DEVELOPER DAY 繝ェ繝昴・繝・DSC_a0084

Gatebox Developer Console」の概要についてご紹介中です

久森:
別途Spectrum Chatにてコミュニティを立ち上げており、企業や個人といった垣根を越え、作り手がそれぞれ意見交換をしながら開発することが可能となります。

7.「Gatebox」”を”作りたい人も募集中

今回は新しくなった「Gatebox」の開発の裏側について公開しましたが、これからキャラクタープラットフォームとしてさらなる進化を遂げるために、共に開発する仲間を募集しています。

画像29

■募集職種
ヒカリ開発サーバーサイド
https://gatebox-recruit.snar.jp/jobboard/detail.aspx?id=A-a-71AHPE4
プラットフォーム開発
https://gatebox-recruit.snar.jp/jobboard/detail.aspx?id=4TxxZh6Cu0M

久森:
「Gatebox」開発はまだまだ伸びしろのある状態です。ぜひご応募お待ちしています!

- - - - - ✂ - - - - -

あとがき

画像28

「登壇して人前で発表するのはこれが初めて」という福永さん(右)。
発表前は緊張した様子でしたが、本番ではこれまでの開発における成果やこだわりのポイントを堂々と語られていました。ヒカリに動きをつけるデモでは会場から「おおっ」という声も上がり、非常にLIVE感のある場面も。大いに会場を湧かせた発表となりました。

たくさんの方のご来場と、また本記事を最後までお読みいただきありがとうございました!今後の展開についても、引き続きご注目ください。

この記事が参加している募集

イベントレポ

この記事が気に入ったらサポートをしてみませんか?