# 3桁の性格・関係別相性の編集仕様

確認日: 2026-09-22（日本時間）

実装: `src/lib/readings.ts`。外部の気学専門家による監修は未実施。この文書と本文は、伝統的な九星・五行を入口にした**九星日和独自の編集**を説明する。実証された性格検査、相手との成功確率、伝統的な特定流派の公認鑑定方式ではない。2026-09-22のユーザー指定により、相性に独自の点数と3段階のラベルを追加した。以前の「点数を出さない」製品方針を更新したもので、科学的根拠が得られたことによる変更ではない。

## 入力と3つの役割

3桁の順はユーザー指定の本命星・月命星・日命星。暦の計算結果である `CalendarCandidate` の `year / month / day / code` だけを受け取る。性別・氏名・年齢・日記の点数は解釈に使わない。

| 桁 | アプリで読む場面 | 根拠の区分 |
|---|---|---|
| 年・本命星 | 基本の姿勢、大切にしたいこと | 本命星という伝統上の区分を使う。具体的な役割名と文案は独自編集 |
| 月・月命星 | 人との関わり方、相談・働きかけ | 独自編集。月命星を一律に「対人」とする公認規則を確認したわけではない |
| 日・日命星 | 日々の反応、返事や行動のペース | 独自編集。日命星の計算法・境界の留保は暦仕様に従い、表示名は「日命星（試算）」 |

西野神社の説明では本命と月命に別の役割を与え、月命について精神・感情・性格に言及している。本実装の役割表はその記述の転載・再現ではない。「年が本質、月が本当の内面、日が必ず現れる反応」など、人の姿を固定する表示はしない。西洋圏の Nine Star Ki にある第三の数字と、生まれた日の九星を混同しない。

節入りや日界のため候補が複数ある場合、このAPIは候補を平均・投票・多数決で一つにしない。画面側が候補を明示して一組ずつ渡す。相性では両者の候補の組をそれぞれ表示する。

## 性格の読み合わせ

1. 9星それぞれに、既存 `STAR_DATA` と整合する短い「大切にすること・関わり方・反応・振り返り・小さな行動」を独自に執筆する。同じ五行でも、三碧の試す動きと四緑の調整、二黒・五黄・八白の違いなどを残す。
2. 同じ星が3つ、同じ星が2つ、異なる星で同じ五行が重なる、3つの五行が異なる、という構成を読み分ける。星が2つ重なるときは、どの役割に重なるかも説明する。
3. 年—月・月—日・年—日の五行関係を参照する。相剋を欠陥とせず、目的と応じ方を分けて考える目印として扱う。相生や比和にも、確認を省かない注意点を添える。
4. 総合文と行動提案では必ず年・月・日の星固有の内容を使う。星別の既存説明を3つ貼り付けるだけにせず、反復する持ち味と別の視点、共通の五行の中の違いを接続する。同じ注意点は重複させない。

例: `258` は3つとも土だが、基本の安心、関わる際の整理、反応としての見直しを区別する。`113` と `131` は同じ星の集合でも、行動に入る場面が違うため文章が変わる。

## 相性の読み合わせ

- 同じ役割同士の3層、つまり年対年・月対月・日対日を、既存 `compareStars` で比較する。各層の星番号と比和／相生／相剋の向きを返す。9通りの交差比較を行う方式ではない。
- 比和は既存実装どおり「同じ五行」で判定し、全く同じ星も含める。八雲院の九星相性の説明では同一星を比和から分けており、扱いが異なる。本アプリは五行段階の分類を採用し、同一星については「同じ星でも実際の希望は聞き合う」と補足する。流派間で一致した方式とは表示しない。
- 相生の向きが層によって入れ替わる、比和の層と相剋の層が併存する、全層が比和・相剋となる等を総合文に反映する。本命の結果だけで全体の見出しを決めない。
- 相性の詳細と助言全体では両者の年・月・日、計6つの星の持ち味を参照する。総合文は短い結論にし、年の持ち味は強み、月の関わり方は次の一歩、日の反応は立て直し方と会話例に反映する。同じ五行に属していても、異なる星を同じ人物像に潰さない。
- 3層を同じ重みで平均した、独自の相性点を表示する。相性率、恋愛成就率、人物の優劣、結婚・採用の適否を意味しない。
- 当事者を逆にしたとき、相生・相剋の向きも反転する。誰が支配すべきか、誰が奉仕すべきかという規範にしない。

例: `139` 対 `193` は年が比和、月は木が火を生み、日はその逆向きになる。相生の向きが入れ替わるため、いつも片方だけが支える前提にしない。`111` 対 `199` は年の共通点だけで全体を同じとはせず、月・日を別々に相談する。

### 独自の点数・ラベル

配点は公開一次資料や調査報告から導いたものではなく、ユーザーの「数値とわかりやすい評価がほしい」という要望に対して設定した製品上の目安である。

| 各層の関係 | 配点 | 層の短い表示 |
|---|---:|---|
| 相生（どちら向きでも同点） | 90点 | 助け合いやすい |
| 比和 | 85点 | 共通点が多い |
| 相剋（どちら向きでも同点） | 45点 | すれ違いに注意 |

合計は `Math.round((年の点 + 月の点 + 日の点) / 3)`。年だけを重くしない。当事者を入れ替えても同点になる。性別は使わず、恋愛・友人・仕事・家族・その他の選択でも点数は変えない。生年月日の境界で候補が複数ある場合、候補ごとに別々に計算する。

| 平均後の点数 | ラベル |
|---|---|
| 80点以上 | 相性良好 |
| 65〜79点 | 歩み寄りで良い関係に |
| 64点以下 | すれ違いに注意 |

100点を基準に表示するが、この配点で出るのは45〜90点。実際に生成される整数は45・58・60・72・73・75・85・87・88・90の10種類。0〜100の全整数が出る尺度ではない。`90点` は成功確率90%という意味ではない。

合成入力による例（これらのコードを持つ実在の人物がいるという意味ではない）:

- `111` 対 `333`: 相生が3層で90点。「助ける役割を固定せず、確認や感謝を忘れない」と高得点にも注意を添える。
- `111` 対 `999`: 相剋が3層で45点。「小さな約束を一つ決める」「話す時間を決め直す」と関係を育てる一歩を示す。関係の失敗や別れを予告しない。
- `111` 対 `139`: `(85 + 90 + 45) / 3` を四捨五入して73点。年・月・日すべてが合計に寄与する。

この数値は文章の代わりではなく、読む入口として使う。点数の近くに `COMPATIBILITY_SCORE_NOTICE` を表示し、配点・平均・閾値・範囲・文脈による扱いを `COMPATIBILITY_SCORE_METHOD` で確認できるようにする。

### 文脈ごとの独自助言

| 入力 | 表示する関係 | 具体的に相談すること |
|---|---|---|
| `partner` | 恋愛・パートナー | 連絡、会う頻度、一人の時間、互いの希望 |
| `friend` | 友人 | 誘い方、断りやすさ、返信や予定変更のペース |
| `work` | 仕事 | 目的、担当、期限、完成の目安、相談先 |
| `family` | 家族 | 暮らしの分担、手助け、疲れた日の対応、個人の境界 |
| `other` | その他 | 共通の目的、頼める範囲、距離感、返事の時期 |

文脈は五行の規則と点数を変えず、総合文・強み・注意点・行動・立て直し方・会話例と各層の提案を変える。恋愛の相手の性別を仮定しない。仕事の適性や家族内の分担を星・性別で決めつけない。実際の価値観・希望・経験を相手に聞いて確かめる方針を一貫させる。

文章は一文を短くし、抽象的な「目指すものの実現」等は相性では「決めたことをやり切ること」等へ言い換える。良いところは、予定を勧めるだけでなく、共通の話題・得意なことの補い合い・見落とした視点への気づきを具体的に説明する。低得点にも良いところと実行できる一歩を示し、高得点にも確認を省く・片方だけが背負う等の注意を残す。

行動提案では、相剋の層があればまずそこで相談する。複数ある場合は月→日→年の順で最初の話題を選び、なければ月の関わり方から始める。これは短い一歩を選ぶ編集順序であり、点数の重み付けではない。`repair` は一度話を休む・事実と困りごとを分ける等の立て直しと両者の日の持ち味を結び付ける。`conversation` は文脈と両者の日の星に応じた、そのまま口にできる短い一言にする。

## 確認した一次資料と採用範囲

以下は2026-09-22に本文を開いた資料。出版社・神社・占術提供者が自らの扱い方を説明する一次資料であり、科学的妥当性を検証した研究という意味ではない。本文・画像・鑑定表はアプリへ転用していない。

| 出典 | 確認した内容 | 本実装に採用する範囲／採用しない内容 |
|---|---|---|
| [高島暦出版「高島暦の楽しみ方」](https://www.takashimakoyomi.co.jp/enjoy/) | 「目的③ 特定の人との相性」の九星と五行の対応、相生・相剋・比和 | 既存五行対応・循環を再確認。疲れる・開運する等の効果断定や、この3役割の正当化には使わない |
| [西野神社「九星」](https://nishinojinja.or.jp/kikkyou/9sei.html) | 本命星、月命星、節入り、および本命と月命への役割の説明 | 年と月を別に扱う伝統的な説明を確認。ここから月＝対人、日＝反応の公認規則を導かない。生理・心理への因果主張も採用しない |
| [八雲院「五行と九星」](https://yakumoin.info/about/gogyou_and_kyusei) | 五行と星の対応、相生・相剋の向き。同一星を比和から分ける九星相性の説明 | 五行の対応・向きのみ照合。同一星の別扱いは未採用。相性の数値モデル、全3桁から人格を予測する妥当性の根拠にはしない |

五行の対応は `1=水、2/5/8=土、3/4=木、6/7=金、9=火`。相生は木→火→土→金→水→木、相剋は木→土→水→火→金→木。自然科学上の物質変化を説明するモデルとしてではなく、伝統的な分類規則として扱う。

NDLの歴史資料も調査候補にしたが、今回ブラウズで十分な本文を取得できなかったものは実装根拠に追加していない。既存の調査との関係は [evidence-and-product.md](./evidence-and-product.md) を参照。

## API・検証・残る限界

公開APIは `buildPersonalityReading(candidate)` と `buildCompatibilityReading(own, other, context)`。戻り値型は `PersonalityReading` / `CompatibilityReading` / `CompatibilityLayer`、入力型は `ReadingCandidate`。`THREE_STAR_READING_NOTICE` は役割の独自性・監修前・診断ではないことを画面で伝えるための文言。

相性の追加フィールドは `score: { value: number, label: string, summary: string }`、`repair: string`、`conversation: string`。各層には `score: number` と `scoreLabel: string` が加わる。`CompatibilityScore` 型と点数の説明定数2つもexportする。既存フィールドは維持する。

入力の星は整数1〜9、`code` は年・月・日を同じ順序でつないだ3文字に限定する。不整合や未知の関係は `RangeError`。関数は日時・ネットワーク・保存データを読み書きしない。

`tests/readings.test.ts` で、反復・同五行の異なる星・桁の入れ替え・相生の方向・本命以外の相剋・文脈別提案・不正入力・入力不変性を確認する。採点の固定例、全27通りの3関係の配置、四捨五入、点数の対称性、3層の等重み、文脈・性別からの独立性、高低両方の具体的な助言を検証する。入力可能な729通りの性格文と、固定相手に対して片側729通り×両側×5文脈の相性文を確認し、どの桁の差も詳細と助言全体へ届くことを検証する。これはソフトウェア入力の網羅性であり、現実の生年月日から729通りすべてが出現するという主張ではない。全729×729×5組を網羅した試験でもない。

これらの単体テストは編集ロジックの一貫性を確認するもので、文章が人に当てはまるという実証にはならない。今後の監修では、役割の説明、日命星の位置付け、相剋の伝え方、関係ごとの助言、実際の利用者が決めつけと感じないかを確認する。重みや性別分岐を追加する場合も、伝統上の根拠と独自編集を分けて再検討する。
