はじめに
上司から「ANGEL Dojoというのがあるんだけど、参加してみる?」と話を聞いたのをきっかけに、アマゾンウェブサービスジャパン株式会社様(以下、AWSJ様)企画の疑似プロジェクト「ANGEL Dojo」に約3カ月間取り組みました。
結果的には、いくつか賞がある中、ANGEL賞で2位をいただくことができました!
この記事では、後編として「ANGEL Dojo」での実装フェーズで、tdiチームが顧客起点で考えて作ったアプリを中心にご紹介したいと思います。前編の内容をご覧になっていない方は、下記からご覧ください。
顧客起点で考えたアプリ開発――実装フェーズ
アプリ紹介
前編でも少し触れましたが、tdiチームでは「人見知り」で対人不安を感じ、悩んでいる方をターゲットと設定し、人見知り軽減の支援ができるようなシステムがあれば、日本を元気にすることもできるだろうと考えました。
そこで今回、我々が開発に挑戦したのが、人見知り軽減を支援するWebアプリ「Shyning」です。
Shyningは、「Shyness(人見知り)」と「Shining(輝き)」を組み合わせた造語で、人見知りの方が輝けるようにという思いを込め、この名前にしました。
「人見知り」は生まれ持った性質や性格である等、人それぞれの解釈があるかと思いますが、「対人場面=不安」という思考パターンに陥っている状態を「人見知り」として定義しました。
「対人不安」は「ソーシャルスキル」の不足によって引き起こされると言われているため、「ソーシャルスキル」の向上を支援することで人見知りを軽減するのがこのアプリの目的です。
実際、運用していこうと思うと課題も多くあるため、使い方の詳細については割愛しますが、「ソーシャルスキルトレーニング」という手法を参考に、Shyningでは、自身の会話の録音、録画データをアップロードすることで、自身の話し方(話す速さ、口ごもり回数、笑顔率)に関するフィードバックと、これまでのフィードバック結果を成長グラフとして可視化してくれます。
これをもとに練習を繰り返すことでソーシャルスキルが向上し、対人不安が和らぐことで人見知りの軽減につながるというわけです。
<アップロード画面>
Shyningでは、1人で練習する用と2人での会話用の2種類から選べるようになっています。(下図は1人用)
1人用の場合は、下図のように、話す速さ、口ごもり、表情から練習したい項目とそれにあったスクリプト(お題)を選び、書いてある内容に従って録音、録画をし、データをアップロードします。
2人用の場合は、会話の録音、録画データをアップロードするだけです。
アップロードが完了したら、フィードバック画面へ。
<フィードバック画面>
アップロードしたデータを解析し、1分間あたりのワード数(話す速度)や口ごもり回数、動画であれば、会話での笑顔率もフィードバックとして確認できます。
<成長画面>
今まで蓄積したデータがグラフで可視化され、成長を確認できます。
Shyningのシステム構成は下図のようになっています。
- Webサイト公開
- HTMLファイル等をS3バケットに保存し、Static website hostingを利用して、Webサイトを作成(①)
- アップロードされたデータの解析と保存
- アップロードされたファイルが
- 音声ファイル(mp3)の場合
- Watson APIのSpeech To Textで解析を行い、AWS Lambdaで「口ごもり、話す速度」を算出し、Amazon DynamoDBへ結果を保存(②、③、④、⑥、⑦)
- 動画ファイル(mp4)の場合
- Watson APIのSpeech To TextとAmazon Rekognitionで解析を行い、AWS Lambdaで「口ごもり、話す速度、笑顔率」を算出し、Amazon DynamoDBへ結果を保存(②、③、④、⑤、⑦)
- 音声ファイル(mp3)の場合
- アップロードされたファイルが
- フィードバック結果の取得
- Amazon API GatewayからAWS Lambdaを呼び出し、Amazon DynamoDBからフィードバックデータを取得(⑦、⑧、⑨)
この構成にするにあたっては、以下のようなところを工夫しました。
- FFmpegを使って、ファイルフォーマットの変換を実施
- Amazon Rekognition、Amazon SNS、AWS Lambdaの連携
- ④において、動画ファイルから変換された音声ファイルの場合は、Amazon Rekognitionでの「JobID」の情報をプレフィックスとして使い、解析結果を保存
また、下記は今回我々がシステム開発した際のポイントです。
- Vue.jsでのSPA(Single Page Application)開発
- サーバーレス構成
- フルマネージドなクラウドサービスをフル活用
チームメンバー全員、アプリ開発は初心者でしたが、Vue.jsを使用したSPA開発にチャレンジし、短期間で高いデザイン性とユーザビリティを実現できました。
また、ANGEL Dojoの講義等で学んだことを参考に、Amazon S3やAWS Lambda、Amazon DynamoDBといったサーバーレス&フルマネージドなサービスを多く活用したことで、プログラムの実装に注力でき、期間内にアプリを開発することができました。
実装は期限ギリギリまでやっていたので、インフラを管理する必要がないというのは、開発経験が少ない自分にとってすごく大きなメリットでした。
顧客起点で考える時のポイントと苦労した点
実装の前の話にはなりますが、「人見知りの人の真の課題は何だろうか」という部分を顧客視点に立って考えた際に、人によって「人見知り」の定義と課題の解釈が異なっていたため、同じ認識を持つことに苦労しました。
ここに関しては、恐らく他のチームよりも力を入れていたと思いますが、図書館で文献を探す等、情報収集を行い顧客の理解に努め、チームで共通認識を持ちました。
実装面では、Vue.jsの書き方や各AWSサービスの使い方、動画ファイルから音声ファイルへの変換方法等、各個人で苦労した点も多くありましたが、チーム全体としては、タスク管理とGitでのバージョン管理が苦労したと感じています。
どちらもチーム内での使い方の共有が行き届いていなかったこともあり、うまく管理ができていませんでした。チーム内で共通して使うツールに関しては、最初に全員が使えるように準備しておくことが、活動を円滑に進めるうえで大切だと改めて実感しました。
最終発表 – ANGEL賞2位!
ANGEL Dojoの取り組みの成果発表が最後に行われました。新型コロナウイルスの影響で、リモートでのオンライン発表会となりましたが、各チームがここまで開発してきたサービスの紹介やデモを披露します。
全チーム発表後、以下のような観点で表彰もありました。
- アライアンス賞
- Working Backwardsに沿った企画ができているか
- ビジネス的に興味深い/価値があるか内容か
- ソリューションの完成度
- ベストアーキテクチャ(PSA)賞
- Well Architectedなシステムになっているか
- 技術的に興味深いチャレンジがあるか、継続的に改善していきやすいか
- ANGEL賞
- 参加者、観覧者の投票
- 日本を元気にすると思ったシステムを選ぶ
- OLP(Our Leadership Principles)賞 (当日急遽追加)
- Amazonの求める人物像とも言える「Our Leadership Principles」という14項目からなる信条のうち
以下の3つの観点でそれぞれ表彰- learn and be curious
リーダーは常に学び、自分自身を向上させ続けます。新たな可能性に好奇心を持ち実際に追求します。
- dive deep
リーダーは常に各業務に気を配り詳細も認識します。頻繁に現状を確認し、メトリクスと個別の事例が合致していない時には疑問を呈します。リーダーが関わるに値しない業務はありません。
- deliver results
リーダーは、ビジネス上の重要なインプットにフォーカスし、適正な品質で迅速にそれを実行します。たとえ困難なことがあっても、立ち向かい、決して妥協しません。
- learn and be curious
- Amazonの求める人物像とも言える「Our Leadership Principles」という14項目からなる信条のうち
冒頭でも述べましたが、結果としては、tdiチームはANGEL賞で2位をいただきました!
「日本を元気にする」という企画趣旨と、顧客視点で考えるというマインドを最後まで意識し、実行した結果ではないかと思います。
終わりに
約3ヵ月、長いようで短い期間でしたが、このANGLE Dojoを通じてAWSのサービスだけでなく、チーム活動の難しさや「顧客起点で考える」ということの重要性についても改めて実感し、良い経験となりました。このような貴重な場を提供していただいた、アマゾンウェブサービスジャパン株式会社様には感謝の気持ちでいっぱいです。
早くもANGEL Dojo Season2も行われるということなので、参加される方はもちろん、今後企画/開発される方も、ぜひ「顧客起点」で物事を考えてみてください!この記事がそのきっかけになれば幸いです。
執筆者プロフィール
- 配属後、ロボコン担当として、ETロボコン2017東京地区大会優勝・ITAロボコン2017優勝に貢献。現在は、AIチームの一員として、機械学習、ディープラーニングなどに挑戦しています。