のののののうらがみ

カレンダーの裏程度のことしか書いてないよ

Salesforceで恋愛シミュレーションゲームを作った話

この記事はSalesforce Advent Calendar 2021の25日目、最終日でございます。

前回から割と日が開かずに更新できました。
実は前回のブログ記事が、社内の割と大きめなSlackチャンネル(メンバー3桁台)で大公開されてしまうという個人的事件がありました。大後悔時代。ネットは怖い。ひとしきり震えて、こりゃ今後間違った情報とか、うっかりしたこと書けないな…と思ったところです。
休眠期間だったこのブログも、時世やリリースに合わせて、もっと人のタメになる、読んでるだけで頭が良くなったような気持ちになれる、アカデミックで有意義で正確な記事を更新せねばなという義務感に駆られたので、がんばってみようと思います。

そんなかんじで己を戒めておきながら、既になんか狂気じみたタイトルがついていて、わずか数十日前の反省を吹っ飛ばしていく不穏な空気ですね。
事前に言っておくと、正直なところこの記事は皆様の業務のお役には立たないだろう内容です。職場で読んだら怒られるかもしれません。
でも、今日はせっかくクリスマスのAdventCalendar枠を不遜にもかっさらったので、こんな日にこの記事を読んでくださってるあなたに向けて、キラキラでロマンチックなときめきを感じる記事にしたいんですよ。
もうそろそろ仕事納めじゃないですか。システム運用には年末などない?そうですね。でも楽しくいきましょう。

まえがき

注意:大概戯言なので超ヒマな人以外は 次のセクションまで読み飛ばして下さい

遡ること2ヶ月前の10月、私はそわそわしておりました。
十数年前まだ、現役女子高生だった頃、私は「ときめきメモリアルGirl's Side(通称ときメモGS)」というゲームを愛しておりまして、第1作から第3作まで、そりゃもう遊び尽くしました。

このゲームでは、とある高校生の女の子の3年間を操作して、勉強したりバイトしたり、色々な男の子と仲良くなってデートしたり、友達とお泊り女子会したりして過ごせます。
そして基本的には、卒業式の日に意中の人から告白されることを目指すゲームです。
時には三角関係になってしまったり、
恋ではなくとも固い友情で結ばれて終わったり、
秘めた想いを誤魔化して友達でいることに耐えきれなくなった男の子が主人公を奪いに来たり、
隣の家の小学生が窓から入ってきてスキンシップをしろと迫ってきたり、
主人公がオシャレだったが故に謎の女性に憑依されたり、
シリーズ全体を通して色々な結末を迎えることができます。
キラキラ女子高生生活に興味がある方はぜひお声掛けください。年季の入ったときメモGSコンサルタントが、ネタバレを回避してあなたに合ったシリーズ作品をピックアップしておすすめします。


余談の余談
ちなみに名前に聞き覚えがある方もいらっしゃるかと思いますが、元祖は「ときめきメモリアル」というゲームで、男子高校生の主人公が女の子と仲良く過ごすゲームです。
ヒロインの藤崎詩織ちゃんは攻略難易度がとても高いと言われており、その難易度はときメモGSの第1作にも引き継がれています。元祖は1と2をプレイしたんですが、ときメモGSをプレイ済みだったせいか、私は割と簡単に攻略してしまいました。さすがに難しかったのか、元祖もGSも、シリーズが進むに連れて少しずつ全体の難易度は下がってます。
元祖ときメモをプレイしたときも最初のうちは、一緒に下校しようとして冷たく断られたり、清潔感が足りなくてクリスマスパーティは出禁にされるんですけどね。ひどい。許さんぞ。

さて、
その「ときめきメモリアルGirl's Side」シリーズ最新作である「ときめきメモリアル Girl's Side 4th Heart」が、2021年10月28日発売になったのです。

正直、今更アラサー既婚の私でも高校生生活を一緒になって楽しめるのかなとか、
GS1〜3作目の制作陣がKONAMIさんから大勢退職していることとかもあり、もはや別ゲームになってしまっているのではないかとか、最初は不安しかありませんでした。
GS3は発売日当日になけなしのお小遣いを使って一番豪華な初回限定版セットを買ったのに、お金に余裕ができた今となっては買うか迷う。
ただ、恐る恐るダウンロードして始めてみたら、少々気になるところはあれど、まあなんだかんだ各種システムや音楽が懐かしくて、結構楽しめました。
ちゃんとお気に入りのキャラクターもできたし。

リアル高校生時代と差を感じたのは、そのキャラをなぜ好きになったかというところ。
その昔は、キャラの声優さんが好きだったからとか、年上キャラだからとか、眼鏡かけてるとか銀髪だとかの見た目で好きになるとこともあったんです。
ただ、今回GS4発売前にサイトで情報を眺めてみても、誰にも特段興味がわかないんです。ただ、実際プレイしてみて初めて興味を持ったキャラがでてきました。
つまり、年齢やビジュアルで選んでいないんですよ。
実際に話して、交流を重ねて、考え方や好みを知っていくことで、その人の評価が変わってくる。

これって実際の人付き合いでもそうですよね。
私も生涯のパートナーと決めた夫は、別にディーン・フジオカでも吉沢亮でもないですが、いつの頃からか私にとっては最高に素敵な人だと胸を張って言えるようになってました。

なお、お世話になったことはないですが、マッチングアプリや結婚相談所のCMなどを見る限り、マッチすることに重きを置きすぎている気がします。
ちょっともったいなくないですか。

日焼けが嫌いで、温厚な年上の振る舞いに安心感を覚えるタイプだと思っていた私でも、ある日突然、サーフィン好きで懐かないタイプの後輩に惹かれることもあるんです。
趣味が一致することは、価値観が一致することとイコールなわけではない。
「教員同士じゃないと嫌だな」「アウトドアな人はちょっと…」「年収が私以下か…」とふるいにかけてしまった人の中にも、価値観の合う人や、新しい世界を見せてくれる人がいるかもしれない。

そう、今まで入ったこともないお店の前を通って、全然好きじゃなかったタイプの雑貨を見て
「あ、これ、あの人が好きそうかも…?」と思って反応を思い浮かべちゃう、
そういうときに人はときめきを覚えるんじゃないでしょうか!!!!!!!!!

そこで、いわゆるスペックなどに重きを置くのではなく、価値観や居心地の良さ重視で人と交流するサービスがあればいいなと思ったのです。
ただ、人を知る為には時間が必要です。どうしても、時間と会話を重ねることが必要。
その為に毎日のように多くの人とデートができますか?無理でしょう。

…しかしながら、私はやっています。ときメモGSの中で。
つまり、相手と会わずしてデートをして、いろいろなところに行って、会話を重ね、自分を知ってもらう事ができれば、好きになってくれる人がいるかもしれない!
自分の分身にデートに行ってきてもらったり、他人の分身とデートするんです。

これだ。作るしかない(私が遊びたいから)。
さて、サービスを作ると言っても、一体何で開発するか。
いや、私にできることなんてたかが知れています。

Salesforceで、ノーコードで恋愛シミュレーションゲーム作っちゃえ〜(錯乱)


やっと本編

大変お待たせしました。なんだかクソアプリ Advent Carenderの様相を呈してきましたが(好きだけど)、ここからは作ったものと、使った機能の紹介していきます。

作ったもの

「ときめきフォース〜Cloud Side 1st Love〜」です。
ユーザはExperience Cloud サイトに接続し、ログインをしてサービスを利用します。

f:id:nnn123:20211223211416p:plain
ログイン画面

サイトにログインすると、ホーム画面では他のユーザと交流するChatter画面が出てきます。このページ上部にあるボタンから、デートに出かけることができます。

f:id:nnn123:20211223211555p:plain
ホーム画面

そして肝心のデートに出かける際のイベント画面は、みんな大好き!フローを使っていきます。
もう真面目な読者の皆さんは既に疲れてきていると思うので、最初に実際に動いている画面を貼っておきます。


ときめきフォースdemo


こんな感じです。
デートの流れとしては、最初にデートに出かける場所を選択します。当日になり、デートに行くための服装の系統を選択したら、会話が発生します。会話が弾むような選択肢を選び、会話を楽しみましょう。そして帰ってきてデートが終わるタイミングで、デート結果が反映されたレコードが作成されるので、結果を確認します。

実装の中身

カスタムオブジェクトを気持ちの赴くままにどんどん作ります。取引先と関連づけたり、カスタムオブジェクト同士に主従関係をつけたりしながら、合計5つ作りました。

f:id:nnn123:20211223212824p:plain
スキーマビルダーちゃん

各オブジェクトの中身はざっくりこんな感じです。
キャラ:ユーザが作る、自分の分身キャラクターレコードが入っています。自分以外のユーザが作ったキャラと、デートに出かけます。
ユーザは、デート相手が着てきたら嬉しい服のイメージを「キャラ」レコードに事前登録しておきます。デートをしたユーザの選択と一致すると、好印象となるポイントが得られます。
また、楽しいデートができたときに相手にかけてあげたいセリフなど、いろいろな情報を事前登録しておきます。
デートマスタ:デート場所とキャラを結びつける役割のレコード情報が入っています。
選択肢マスタ:デート中の選択肢イベント情報と、その評価ポイント情報が入っています。
場所マスタ:デート場所の情報レコードが入っています。
デート結果:デートに出かけた結果が格納されるオブジェクトです。デートで得られた評価ポイントを確認することができます。ここは数値ではなく、「好印象」「う〜ん」くらいのざっくりした範囲表示にしてもいいかなとは思いましたが。


フローの中身ですが、使用した変数の中身こそ多いものの、基本は一本道です。
複雑な分岐は発生しておらず、また、ほとんどが[画面]要素のみという、なんともシンプルなものです。

f:id:nnn123:20211223213805p:plain:h480
フロー

細かいことは書きませんが、どんどん変数を作り放題して、デバッグしながら挙動を確認していきます。
デバッグの際はカスタマーユーザとして実行することもできるので、テスト用のユーザを実行者として指定しながら、変数の動きを眺めて調整していきます。

f:id:nnn123:20211223221617p:plainf:id:nnn123:20211223222245p:plain
デバッグ画面

最後にレコードを作成する要素を追加して、カスタム項目内に出来上がった変数を放り込めば、あっという間にレコードを自動生成するフローの完成です。
フローをエクスペリエンスサイトに埋め込んでデプロイすれば、とりあえずデート機能の完成です!

特に役に立たない感想

今回の機能は「フローとサイトでちょっと遊んでみたいな」という程度の軽い気持ちで作ってみたのですが、本当に「なんで作った」みたいな感じになってしまいました。着地点が迷子すぎて。書きながら私が一番混乱してます。ごめんなさい。。。
こんな感じのデート機能を、業務に無理に生かそうとするなら、なんだろう、事務処理系レコード作成系とかですかね。
選択肢の中からどれか一つを選んでもらって、その結果を分析するとか?・・・それなら普通にアンケート使うことをお勧めしますけどね!!!!!

そんなわけで今回は最初に申し上げたとおり、何の役にも立たない記事になっちゃいましたが、フロー に馴染みのない方がちょっと面白そう!と思ってくれたり、「Salesforce、やろうとすればなんでも作れるんだな」くらいの感想を持ってもらえればもうそれだけで十分です。
今回作った環境も特別なものではなく、Trailheadから払い出したPlayground環境環境ですので。ぜひ皆さんも気持ちの赴くままに変なアプリケーション作ってみてください。

そんなわけで今年も本当にありがとうございました。
来年はもうちょっとマシな記事を!書くので!!Tableau CRMネタならあるんです!!!
本当はレシピvsデータフロー三番勝負とか、好きなデータフロー変換ランキングとか、書きたいんです!!全然まとめていないだけで!!!!
何卒!!どうぞよろしくお願いいたします!!!