0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

診断サービスの64結果管理:ラブタイプ診断を例に型・URL・文言を分ける

0
Posted at

診断サービスの拡張は、結果数を増やす作業ではなく、変更単位を小さくする作業です。 16タイプを64パターンに広げると、結果文だけでなく、URL、OGP画像、シェア文言、一覧の管理単位も増えます。

ここでは Love Character 64 を例に、ラブタイプ診断64 の結果を「64件のフラットな配列」ではなく「16 × 4 の合成モデル」として扱う設計を整理します。

なぜ64件のフラット管理がつらいのか

対象 フラット管理で起きること 後で困ること
結果文 64件ごとに全文を持つ 表現修正が全体に散る
画像/シェア文 各結果で個別に設定する 微修正のたびに漏れが出る
URL 完了画面の状態に寄せる 再訪や共有で復元しづらい
一覧 結果配列を並べるだけにする 分類や絞り込みが後付けになる

結果をBaseTypeとSubTypeに分ける

まず、16個の基本タイプと4つの差分を別の設定として持ちます。

const baseTypes = {
  LCRO: {
    coreTraits: ["情熱的", "主導的"],
  },
  // ...
} as const;

const subTypes = {
  VD: {
    behaviorStyle: "気持ちを素直に表現しやすい",
  },
  // ...
} as const;

type BaseType = keyof typeof baseTypes;
type SubType = keyof typeof subTypes;
type ResultCode = `${BaseType}-${SubType}`;

ResultCode は、表示だけでなくURL、OGP画像、シェア文言を結ぶ共通キーにします。

const baseTypeKeys = Object.keys(baseTypes) as BaseType[];
const subTypeKeys = Object.keys(subTypes) as SubType[];

const resultCodes = baseTypeKeys.flatMap((base) =>
  subTypeKeys.map((sub) => `${base}-${sub}` as ResultCode),
);

16タイプから64タイプへ広げる結果モデル

何を16単位、4単位、64単位で持つか

全部を合成に寄せると、結果が機械的になります。逆に全部を64件で持つと、修正が重くなります。

管理対象 推奨単位
基本性格・反応 16 BaseType
恋愛中の見え方 4 SubType
URL slug 64 ResultCode
OGP画像キー 64、または BaseType + SubType
meta title 64
注意書き・安全な距離感 全体共通、または4 SubType

つまり、合成は「文を機械的につなぐ」ことではなく、編集単位を分けることです。最終表示文は64通りでも、内部では BaseType.coreTraits + SubType.behaviorStyle + safetyNote のように参照元を分けておくと修正範囲を狭められます。

ResultCodeをURLから逆算できるようにする

診断結果を完了画面だけに置くと、共有先で「どの結果か」「再診断はどこか」が曖昧になります。Next.js の静的ルートなら、ResultCode からパスを作っておくと扱いやすいです。

function getResultPath(code: ResultCode) {
  return `/lovecharacter64/${code.toLowerCase()}`;
}

export function generateStaticParams() {
  return resultCodes.map((code) => ({
    type: code.toLowerCase(),
  }));
}
パス 役割 設計上の意味
/lovecharacter64 診断入口 初回利用と再診断の入口
/lovecharacter64/quiz 回答画面 質問状態を閉じ込める
/lovecharacter64/results 結果一覧 64タイプ全体を探索できる
/lovecharacter64/{resultCode} 個別結果 例: /lovecharacter64/lcro-vd

実装例として、自作のラブタイプ診断64 では入口、一覧、個別結果を分けています。個別結果URLがあると、結果ページ -> SNS共有 -> 新規訪問 -> 一覧/再診断 の流れを作りやすくなります。

実装例のラブタイプ診断64入口画面

文言は生成ではなく管理単位を分ける

ラブタイプ診断64 を、恋愛タイプ診断 や 64タイプ恋愛診断 として読む人もいます。さらに「恋愛MBTI診断」「LoveType16診断」の近くで理解されることもあるので、公式診断や科学的判定に見せない線引きは必要です。

  • 「必ず当たる」と読める表現にしない
  • 相性や恋愛傾向を最終判定のように書かない
  • 結果名だけでなく、距離感・甘え方・自由さなどの読み物にする
  • OGP文、本文、注意書きのトーンを共通ルールでそろえる

実装前チェックリスト

  • 64結果を1枚の巨大な配列としてだけ扱っていないか
  • BaseTypeSubType の役割が説明できるか
  • ResultCode がURL、画像、シェア文言の共通キーになっているか
  • 公開URLの大文字/小文字ルールが決まっているか
  • 一覧ページと個別結果ページの役割が分かれているか
  • 診断文案が公式・科学的・断定的に見えすぎないか

型、URL、文言、導線を分けると、細かい体験を運用しやすくなります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?