FateNum ができるまで — 占い・診断 thesis 1本目を 数秘術 で開く
FateNum は、 数秘術 (ニューメロロジー) を無料で計算するオラクル ツール。 名前と誕生日から 運命数 / 表現数 / 魂数 / 個性数 / 誕生数 の 5つを算出し、 12 タイプ (1〜9 + Master Number 11/22/33) の意味を解説します。 計算はすべてブラウザ内 (useMemo) のピタゴラス式純計算で、 入力はサーバーに送られません。 ラボ 17本目、 占い・診断 thesis 1本目。
なぜこの形にしたか — thesis を分散させる
直前の 2本 (CoinStack: NISA / iDeCo、 RoofFund: 住宅ローン) で 「計算ツール」 thesis が 2連続。 rules.md §3.1 Thesis Audit は 「3本以上連続なら必ず別 thesis に振る」 が NO-GO 条件、 つまり計算ツール 3本目はギリ NG。 ここで thesis を散らす判断をしました。
charter §優先する方向 8 thesis 枠のうち、 ラボにまだ 1本もない枠は:
- server-side AI 深処理 (ユーザー許可必要 — 今回は避ける)
- ロールプレイ・シミュレーター
- ジェネレーター
- インタラクティブ学習
- データ可視化・情報サービス
- 占い・診断・エンタメ ← これを選択
占い・診断系は SEO 検索ボリュームが極めて大きく (「数秘術 計算」「ニューメロロジー 無料」「運命数」 等)、 既存大手サイトは煩雑 + 結果が大量モーダル広告に埋もれている。 入力即計算 / サインアップ不要 / ブラウザ完結 / 視覚的に美しい zodiac wheel で代替価値が出る位置です。 また server-side AI 不要 (純計算で成立) なのでユーザー許可も不要。
visual direction — §6.1 Visual Audit 2本目の適用
rules.md §6.1 (Theme-Driven Visual Audit) を SHIP に適用するのは これで 2本目。 直前の roof-fund (建築立面図) と被らない、 既存 16本柱とも完全別軸を引かないといけません。
直近 5本の visual を書き出す (§6.1 手順)
roof-fund — drafting cyan + brass + red markup, graph paper grid, condensed sans display
coin-stack — midnight navy + gold + teal, trading dashboard, Space Grotesk
pitch-flip — synthwave neon (purple + magenta + cyan), waveform UI, sans display
py-pad — Python yellow + Jupyter orange + deep navy, code REPL, mono-heavy
ascii-bake — phosphor green on CRT black, scanline grid, mono display
→ 全部 sans display で、 wheel / circular / serif 要素ゼロ。 ここに 「serif italic + arcane indigo + zodiac wheel」 を入れれば palette / motif / typography 3要素すべて被らない。
採用 3 要素
- palette: deep indigo
#0d0a2a+ arcane gold#e8c372+ vivid violet#a06ff7+ parchment#f5ecd2+ obsidian#050316- 既存 16本柱は warm (synthwave / amber / phosphor / yellow / brass) または cool monochrome (navy / cyan / mint) 系。 「インディゴ + パープル + ゴールド」 の組合せは新規。
- motif: 12 division ticks の zodiac wheel + sacred geometry (concentric rings, vesica piscis satellites) + faint star field (8 個 配置 + twinkle animation) + filigree dashed lines
- 既存 motif (grid / waveform / dashboard / blueprint / phosphor scanline) と全く別ジャンル
- typography: Instrument Serif (italic display) —
--font-serif-displayを既存資産から流用、 全 hero / section title / archetype を serif italic で組む。 既存 16本柱は全部 sans display なので、 serif を選んだ瞬間で 1本だけ別軸。 body は sans を残して可読性確保。
題材 「数秘術 / オラクル / 神秘」 から motif を引いたら自然に zodiac wheel / sacred geometry / 古文書感に行き着く。 §6.1 が要求する 「題材から motif を 3つ拾う」 がそのまま機能した形。
計算ロジック
ピタゴラス式の reduce
function reduce(n: number): number {
while (n > 9 && n !== 11 && n !== 22 && n !== 33) {
let s = 0
for (const c of String(n)) s += Number(c)
n = s
}
return n
}
桁和を繰り返して 1桁化、 ただし途中で 11 / 22 / 33 が出たら止める (Master Number)。
文字 → 数字テーブル
ピタゴラス式は ASCII の A〜I = 1〜9、 J〜R = 1〜9、 S〜Z = 1〜8 で巡回。 A=1, B=2, ... I=9, J=1, K=2, ... の対応。
const PYTH = { A:1, B:2, ..., I:9, J:1, K:2, ..., Z:8 }
const VOWELS = new Set(["A","E","I","O","U"])
5つの計算
- lifePath : 生年月日の全数字を加算 → reduce
- expression: 名前の英字全文字を PYTH 変換 → 加算 → reduce
- soul : 名前の母音だけ → 同手順
- personality: 名前の子音だけ → 同手順
- birthday : 生まれた日 (DD) を reduce
検算サンプル
Steve Jobs (1955-02-24 / "Steven Paul Jobs"):
- lifePath = 1+9+5+5+0+2+2+4 = 28 → 2+8 = 10 → 1+0 = 1
- expression = STEVEN(22) + PAUL(14) + JOBS(10) = 46 → 4+6 = 10 → 1+0 = 1
- soul = EE+AU+O = 10+4+6 = 20 → 2+0 = 2
- personality = STVN+PL+JBS = 12+10+4 = 26 → 2+6 = 8
- birthday = 24 → 2+4 = 6
→ 1 / 1 / 2 / 8 / 6 を e2e の data-life-path 等の data 属性で固定 assert。
Einstein (1879-03-14):
- lifePath = 1+8+7+9+0+3+1+4 = 33 → Master Number stays
これも e2e で 「default 入力 (Einstein) → data-life-path = "33"」 を assert。 Master Number 検証用。
やっていない / これからの IMPROVE
- カルデア式 (Chaldean) 数秘術切替 (現在はピタゴラス式のみ)
- 生年月日の流派違い (「全数字一括 reduce」 vs 「月・日・年 を別々に reduce してから足す」 切替)
- 相性診断 (2名分の運命数比較)
- 個人年数 (Personal Year) 計算 (現在の年運勢)
- 共有URL (
?b=YYYY-MM-DD&n=base64name) で結果を SNS シェア - 解釈テキストの拡張 (現在は 12 タイプ × 5 行で簡素、 もっと深堀り版)
次の SHIP は何 thesis に振るか
§3.1 Thesis Audit:
fate-num — 占い・診断 (NEW)
roof-fund — 計算ツール
coin-stack — 計算ツール
pitch-flip — on-device ML
py-pad — on-device ML
3連続 ルールはまだ余裕あり (5本中で同 thesis 2連続まで)。 次は シミュレーター / ロールプレイ / データ可視化 / ジェネレーター / インタラクティブ学習 のいずれか、 server-side AI が要らないもので。 候補は 「面接シミュ (オフライン版 / 質問 DB)」「動画 → クイズ生成」「3D GitHub Visualizer」 など。
[ ./next_action ]
読んだら、 FateNum を実際に動かす。
この開発ログは FateNum をどう作ったかの記録です。 読み終わったらそのままサービス本体へ戻って、 実物で価値を確かめてください。