開発部の水島(@0xb5951)です。
かなり遅くなりましたが、2019年の開発合宿レポートを書こうと思います。
僕たちのチームでは、Amazon Sumerianを使って、ランサーズくんで受付システムを作成しました。
開発合宿について
合宿は例年1泊2日で行われており、なるべく業務とか違う文脈で自由にアウトプットしようというのが主題です。
今回の合宿場所は静岡県の城ヶ崎海岸でした。
(渋谷から新幹線使ってだいたい2時間ぐらいです)
道中、熱海で一旦降りて足湯開発とかしてました。
今回の宿はAirbnbで予約したのですが、豪邸すぎて入るのに戸惑いました。
庭に謎オブジェクトがありました。
家にスタジオあって、ドラムセットあるってどういうこと…
一通り豪邸で遊んだので、開発スタート!
今回やった内容
AWSが提供しているAmazon Sumerianというサービスを使って、ランサーズくんという弊社のマスコットで3D応答システムを作成しました。
↑ランサーズくん
Amazon Sumerianとは
AWSが提供する VR/AR/3Dアプリケーションを手軽に作成できるサービスです。
https://aws.amazon.com/jp/sumerian
このサービスを使うことで、ブラウザ上で3Dモデルの作成からデプロイまで比較的簡単に行うことができます。
公開されたシーンへのアクセスもURLを渡すだけでOKなのも、かなり良いと思います。
webVRに対応していれば、見ることが可能なのでVRデバイスはもちろん、スマホからでも見ることが可能です。
またブラウザ上で開発するため、開発環境を作成する必要がありません。
初心者へのハードルも低く、ブラウザにアクセスすれば開発できるので、異なる環境での開発も可能です。
↓メイン画面
アセットも比較的用意されています。
いくつかの制約もありますが、自作モデルやアセットなどを使用することもできます。
配置したエンティティに対して、様々なメソッドを付与させることができます。
配置したエンティティに動きを定義したい場合や、ワークフローを作りたい場合も簡単に構築することができます。
使用できるメソッドも十分にあったので、少なくとも今回使った範囲では困ることはありませんでした。
完成した作品を公開したい時は、右上の公開から「パブリックリンクを生成する」を押すだけでOKです。
簡単!
開発!
今回のアーキテクチャ
Sumerianを使って、受付システムを作成します。まずは当初のアーキテクチャ設計を示します。
今回は会社の受付にタブレットを配置して、3Dアプリケーション+VUI(音声UI)で受付システムを作成します。
来訪の方が来たら、ランサーズくんモデルが喋って、受付をしてくれるシステムです。
Amazon Lexは機械学習を使ったChat botサービスで、ユーザからの入力に対しての応答文を生成してくれます。
Amazon PollyはいわゆるTTSサービスで、入力された文書を読み上げることができます。
これらを組み合わせて、ユーザと自動応答を行い、来訪と目的をSlack通知するサービスを作るつもりでした。
思わぬ誤算
進めていくうちに、キモであるAmazon Lexが日本語に対応していないことが分かりました。
Lexが使えないと、文章生成部が使えないので、方向を自動応答からパターン応答に変更し、以下のようなアーキテクチャにしました。
SumerianではHTML要素を3Dで配置することができるので、ユーザ行動ベースのパターン分岐に変更しました。
Lexで応答を生成していた部分を、あらかじめ喋らせる内容と次に出すHTML要素を決めておき、置き換えることをしました。
こうすることで3DモデルのUIを担保しつつ、音声応答に対応することができます。
※Pollyには日本語の音声モデルが男女一種類ずつ存在します(2019年11月現在)。ありがとうAmazon
もくもくタイム
アーキテクチャが定まったので、あとは開発するのみです!
途中ご飯を作ったり、お風呂に入ったりしながら楽しく開発することができました。
完成
はい。ランサーズくんです。
やりと盾もってるから、ランサーズくんです。
このモデルはSumerianを使ってブラウザ上で作成しました。
1泊2日という期限もあり、時間も厳しかったですが、Slack連携以外はなんとか時間内で作成することができました。
モデルも弊社サービスを使って、募集すれば素晴らしいものが出来上がると思うので、会計と相談しつつ今後の課題としたいと思います。
さいごに、各チームで成果物を発表しあいました。
gRPCや、社内の負債をなくしたり、SmartHRのAPI活用して業務改善したりなど、普段向き合えない問題に取り組んで面白かったと思います。
今年の開発合宿記事
ランサーズ開発合宿2019 GASとSmartHR APIで業務効率化
最後に
このような取り組みが存在することが僕はとても好きです。
普段の業務以外にも、単純に何かを作ることを楽しもうみたいなスタンスがエンジニアの中にあるのはとても大事なことだと思います。
普段あまり関わらない人と一緒に開発したり、夜更かししながら楽しく開発したりできる時間はとても充実していました。
来年も行けることを楽しみにしておきます。読んでいただいてありがとうございました。