# 方位どり：一次資料調査と計算仕様

調査日: 2026-09-21 / 実装: `src/lib/directions.ts` / 検証: `tests/directions.test.ts`

## 今回の結論

「どちらへ何 km」という地理計算と、「どの盤にどの注意要因があるか」という伝統上の解釈を分けた。北の基準、角度幅、破の適用幅、日替わり時刻、距離・滞在日数の扱いが、参照先によって異なる。単一の標準や実証された開運効果としてまとめない。

UI の基準は真北。30°/60° と均等45°を比較できる。判定済みの盤の中宮星と十二支を暦エンジンから受け取り、七種類の要因を別々に返す。注意要因がない場合も「吉」「安全」「運が上がる」とは結論しない。判定の範囲を説明できる構造を先に実装した。

## 採用ルール

| ルール | 実装 | 根拠・注意 |
|---|---|---|
| 後天定位盤 | 北1、南西2、東3、南東4、中5、北西6、西7、北東8、南9 | [西野神社「九星」](https://nishinojinja.or.jp/kikkyou/9sei.html) の定位盤 |
| 飛泊 | 中→北西→西→北東→南→北→南西→東→南東、数を1つずつ増やし9の次は1 | 同ページの遁行順。日ごとの陰遁・陽遁は暦側の中宮星の推移であり、この盤内配置と混同しない |
| 五黄殺 | 五黄の回座方位 | 中宮の場合は外側方位なし |
| 暗剣殺 | 五黄の回座方位の正反対 | 五黄中宮の場合は外側方位なし |
| 本命殺 | 入力された本命星の回座方位 | 年・月・日盤で本命星を使う。月命星による判定は今回の範囲外 |
| 本命的殺 | 本命星の回座方位の正反対 | 本命星が中宮の場合は外側方位なし |
| 歳破・月破・日破 | 年・月・日の支の正反対 | MVPは八方位全体へ広げる方式。十二支の30°範囲だけを使う方式とは異なる |

基本定義は[西野神社](https://nishinojinja.or.jp/kikkyou/9sei.html)、本命・月命の区別と各盤の破は[吉ハグ。公式ヘルプ](https://www.kichihug.com/help/)、破の8方位/12方位の違いは[八雲院「方位盤について」](https://yakumoin.info/about/houiban)で照合した。各返却要因にルールID・盤・方位・短い独自説明・出典URLを持たせた。疾病・事故・破産などが起こるという原文の主張を製品の予測として転載していない。

十二支は、子=北、丑寅=北東、卯=東、辰巳=南東、午=南、未申=南西、酉=西、戌亥=北西。12支の配当と、九星による8宮の配当は別系統として扱う。八雲院は破を8方位全体とする表示と、該当する12支の30°だけとする表示の双方を説明している。

未実装: 月命殺・月命的殺、定位対冲、土用殺、小児殺、天道、大歳、空亡、傾斜、同会・被同会、最大吉方、相生による吉候補、時盤。それらを評価せずに旅行先を「大吉」とすることはできない。流派ごとの監修と適用条件を追加してから、個別に実装する。

## 流派・表示方式の相違

| 項目 | 調査で確認できたこと | MVPの選択 / 今後必要なこと |
|---|---|---|
| 真北/磁北 | [三田しの占い教室](https://shinomita.com/yukidori-2/)は両立場があると明記し、自身は磁北を採用。[方象工学研究所](https://kigaku-houi.com/guide/kihon)も磁北を採用 | UIは真北を明記。真北を「全流派の正解」とはしない。ライブラリには符号を定めた磁北変換も用意 |
| 30°/60° | 正四方を30°、斜めを60°とする方式を上記2者が説明 | 初期値。均等45°は角度区分比較であり、流派全体を切り替えるプリセットではない |
| 45° | 三田しのは風水の方式として区別 | 45°を一般的な九星気学方式と紹介しない。24方位風水の計算も未実装 |
| 破の幅 | 八雲院では8方位方式/12方位方式を選択可能 | 今回は8方位方式。斜めの半分だけを除外する判定は未実装 |
| 上が南/北 | 伝統盤は南が上の例がある。八雲院は南北反転表示も提供 | 内部データは方位コードで管理し、画面座標と分離。図には必ず方位ラベル |
| 距離・滞在 | [八雲院](https://yakumoin.info/about/distance_and_span)は年盤に3泊4日以上/500km以上など、月盤に1〜2泊などを列挙。三田しのは短旅行・時盤等の扱いが異なる | 距離や泊数で有効盤を自動選択しない。3盤の根拠を並べる。滞在時間を開運倍率にしない |
| 起点 | 自宅を起点とする例、引越し後の「根付け」を設ける例がある | 入力した起点を明示。現在地が自宅を意味するとは扱わない。住宅中心、生活拠点、複数拠点、転居の扱いは監修対象 |
| 出発日/到着日 | 八雲院は出発日の盤を使用と説明 | 暦側から指定日の盤を受け取る。自動旅程判定は未実装 |
| 日替わり | 八雲院は23時切替と明記 | 採用する暦の設定が必要。緯度経度だけで日盤を決めない |
| 海外・時差 | 天文時刻を現地民用時へ写す計算と、どの日時を占術の盤に使うかは別問題 | 出発/到着のIANAタイムゾーン、DST、日付変更線、現地日付、採用する日界を将来の旅程データへ持たせる。外国の方位判断を今回の表示から保証しない |

[国立天文台の二十四節気・雑節](https://eco.mtk.nao.ac.jp/cgi-bin/koyomi/cande/phenomena_s.cgi)は標準時設定があり、図は中央標準時、夏時刻は考慮しないと明示する。国立天文台は天文データの根拠であり、九星気学の流派上の選択や開運効果の根拠ではない。

## 地理計算の仕様

入力座標は緯度経度の十進度、緯度は北が正、経度は東が正。WGS84の楕円体長半径6,378,137 m、扁平率1/298.257223563を使う。距離と方位はVincentyの逆解を独立実装し、経度差は日付変更線を越える短い側へ正規化する。起点から目的地への測地線の**初期方位**を返し、道路距離・徒歩ルート・飛行経路は計算しない。標高差は含まない。

基礎資料は[Vincentyの1975年原論文（NOAA公開）](https://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf)、[国土地理院の距離と方位角の計算式](https://vldb.gsi.go.jp/sokuchi/surveycalc/surveycalc/algorithm/bl2st/bl2st.htm)。GSIの式をそのまま実装したわけではなく、地理計算で測地線を使う設計の参照資料である。楕円体パラメータと独立した数値照合先は[GeographicLib公式例](https://geographiclib.sourceforge.io/html/python/examples.html)。

- 反復は最大200回、収束差1e-12 rad。対蹠点付近ではVincentyが収束しない場合がある。その場合だけ半径6,371,008.8 mの球面による概算距離を返し、方位は `null` にして理由を表示する。球面の方位を高精度結果として代入しない。
- 同一地点・1 m未満の移動は方位 `null`。起点が地理極点でも方位 `null`。微小差・対蹠点でNaNが画面へ流れないようにする。
- 角度は北0°から時計回り。30°/60°方式の境界は15, 75, 105, 165, 195, 255, 285, 345°。ちょうど境界なら時計回り側へ割当て、境界から1°以内は注意表示する。1°は精度保証や伝統ルールではなく製品の表示上の余裕幅。
- 磁気偏角を使うAPIでは**東偏を正**とし、`磁北基準角 = 真北基準角 − 偏角`。[国土地理院](https://www.gsi.go.jp/buturisokuchi/menu01_index.html)は西偏を正で表すため、GSI値をそのまま代入してはいけない。地点・年代に対応した値が必須。全国一律「西へ7°」などの固定補正は行わない。
- 座標には任意の `accuracyMeters` を添付できる。2点の誤差の和と距離による近似角幅が区分境界へ届く場合に注意表示する。この近似は品質の注意喚起であり、統計的信頼区間ではない。
- 小数桁が多い住所座標でも建物精度とは限らない。住所検索では行政区・町域・番地・建物入口・建物中心のどの代表点か、返却精度、手動補正の有無を将来保存する。住所を入力せず手動座標のみでも利用できる。

遠距離の判定でWeb Mercator地図へ定規で引いた線の角度を使わない。球面なら大圏、楕円体なら測地線の起点方位が対象になる。正距方位図は選んだ中心からの距離・方位を表す目的に合うが、あらゆる2点間の距離を同時に正しく表すわけではない。[PROJの正距方位図仕様](https://proj.org/en/stable/operations/projections/aeqd.html)、[Matplotlib Basemapの説明](https://matplotlib.org/basemap/stable/users/aeqd.html)を参照。将来はGeographicLib/Karneyの逆解を導入し、対蹠点付近も含めた対応と中心を移動できる方位図を実装する。

## API契約

```ts
buildBoard(center: number): Record<'C' | Direction, Star>
analyzeRoute(origin, destination, { division, northReference, declinationDeg? }): RouteAnalysis
boardFactors({ center, branch }, honmei, period): DirectionFactor[]
evaluateDirection({ direction, boards: { year?, month?, day? }, honmei }): DirectionFactor[]
```

星は1〜9の整数を実行時にも検証。十二支は子〜亥の漢字1文字。factorは `id, label, period, direction, explanation, sourceUrl` を返す。`[]` は実装した要因の該当がないだけで、旅行推奨・安全性・幸運を意味しない。未入力の盤を自動補完しない。別の流派を実装する場合は既存ルールを上書きせず、ルールセットIDと版を持たせる。

## 地図・住所データとライセンス

今回の方位エンジンは外部通信も地図データも使用しない。公式説明は調査対象とし、第三者の文章・盤画像・鑑定データベースを転載していない。

| 提供元 | 確認した条件・性質 | 実装への扱い |
|---|---|---|
| [国土地理院の利用規約](https://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html) | 2025-11-20改正ページでは原則PDL1.0、出典・加工明示、第三者権利等の個別条件 | 現時点は参照リンク。将来タイル等を使う場合は対象レイヤーの条件と[測量成果の利用手続](https://www.gsi.go.jp/LAW/2930-index.html)を確認 |
| [OpenStreetMapデータ](https://www.openstreetmap.org/copyright?locale=en-GB) | ODbL。帰属表示とライセンス参照が必要。データとサービス提供は別 | 埋込み地図・派生DBを導入する段階で帰属表示・配布形態を設計 |
| [OSMF標準タイル](https://operations.osmfoundation.org/policies/tiles/) | 公開タイルにも利用方針があり、無制限の商用ホスティングではない | MVPは自動取得をしない。将来は配信契約/自己配信を選定 |
| [Nominatim公開サービス](https://operations.osmfoundation.org/policies/nominatim/) | 最大1 req/s、識別、帰属、キャッシュ/切替設計。オートコンプリート不可。個人・機密情報送信不可。汎用サービスへの安易な組込みにも制限 | **今回未使用**。ユーザーの住所を送信しない。採用は規約を確認した明示的な開発判断が必要。商用プロバイダや自己ホストを別途選定 |
| [MapLibre GL JS](https://maplibre.org/maplibre-gl-js/docs/) / [LICENSE](https://github.com/maplibre/maplibre-gl-js/blob/main/LICENSE.txt) | 描画ライブラリ。主ライセンスBSD-3-Clause、同梱第三者コードの表示も保持。地図データの利用権は含まない | 将来のブラウザ地図候補。今回未導入 |
| 宗教団体・実践家・占術アプリの公式ページ | 読み方の一次資料。上記各ページで機械可読データの自由再配布許諾は確認していない | 短い独自の説明と出典リンク。商用文章・図版・大量鑑定データを複製しない |

規約は調査日時点の記録。リリースで採用するサービスについて、配信条件・データ利用条件・利用地域・保存期間・住所の取扱いをあらためて確認する。

## 検証と残る作業

`npx tsx --test tests/directions.test.ts` で16件通過。定位盤の公開例、全角度境界、均等45°との違い、WGS84赤道の解析解、GeographicLib公式の北京→サンフランシスコ数値、日付変更線、同一点、極点、非収束の対蹠点、磁北の符号、位置誤差、各盤の要因を検証した。これは計算と採用ルールの実装検証であり、開運効果の検証ではない。

次のデータ整備は、(1) 流派/監修者ごとの北・角度・破・日界・盤選択規則を設定化、(2) 各規則の版・原典ページ/書誌・レビュー状態を記録、(3) 監修者の手計算と公開暦による固定例を年代・境界日別に集め、(4) 地図・住所プロバイダを選定、(5) 国外・時差・移転の実例を監修する順が妥当。大量の占いサイトを取得して一致率だけで「正解」とせず、相違点ごとに根拠と採用設定を表示する。
