こんにちは、iOSエンジニアのchuymasterです!最近バイオハザード RE:2をようやく始めて、悲鳴を上げながらストーリー攻略を目指しています。
2月下旬、GameWithの初めてのチャットボットをリリースしました!今回は、チャットボット作成で得た知見を共有したいと思います。技術構成も記載しますが、かなりプロダクト寄りの内容になります。
どんなチャットボット?
モンストのマルチプレイの仲間募集を手伝ってくれる可愛らしいLINEのチャットボットです。「マルチ募集チャットボット」と呼んでいます。何ができるか?どうやって使うかはこちら↓
チャットボットの検証と仮実装は昨年末から始まっていて、こちらの記事で詳しく説明したので、よかったらどうぞ合わせて読んでください。
プロジェクトの前提
本当にユーザーがチャットボットを使ってくれるかどうかの確信がないため、今回は最小限のリソースでプロダクトのリリースを最優先した「実験プロジェクト」になります。
「マルチ募集チャットボット」はあくまでもチャットボットの価値を検証するためのプロジェクトという前提で進めています。
開発スケジュール
僕がiOSエンジニアの掛け持ちでチャットボットを作っているので、半分ぐらいの時間を使う感覚で開発期間を1ヶ月程度設けました。開発者は、Androidアプリ開発以外は僕一人です。
1月末公開の予定でしたが、iOSアプリの開発が押していて優先対応したので、結果的に2月22日が公開日となりました。
技術構成
バックエンド
LINE Messaging APIのやりとりと、アプリ向けAPIはFirebase Functionsを使っています。
サーバーレスなので、インフラの心配をしなくて良い点と、iOS開発者としてFirebaseに馴染みがある点が採用の理由です。
フロントエンド
Firebase Hostingを使っています。アプリへのリダイレクトページと、画像の提供で使っています。本当は画像はStorageを使うべきですが、量が少ないのでHostingでとりあえずやりました。
データベース
Realtime Databaseを使っています。Cloud Firestoreは開発しているとき、データの1件取得に2秒かかることが多くて許容範囲外だったので、その問題がないRealtime Databaseを採用しました。Cloud Firestoreは今はBetaが外れたので、いずれ移行したいと考えています。
上記で分かるように、チャットボットを支えるのはすべてFirebaseの機能です。Firebaseだけで本当にいろいろなことができます。Firebaseの他の機能の説明は、弊社のエンジニアが詳しく書いてあるので、よかったらお読みください。
言語
Firebase Functionsの開発はTypeScriptを使っています。Functionsの開発言語はJavaScriptも選べます。ですが、SwiftでコーディングしているiOSエンジニアとして、型がないことは死活問題なので、型があるTypeScriptを選びました。
SwiftとTypeScriptは意外と似ていて書きやすかったです。機会があればこの2つの言語を比べたいと思います。
クライアントアプリ
クライアントアプリはGameWith本体のiOS/Androidアプリに、チャットボットから送るURLスキーム情報を受け取って、マルチ募集を自動で開始する処理を追加しました。
学んだこと
ここからが、プロダクト開発を通して得た知見です。チャットボットの成功の秘訣!とまではいかないですが、失敗しないための3つの知見を紹介します。
1. チャットボットだからこそ「ものすごく便利に」できることを考えよう
チャットボットは対話UIを通したアプリだと僕は思っています。アプリと同様、価値がないと判断されるとすぐ削除=ブロックされてしまうので、チャットボットだからこそ「ものすごく便利に」なる体験を提供しないといけません。
幸い、モンストユーザーの課題は明確です。マルチで遊ぶ仲間を募集するためには、モンストから一度募集メッセージをLINEに送信して、GameWithアプリにコピペしないといけないことです。
コピペの手間は大きくないかもしれませんが、ヘビーユーザーは1人1日、20回以上募集をかけているので、かなりストレスに感じるはずです。
マルチ募集チャットボットなら、そのものすごい手間がなくなるので、使う価値はあります。
リリース後、マルチ募集をかけているアプリユーザーの2割以上がチャットボットを使っているので、かなり多く使っていただいていると思います。
2.チャットボットのイメージを可視化してメンバーに伝えよう
チャットボットは画面がないので、サービスのイメージがパッと分かる一枚資料が作れません。
そこで、プロジェクト関係者にイメージ共有するため、公式ツールのLINE Bot Designerを使いました。
想定したユースケースを全部洗い出して、各ケースの会話シミュレーションを作りました。これが設計書になっていて、プロジェクト関係者に説明するときは、ユーザーになったつもりで、各ケースの会話の順番を追いながら説明して認識を合わせることができました。
モンスト攻略担当者がこれを見て、会話の内容を指摘してくれたし、デザイナーが直接これを使って、色の調整などをしてくれたので、とても使いやすいツールだと思います。
3. キャラクターを決めて、ボットに命を吹き込もう
マルチ募集のチャットボットは、「乃灯あろん(のとあろん)」というキャラクターで返事しています。あろんちゃんは開発部のデザイナーが心をこめて描いた(非公式)キャラクターです。
今まで、活躍するところが少なくて、GameWithアプリのチュートリアルぐらいでしか登場する場面がないですが、今回はチャットボットで登場してもらうことにしました。
そこで必要になるのがセリフですが、最初のリリースでは、「機能的」なセリフしか用意していなくて、モンストの募集メッセージ以外の言葉を送ると「ごめんなさい」としか返事できませんでした。
開発部内でもこれは切ないという声が上がったので、早速あろんちゃんの生みの親に、いくつかのキーワードに反応するセリフを作ってもらいました。そして実装したところ、ツイッターでちらほら画面のキャプチャをして拡散してくれるユーザーがいて、だいぶ盛り上がりました。
チャットサービスを使うと、ウェブと違ってユーザーは人と話す感覚になるので、愛用されるチャットボットになるには、こうした人間らしさが必要だと気付きました。
ちなみに「乃灯あろん」の名前は社内公募で決めました。名前の由来は英語のNot Aloneとかけて、マルチでゲームをするユーザーの手助けができるよう「あなた一人じゃない」「私がいます」という意味を込めています!
今後の展開
今は各種プロモーションを使ってマルチ募集チャットボットの認知度を上げています。
一定数のユーザーに使っていただけて、アプリのユーザー増加に十分貢献できると判断できれば、本格的にチャットボット開発に取り組みたいと考えています。
その際、チャットボットだからこそものすごく便利にできることって何だろう?を真剣に考えて、ユースケースを設計し直す必要があるので、さらに大きな挑戦になりそうです!
GameWithではチャットボットに限らず、様々な新規事業に挑戦しています。我も新規開発をしてみたい!という志を持つ方をGameWith開発部が募集中です!
興味があって話を聞いて見たいなぁと思った方は是非Wantedlyで会いに来てください! www.wantedly.com
エンジニア公式ツイッターもはじめてます。フォローをよろしくお願いします! Tweets by gamewith_dev twitter.com