「……なんで全員、同じ顔してるんだ」
3,000字のAI小説を読み返す。主人公が怒る場面で「怒りで拳を握りしめた」。ヒロインが泣く場面で「涙が頬を伝った」。感情のピークがどこも同じ温度で、全員が同じ反応をしている。出力し直しても、言い回しが変わるだけで「薄さ」は変わらない。
AIがキャラの感情を「薄く」書く構造的な原因
AIが出力する感情描写が薄いのは、感情を「ラベル」で処理しているからだ。
「怒り」というラベルを受け取ると、AIは学習データ上の最頻出パターンを返す。拳を握る、声を荒げる、目を細める——どのキャラでも、どの場面でも、同じラベルには同じ動作が対応する。
人間の感情は1枚岩ではない。怒っているのに泣きそうな人がいる。悲しいのに笑う人がいる。感情は常に複数の層が重なっていて、その「ズレ」がキャラの個性を作る。
プロンプトに「怒りを表現して」と書くのは、ラベルを1枚渡しているだけだ。AIにラベルの裏側にある層を教えなければ、出力は薄いままになる。AI小説のキャラが崩れる原因と対策では設定の一貫性を扱ったが、今回のテーマは深度——同じキャラでも場面ごとに異なる厚みを持たせる方法だ。
感情に「3つの層」を持たせるプロンプト設計
感情の薄さを解決するには、プロンプトに「表層」「中層」「深層」の3つを明示する。
以下は怒りの場面の完成形プロンプト。
あなたは小説家です。以下の設定に基づいて、キャラクターの感情が複数の層で表現されるシーンを執筆してください。
【キャラクター】
- 嶋田 紘、29歳、救急救命士。現場では冷静だが、プライベートでは言葉が足りない
- 上条 葵、25歳、データサイエンティスト。合理的で、感情より事実を優先する口癖がある
【場面】
深夜の救急待合室。嶋田の当直が終わった直後。上条が手の包帯を替えに来ている。上条が転職を告げる。
【感情の層設計】
嶋田の感情:
- 表層(見える反応): 無言。コーヒーの紙コップを潰す
- 中層(本人が自覚している感情): なぜ自分に相談しなかったのか、という怒りに似た焦り
- 深層(本人も気づいていない感情): 毎週ここで会える口実がなくなることへの恐怖
【演出ルール】
- 表層は動作と沈黙だけで表現する
- 中層は内面独白1文で示唆する(「なぜ——」で止める程度)
- 深層は絶対に言語化しない。読者が推測できる「間」を作る
- 「怒り」「悲しい」「寂しい」は使用禁止
【分量】600字程度
ポイントは**「感情の層設計」ブロック**。表層・中層・深層を分けて指示すると、AIは「怒り」の一枚岩ではなく、表面の反応と内側で進行している感情を別々に処理する。深層を「言語化しない」と制約をかけることで、読者が自分で読み取る余白が生まれる。
before/afterで体感する「層」の効果
同じ場面を、層の指示なし/ありで出力させた結果を並べる。
層の指示なし(before) 嶋田は上条の言葉を聞いて、怒りを感じた。なぜ相談してくれなかったのか。拳を握りしめ、「勝手にしろ」と言い放った。上条は驚いた顔で嶋田を見つめた。嶋田は後悔したが、言葉を取り消せなかった。
層の指示あり(after) 「——転職、するんだ」 紙コップが歪んだ。コーヒーが親指の爪の間に染みる。熱い。嶋田はそれを拭かなかった。 上条が包帯を巻く手が止まっている。待合室の蛍光灯が一本だけ明滅して、二人の影が揺れた。 「いつから」 「先月」 先月。先月の木曜日、同じこの椅子で、上条はいつもと同じようにコンビニのサンドイッチを半分くれた。何も言わずに。 嶋田は立ち上がった。「当直、もう一本入る」と言って廊下に出た。振り返らなかった。
▶ 変えたのは「怒り」を3層に分解して、表層を動作、中層を断片的な回想、深層を読者の推測に委ねたこと。
afterでは「怒り」「悲しい」「寂しい」が一語もない。それなのにbeforeより感情が厚い。表層の「紙コップが歪んだ」、中層の「先月——」という回想、そして深層の「振り返らなかった」に読者が「行かないでほしい」を読み取る。
以下の空テンプレートの {} を自分の設定で埋めれば、どんな感情の場面にも転用できる。
あなたは小説家です。以下の設定に基づいて、キャラクターの感情が複数の層で表現されるシーンを執筆してください。
【キャラクター】
- {名前A}、{年齢}歳、{職業}。{性格を動作で示す1文}
- {名前B}、{年齢}歳、{職業}。{性格を動作で示す1文}
【場面】
{場所}。{状況を1-2文で}。
【感情の層設計】
{キャラ名}の感情:
- 表層(見える反応): {動作・沈黙・声のトーンなど外側から観測できる反応}
- 中層(本人が自覚している感情): {内面独白の断片。完全な文にしない}
- 深層(本人も気づいていない感情): {読者だけが推測できる感情。本文中では言語化しない}
【演出ルール】
- 表層は動作と沈黙だけで表現する
- 中層は内面独白1文で示唆する
- 深層は絶対に言語化しない。読者が推測できる「間」を作る
- {この場面で禁止する感情語リスト}
【分量】{字数}程度
記入例は「怒り×救急待合室」の1パターンだけ。告白、別れ、再会——場面タイプ別の記入例付きフルキットはBL Prompt Kit(BOOTH)に収録している。
なぜ「層」を分けると感情が厚くなるのか
情報設計の世界に「不完全な情報ほど記憶に残る」という原則がある。ツァイガルニク効果と呼ばれるもので、未完了の情報は完了した情報より強く脳に留まる。
小説の感情描写でも同じことが起きる。「怒りを感じた」と書くと、読者の脳は「情報を受け取り済み」と判定して処理を終える。だが「紙コップが歪んだ。コーヒーが爪の間に染みる」と書くと、脳は「なぜこの人は紙コップを潰しているのか」を自分で補完しようとする。補完のプロセスそのものが、感情の体験になる。
3層設計は、この補完を意図的に設計する手法だ。表層で「何かが起きている」とシグナルを送り、中層で方向性をほのめかし、深層を空白にすることで読者を物語の中に引きずり込む。
感情描写を「見せる」技術と組み合わせれば、「薄い」感情描写は構造的に解消できる。キャラの感情設計をAI間で使い回すならキャラノート(β)でシートを管理すると、場面ごとの層の設計が一貫する。
まとめ
- AIの感情描写が薄いのは、感情を「ラベル1枚」で渡しているから。表層・中層・深層の3層に分解してプロンプトに書く
- 表層は動作、中層は断片的な独白、深層は書かない。読者の補完が感情の厚みを作る
- 空テンプレートの
{}を埋めれば、怒り・悲しみ・喜び——どの感情にも転用できる
感情の層設計を自分のキャラで試してみてほしい。全感情パターンの記入例と応用テンプレートはBL Prompt Kit(BOOTH)で確認できる。
CharaNote開発日記
「AIに口調を守らせたい」——この記事で紹介したテンプレートを、もっと直感的に管理できるツールを作っています。
CharaNoteは、キャラ設定シートをAIが読める形式で保存し、どのAIツールにもワンクリックで渡せるキャラ管理アプリです。現在クローズドβに向けて開発中。
進捗や先行アクセスの案内はCharaNote公式で。