【おはようカノジョ9日目】動的シーン選択への移行
はじめに
「おはようカノジョ」は、毎朝7:30に彼女たちが「いってらっしゃい」を届けてくれるBotです。
でも、ふと思った。
毎日同じポーズでいいのか?
玄関で手を振る姿は可愛い。でも、それが7日間続いたら? 1ヶ月続いたら?
「今日はどんな姿で送り出してくれるんだろう」
そんなワクワクがあったほうが、毎朝見たくなる。
というわけで、動的シーン選択の仕組みを作った話。
改修前:固定ポーズの世界
最初の設計では、ポーズはキャラごとに固定されていた。
キャラ定義(YAML) → 固定ポーズ → 画像生成たとえば月子なら「口元に手を当てて、見守るような微笑み」。
陽なら「元気に手を振る、明るい笑顔」。
キャラごとに違いはあるけど、同じキャラは毎週同じポーズになる。
固定ポーズの限界

運用を始めて気づいた。
月曜の月子は、毎週同じ構図
変化があるのは天気に応じたセリフくらい
「見たことある」感が出てくる
彼女たちには、もっといろんな表情があるはず。
シーンシステム導入
そこで、23種類のシーンを用意した。一部を紹介すると……
立ちポーズ系(例)
自信ある立ち姿
優しく手を振る
控えめに見送る
朝の伸び
玄関・廊下系(例)
玄関で見上げる
壁に寄りかかる
振り返って見送る
ドアからひょっこり
座りポーズ系(例)
リラックスして座る
頬杖をつく
コーヒー片手に
階段に座って待つ
ベッド系(例)
横向きで頬杖
うつ伏せでこちらを見る
起き上がり、枕を抱えて
丸まって眠そう
毎朝、この中からキャラに合ったシーンが選ばれる。
改修後:動的選択の世界
新しいフローはこうなった。
キャラ定義(YAML) → シーン選択 → 画像生成
├─ 重み付き抽選
├─ 履歴参照(重複回避)
└─ 天気・季節考慮ポイントは、完全ランダムではないこと。
キャラの個性に合わせて、選ばれやすいシーンと選ばれにくいシーンがある。
キャラ特性による重み付け
各キャラには「朝タイプ」を設定した。
early_riser(朝に強い、準備万端):
月子、陽、凛華、るな
sleepy(朝に弱い、寝起き感):
しずく、まひる、日和

early_riser のキャラは、立ちポーズ系や玄関系が選ばれやすい。
シャツもきちんと着ていて、すでに準備万端な雰囲気。
sleepy のキャラは、ベッド系や座り系が選ばれやすい。
まだ眠そうで、髪も少し乱れている。
さらに、キャラごとに「好みのシーン」「避けるシーン」も設定した。
まひるはベッドでまどろむシーンが似合う
凛華はベッドでゴロゴロしてるイメージじゃない
るなは元気に伸びをしてそう
こうして、同じ「朝」でも、キャラごとに違う景色が生まれる。
ChatGPTからの「破壊的提案」
実は、このシステムを作るきっかけになった出来事がある。
開発中のビジュアルをChatGPTに見せたら、こんな指摘をもらった。
「視線ルール」を固定しろ
視線=関係性。これ固定すると、言葉が半分でも伝わる。
「朝の体温差」を作れ
天候より「起床コンディション」を混ぜろ。雨より効く。
……なかなか手厳しい。でも、的を射ていた。
この提案をどう実装したかは、また別の記事で詳しく書く予定。
履歴参照で重複回避
シーンが23種類あっても、同じシーンが連続したら意味がない。
そこで、直近の履歴を参照して、最近使ったシーンは選ばれにくくする仕組みも入れた。
直近2回以内に使用 → 重みを90%減
直近7回以内に使用 → 重みを50%減
これで「また同じだ」を防ぐ。
お披露目は12/26
さて、この動的シーン選択、実装は完了している。
でも、初お披露目は12/26になる。
なぜかというと、12/21〜12/25はクリスマスイベント期間。
この期間は特別な衣装とシーンで彼女たちが登場するので、通常のシーンシステムはお休み。
クリスマスが終わって、12/26の朝。
そこで初めて、この新しいシステムが動き出す。
どのキャラが、どんなシーンで現れるか。
私自身も楽しみにしている。
まとめ
固定ポーズから、23種類のシーンによる動的選択へ
キャラの「朝タイプ」で選ばれやすいシーンが変わる
履歴参照で重複を回避
毎日同じようで、毎日違う
「今日はどんな姿かな?」
そう思って見てもらえる朝を、これからも作っていきたい。
明日は「イベント対応の設計」について書く予定。
クリスマス期間中の特別仕様がどう動いているか、技術的な話をしていきます。
👉「おはようカノジョ」は @ohayo_kanojo で毎朝7:30に投稿しています。
