【個人開発】「闘病垢」専用の16タイプ診断テストを作った話

備忘録

はじめに

なぜ、私たちは性格診断に惹かれるのだろうか。
特に、病気と向き合う「闘病」という孤独な戦いの中では、自分の思考の癖や、他者との関わり方を客観視したいという欲求がいっそう強くなる。

私自身、ある病を抱えながら日々を過ごしている。いわゆる「闘病垢」の中の人だ。
界隈を見渡すと、MBTIなどの性格診断が非常に好まれている。だが、既存のモデルはあくまで一般向けだ。「パーティで中心になるのが好きか?」と聞かれても、今の私たちには響かない。
「薬を飲み忘れないか」「主治医に本音を言えるか」、そういう切実なコンテキスト(文脈)が必要なのだ。

山猫シロ
山猫シロ
なら闘病に特化した16タイプ診断を作ればいい!

そう思い立ち、信頼性の高い心理学モデル「Big Five(ビッグ・ファイブ)」をベースに、独自のアルゴリズムを組んで実装したものが以下のものである。

闘病垢 - メンタル16タイプ診断
闘病垢ユーザーのためのメンタル16タイプ診断を紹介する。管理・対人・感情・認知の4軸から心の扱い方の傾向をゆるく確認でき、自分のスタイルを知る助けになる。PSEIタイプの特徴や相性の良いタイプも解説し、日々のメンタルケアに役立つ内容になっている。

本稿では、単なるコード解説にとどまらず、そして心理学理論をどう技術に落とし込んだかという設計の裏側を共有したい。

スポンサーリンク
スポンサーリンク

診断システム:4つの軸とアルゴリズム

まずは骨組みとなるシステムの話をしよう。
複雑に見える診断も、分解すればシンプルな数値処理だ。

この診断では、以下の4つの軸(Axis)を設定した。

  1. Management(管理): 自分の体調や生活をどうコントロールするか。
  2. Relation(対人): 医師や支援者、周囲とどう関わるか。
  3. Emotion(感情): 不安や感情の波をどう処理するか。
  4. Cognition(認知): 予期せぬ不調に対して、計画的か直感的か。

1. 「逃げ道」を塞ぐ偶数スケール

回答の入力にはリッカート・スケール(Likert Scale)を採用したが、ここには小さな意地悪を仕込んだ。
「1から6」の偶数スケールだ。

  • 1: そう思わない(極端)
  • 6: そう思う(極端)

「どちらとも言えない(3.5)」は存在しない。
ユーザーに「強いて言うならどっち?」という微細な決断を強いる。この強制力が、診断の解像度を高める。

2. 逆転項目によるノイズ除去

全ての質問に「はい」と答えるようなバイアスを防ぐため、逆転項目(Reverse Items)を実装した。
例えば、「私は計画的だ」と「私は行き当たりばったりだ」は、同じ軸のプラスとマイナスだ。
システム内部では、特定の質問(5, 11, 12問目)に reverse: true フラグを持たせ、以下の式で反転処理を行う。

$$Score_{actual} = 7 – Score_{input}$$

これらは基本的な実装だが、診断の信頼性を担保する重要な土台だ。

理論と実装の狭間:Big Fiveをどう「翻訳」したか

ここからが本題だ。
なぜこの診断が、単なる「占い」ではなく実用的なのか。それはバックエンドで「Big Five(5因子モデル)」が動いているからだ。

Big Fiveは、人間の性格を「協調性」「外向性」「開放性」「誠実性」「神経症傾向」の5つで説明する、現代心理学で最もスタンダードな指標だ。
しかし、そのまま実装しても意味がない。「闘病」という特殊な文脈に合わせて、意味を再定義(翻訳)する作業こそが、開発の中で最も苦労し、かつエキサイティングな工程だった。

私が実際にどのようにして、学術的な定義を「闘病あるある」な質問文へと落とし込んだか。その思考プロセスの一部を公開する。

エピソード1:キラキラした「外向性」を捨てる

Big Fiveにおける「外向性(Extraversion)」は、一般的に社交性や活発さを指す。
教科書的な質問を作るなら、「パーティに行くのが好きだ」「初対面の人ともすぐ打ち解ける」となるだろう。

しかし、闘病中の人間にその質問をして何になる?
私は悩んだ末、この指標を「Relation(対人)」軸として再定義し、「援助希求能力(Help-seeking)」に特化させた。

  • 翻訳の思考:
    • 外向性が高い = エネルギーが外に向く。
    • 闘病においてエネルギーが外に向くとは? = 「辛い時に『助けて』と外に発信できること」ではないか?
    • 逆に内向的とは、独りで内省し、自立して耐えることではないか?

こうして生まれたのが、以下の質問文だ。

「困ったことがあった時、すぐに誰かに相談する方だ」

キラキラした社交性ではない。泥臭く、生存に必要な「つながる力」を測る指標へと書き換えたのだ。

エピソード2:「誠実性」を「服薬管理」へ

次に「誠実性(Conscientiousness)」。これは計画性や勤勉さを表す。
通常なら「部屋はいつも片付いている」「約束を守る」などが質問候補になる。

だが、体調が悪い時に部屋なんて片付くわけがない。
ここで私は、誠実性を「Management(管理)」軸へと変換した。闘病において最も「勤勉さ」が求められる瞬間、それはセルフケアのルーチンワークだ。

  • 翻訳の思考:
    • 誠実性が高い = 決めたことをやり遂げる意思力。
    • 闘病における最大の規律は? = 「薬を飲み忘れない」「通院日を守る」「生活リズムを崩さない」

そこから、あえて少し堅苦しいこの質問を採用した。

「自分の体調や症状の変化を、細かく記録・把握している」

これは単なる性格診断ではない。「あなたは自分の体をマネジメントできているか?」という問いかけでもある。

マッピングの全体像

最終的に、Big Fiveの因子は以下のようにシステム上の4軸へとマッピングされた。

診断システムの軸 ベースとなったBig Five因子 翻訳後のコンテキスト(質問の意図)
Management 誠実性 / 神経症傾向 治療計画へのコミットメント、セルフモニタリング能力。
Relation 外向性 ソーシャルサポート(医師・家族)へのアクセス頻度。
Emotion 神経症傾向 / 外向性 感情の揺れ動きを、外に出して発散するか、内で処理するか。
Cognition 開放性 / 誠実性 予期せぬ不調に対し、マニュアル通り動くか、直感で動くか。

タイプ決定:二分法による「戦い方」の提示

データの入力と翻訳が終われば、最後は出力だ。
各軸の平均スコアを算出し、4.0を閾値として二分する。

$$
\text{Axis}_\text{avg} =
$$

$$
\frac{\sum (\text{Question}_\text{score})}{3}
$$

例えば、Relation(対人)のスコアが高ければ「S (Social)」、低ければ「I (Individual)」となる。
ここで重要なのは、「Sが良い、Iが悪い」ではないという点だ。

  • S (Social): 人に頼るのが得意。しかし、依存しすぎるリスクもある。
  • I (Individual): 自立心が強い。しかし、孤立して抱え込むリスクがある。

Big Fiveという「ものさし」を使って、ユーザーに「あなたの戦い方はこれだ。だから、こういう落とし穴に気をつけろ」という戦略(コーピング)を提示する。
ここまでやって初めて、このツールは完成する。

まとめ

技術的な実装(コード)は、チャットボットに聞けば誰でも書ける時代だ。
しかし、「誰の、どんな痛みのために、どの理論をどう適用するか」という翻訳作業は、人間にしかできない。

山猫シロ
山猫シロ
痛みという感覚は人にしかわからない…ってね

今回の開発で言えば、Big Fiveという心理学の知見を、闘病という文脈に合わせて徹底的に翻訳し直したこと。これこそが、この診断が多くのユーザーに受け入れられた理由だと確信している。

コメント