Hercules Correction Studio — 使い方ガイド

Expedition のセーリングログを 複数の AI レイヤーで解析し、H5000 の TWA / TWS / Boat Speed-Heel 補正テーブルへ反映する数値を自動算出

アプリを開く →

このツールは何をするのか

このツールは、Expedition の CSV ログから自動でタックとジャイブの候補を検出し、複数の AI レイヤーを経由して、最終的に H5000 の補正テーブルに入力する 具体的なセル値を算出するためのものです。検出 → AI 下読み → 人間判断 → AI 自動セル補間 という多段パイプライン構成です。

実艇の H5000 本体には直接書き込みません。表示された current → suggested の数値を見て、運用者がメニューから手入力します。最終判断は常に人間が行います。

全体の流れは次のとおりです。

  1. Expedition の CSV ログをアップロード(または共有サンプルを使用)
  2. AI 自動検出されたタック / ジャイブ候補を AI Screening で下読み(ADOPT / HOLD / REJECT
  3. 人間が 1 件ずつ Event Judgment で最終判断(Use as Candidate / Not Usable
  4. AI Apply selected suggestions を押すと、採用した複数イベントを、AI が自動で TWA 補正テーブル全体に割り振り
  5. 表示された current → suggested を見て H5000 本体に手入力
アプリのメイン画面
メイン画面 — 左上 Track、下に Timeline、右に Detected Events と Event Judgment

このアプリで AI が裏で動いているレイヤー

AI 1 AI Screening — 1 件ずつの下読み

AI が各イベントの前後の安定区間を統計的に評価し、ADOPT / HOLD / REJECT の判定と信頼度(high / medium / low)を返します。AI Screening には、Before/After の abs(TWA) の対称性、TWD 標準偏差、TWS / BSP / SOG / Heel の整合性、HDGCOG の関係、低速回復や加速の混入、風向シフトや潮流の可能性など 10 を超えるチェック項目が渡されます。

AI 2 AI Chat — 1 件のイベントを深掘り

選択中のイベントについて、計算結果を踏まえた対話ができます。「なぜこの判定なのか」「このイベント単体だと何度の補正に相当するか」「現在のテーブル値とどれだけずれているか」「どの H5000 セルに何 % 効くのか」といった、本来はバックエンドのロジックを覗かないと答えられない質問にも応答します。

AI 3 マルチセル自動補間 — 採用イベントを格子に分配

ここがこのアプリの心臓部です。

H5000 の TWA 補正テーブルは TWS(行)× TWA(列)の格子状で、規定の格子点(TWA 0° / 40° / 90° / 120° / 145°、TWS 0 / 5 / 10 / 15 / 20 / 25 / 30 / 35 ktにしか値を入力できません。しかし実際のセーリングは、当然ながら格子点ぴったりでは起こりません。

たとえば、ある採用イベントが TWA 55° / TWS 12 kt の地点で発生し、ターゲット補正値が −3.25° だったとします。アプリは次のように周囲 4 セルへの重みを双線形補間で算出します。

TWA 方向: 40° と 90° の間
  → 40° に 70%、90° に 30% の重み

TWS 方向: 10 kt と 15 kt の間
  → 10 kt に 60%、15 kt に 40% の重み

4 セルに対する重み(双線形補間):
  (TWS 10, TWA  40) → 0.42   (= 0.60 × 0.70)
  (TWS 10, TWA  90) → 0.18   (= 0.60 × 0.30)
  (TWS 15, TWA  40) → 0.28   (= 0.40 × 0.70)
  (TWS 15, TWA  90) → 0.12   (= 0.40 × 0.30)

意味:
  0.42·C(10,40) + 0.18·C(10,90)
+ 0.28·C(15,40) + 0.12·C(15,90)
= −3.25°  (= このイベントの目標補正)

採用イベントが複数あると、それぞれが上のような連立条件式を持ち寄ります。アプリは、サンプル信頼度(UI quality / TWD 安定性 / 左右対称性 / 安定区間の距離)を重みに掛けた最小二乗法を解いて、全イベントを最も整合的に説明する各セルの補正値を逆算します。

つまり、1 つのイベントが特定の 1 セルにそのまま入るのではなく、多数のイベントの情報が、それぞれの格子位置からの距離に応じてテーブル全体へ分配・統合される仕組みです。プロセッシング規模に応じて出力は high / medium / low の信頼度ラベル付きで表示され、high のセルだけが自動チェック状態になります。

とはいえ、最終判断は常に人間です。 AI 1〜3 のすべては候補を出すだけで、自動でテーブルに上書きすることはしません。Apply selected suggestions でアプリ上のテーブルに反映されても、それを実艇の H5000 本体に書き込むのは、表示された current → suggested を見て運用者がメニューから手入力する、というプロセスです。1 ログの結果を鵜呑みにせず、複数ログで同じ方向が出てから少しずつ反映するのが安全です。

1. サインインとサンプルデータ

アクセスにはメールアドレスとパスワードでのサインインが必要です。Sign up から新規登録すると、確認メールが届きます。メール内のリンクで認証してから、サインインに戻ってください。

このアプリは招待制で運用しています。サインアップ後すぐにサインインできても、管理者の許可リストに入っていない場合は内部 API が 403 を返してログイン画面に戻されます。新しいクルーを増やすときは管理者(tf@xworld.one)に連絡してください。

サンプルログ

サインインすると、すべてのアカウントから見える共有サンプルログ log-sample-2025Jul05.csv がドロップダウンに最初から入っています。判定や AI Screening 結果は自分のアカウント単位で別々に保存されるので、サンプルを使って練習しても他のクルーには影響しません。

2. ログを読み込む

ヘッダー上部の 2 か所のいずれかからログを読み込みます。下の画像の赤矢印を参照してください。

ヘッダーのログ読み込み箇所
ヘッダー上の 2 つの読込み導線 — 左の矢印がアカウントに保存済みログのドロップダウン、右の矢印がローカル CSV のアップロード
  • ドロップダウン + Load Log: 自分のアカウントにアップロード済みのログとサンプルが並びます。1 本選んで Load Log を押してください。大きなログは最初の読込みで数十秒かかります。2 回目以降はキャッシュから数秒で開きます。
  • Load CSV: ローカルの CSV を直接ドロップ。ファイル名は log-*.csv 形式である必要があります。アップロードが終わると自分のアカウント領域に保存され、次回からドロップダウンに出ます。
対応フォーマット: 現在このツールは Expedition の CSV ログ専用です。他のナビゲーションソフト(Adrena、TimeZero、SailGrib、B&G ZeusN のエクスポートなど)のログには対応していません。Expedition の CSV ログを log-*.csv という名前で用意してください。

3. Track と Timeline の操作

ログを開くと、左上に艇の軌跡(Track)、その下に時系列グラフ(Timeline)が表示されます。両者は常に時刻で同期しています。

Timeline 上の BEFORE / AFTER バンド
Timeline 上、検出されたタック / ジャイブの前後に自動抽出された安定区間(BEFORE = 赤、AFTER = 緑)が表示される

AI BEFORE / AFTER のバンドはどう選ばれているか

Timeline 上、検出されたタック / ジャイブの瞬間(縦線)の前後にある 赤いバンド(BEFORE)緑のバンド(AFTER)は、AI 判定の入力として自動抽出された「安定したセーリング区間」です。AI Screening にはこの 2 つのバンドの統計が渡されます。生ログそのままではなく、洗練された前後比較ペアを渡しているわけです。

バンドがタックの瞬間にぴったり接していないのには理由があります。マニューバ直後は減速・加速・トリム調整などで TWA や BSP / Heel が揺れるため、その不安定区間を比較に入れると、本来の補正信号ではなく「マニューバ中のノイズ」を拾ってしまうからです。

そこで AI はマニューバ前後 ±240 秒以内を走査して、次の条件をすべて満たす 45 秒以上の連続した安定区間を BEFORE / AFTER として抽出します。

  • abs(TWA) の標準偏差が ≤ 7°
  • TWS の標準偏差が ≤ 1.4 kt
  • BSP の標準偏差が ≤ 0.8 kt

さらに、抽出された区間がマニューバから離れているほど(ウィンドシフトや潮流変化が混入するリスクが上がるため)、サンプル信頼度の重みが自動的に下げられます。「近くて安定している区間」が最良、「遠くて安定している区間」は採用するが弱め、「条件を満たす区間が見つからない」場合は除外、というロジックです。

つまり: Timeline 上に見えている赤と緑のバンドは、人間が手で選んだ範囲ではなく、AI が「ここなら前後を素直に比較していい」と判断した結果が描画されたものです。

主な操作

  • Play: 時刻を自動で進めます。横の倍速ボタン(1x / 2x / 5x / 10x / 50x)で再生速度を切り替え
  • -30s / -5s: 現在時刻を秒数だけ戻す
  • Zoom - / + / Fit: Timeline の時間軸を伸縮、Fit でログ全体に合わせる
  • Track 上をクリック: その瞬間の位置にカーソルが飛び、Timeline も同期
  • Timeline 上をクリック: その時刻にカーソルが飛び、Track 上の位置と右ペインの数値が更新

4. Detected Events

右ペイン上部の Detected Events は、AIログ全体を解析して自動抽出したタック / ジャイブの候補リストです。All / Tack / Jibe タブで絞り込めます。1 枚クリックすると Track と Timeline がそのイベントの瞬間にジャンプし、AI が選定した Before / After の安定区間がハイライトされます。

各カードには、AI が抽出時点で付けた品質ラベル(緑=best、薄緑=usable、橙=check、赤=poor)と、TWD Δ(Before / After の TWD 差)が表示されます。上位ほど補正サンプルとして良質、というシグナルです。

Detected Events パネル
Detected Events パネル — 1 件選択すると Before / After 区間とその統計、AI が見ている数値群が右下に展開される

5. AI Screening

パネル上部の AI Screening ボタンを押すと、AI検出された全イベントを順番に下読みします。各イベントについて、AI が選定した Before / After の安定区間と統計をまとめて渡し、3 種類の判定ラベルと信頼度、そして日本語の判定理由を返します。

ADOPT = 採用推奨。AI 評価で補正サンプルとして十分な品質
HOLD = 保留。AI 単独では即決しない、人間の最終確認が望ましい
REJECT = 採用非推奨。データ品質が補正計算に不適

各ラベルには信頼度 high / medium / low が付与されます。スクリーニングは 1 イベントあたり約 10〜15 秒、16 件で 3〜4 分。完了するとパネル上部に 16/16 screened のように表示され、各カードに判定バッジと根拠の要約文が付きます。

AI Screening 完了後のイベントカード
AI Screening 完了後 — 各カードに ADOPT / HOLD / REJECT バッジと信頼度、判定根拠の日本語要約が表示される

AI Screening が同時に評価しているもの

1 件あたりに AI へ渡されるチェック項目は 10 を超えます

  • Before / After の abs(TWA) の対称性
  • Before / After 各区間内の TWD 標準偏差(風向のふらつき)
  • TWS / BSP / SOG / Heel の整合性
  • HDGCOG の関係(潮流 / 川流れの兆候)
  • 低速回復や加速中の混入(マニューバ汚染)
  • 風向シフト、ウィンドシア、潮流影響の可能性
  • 安定区間の長さ、マニューバからの時間距離
  • H5000 セットアップ 4 オフセット(AWA / Heading / Heel / Leeway)— 上流のセンサー誤差を切り分けるため

なお、現在の TWA 補正テーブルは AI Screening には意図的に渡していません。それ自体がこれから補正したい対象なので、AI に「答え」を見せないための設計です。

AI Screening が出すのは 優先順位と理由。H5000 補正テーブルを直接書き換えることはありません。反映を最終確認するのは人間の役割で、次のセクション「Event Judgment」で Use as Candidate / Not Usable を 1 件ずつ確定させます。

6. Event Judgment

AI Screening が出した判定とその理由を確認したうえで、最終的な採用可否を 1 クリックで確定させるステップです。Detected Events のカードを選んだ状態で、右下の Event Judgment パネルから 4 つのアクションが使えます。

  • Use as Candidate — TWA 補正候補の材料として採用。後の Suggest from judged events の入力になります。
  • Not Usable — 補正計算から除外。AI が見落としているオンボード事情がある場合などに使います。
  • Clear Selected — 選択中 1 件の判定を取り消し。
  • Clear All — このログ全体の判定を一気に取り消し(押す前に確認)。
Event Judgment パネル
Event Judgment パネル — AI の判定理由を読みながら、Use as Candidate / Not Usable をクリックして確定

人間が AI に上書きするのはどういう場面か

AI Screening は Expedition ログから読み取れる数値情報すべてを統合的に評価しますが、セイル変更、ヘルムスマン交代、機材トラブル、艇上のクルーワークといったオンボードのコンテキストはログには記録されていません。AI が ADOPT と判定したイベントでも、「あの瞬間はメインのトリムを大きく変えた直後だった」というように艇上にいた人しか知らない事情があれば、Not Usable で除外できます。これが人間の最終確認の本質的な役割です。

逆に AI が HOLD としたものでも、艇上で「あれは綺麗なタックだった」と分かっていれば Use as Candidate で採用に回せます。AI Screening 結果はあくまで初期推奨で、最終的なテーブル反映の母集団を確定させるのは人間です。

判定確定後のイベントカード
Use as Candidate を押すと、カードに「Candidate」バッジが付き、TWA 補正候補生成の対象に加わる

判定の保存先

判定は自動的に Firestore のあなたのアカウント領域に保存されます。同じアカウントなら別の端末からでも続きから作業でき、サインアウト時とブラウザを閉じるタイミングでも未送信の変更がフラッシュされます。

7. AI Chat で深掘り

画面右下の AI Chat パネルは、AI選択中のイベント 1 件と直接対話できるパネルです。Why this rating? ボタンで AI Screening の判定理由が日本語で返り、自由テキスト欄からは補正計算の中身にまで踏み込んだ質問ができます。

AI Chat パネルでイベントを深掘り
AI Chat — 選択中イベントの統計、AI Screening 結果、H5000 セットアップ、補正計算の中間値まですべてを文脈として保持した状態で対話できる

AI Chat には、汎用 LLM では知り得ないアプリ内部の中間計算値まで文脈として渡されています:

  • 選択中イベントの Before / After 統計
  • UI quality(best / usable / check / poor)
  • Event Judgment の状態(Candidate / Not Usable / 未判定)
  • H5000 Setup の 4 オフセット(AWA / Heading / Heel / Leeway)
  • このイベントの目標補正値4 セルへの補間重み、現在テーブルでの補間値、目標との差分(残差)

このため、本来はバックエンドのコードを覗かないと答えられない質問にも具体的な数字で応答します:

  • 「このイベントだけを採用すると何度の補正になるか」
  • 「なぜ補正目標が -TWD delta / 2 なのか」
  • 「どの H5000 セルに何 % の重みで効いているか」
  • 「現在のテーブル値と比べてどれだけズレているか」
  • 「このイベントの信頼度はなぜ medium なのか」

8. H5000 Setup

ヘッダー右の H5000 Setup ボタンで設定ポップアップが開きます。新規アカウントではすべての値が 0 / 空の状態から始まり、自艇の現状値を入力するところからスタートします。

H5000 Setup ポップアップ上半分
H5000 Setup ポップアップ上半分 — Boat Profile と 4 つのセンサーオフセット(AWA / Compass / Heel / Leeway)

セクション構成

  • Boat Profile — 艇名、セール番号、クラス、母港、メモ。複数艇を扱うときに区別するための情報。
  • AWA / Masthead Angle Offset — マストヘッド風向計のオフセット。AI Screening と AI Chat に渡される。
  • Compass — H5000 のヘディングオフセット。
  • Heel — H5000 のヒールゼロ点。
  • Leeway — サイドスリップ角を算出する係数。
  • TWA Correction Table — TWS 行 × TWA 列の格子。現在 H5000 に入っている値を写しておくと、AI が出す提案の基準になります。
  • True Wind Speed Collection — TWS の補正テーブル。
  • Boat Speed / Heel Collection — BSP × Heel の補正テーブル。
  • Portable JSON — Setup の全体を JSON でエクスポート / インポート。別艇への複製や別端末への引き継ぎに使えます。
H5000 Setup ポップアップ下半分
H5000 Setup ポップアップ下半分 — 3 つの補正テーブル(TWA / TWS / BSP-Heel)と Portable JSON
AI に渡しているもの・渡していないもの: AI Screening と AI Chat には Boat Profile の 4 オフセット(AWA / Heading / Heel / Leeway)だけを文脈として渡しています。TWA Correction Table 自体は意図的に AI に渡していません — これから補正したい対象そのものなので、AI に「答え」を先に見せないための設計です。

9. TWA / TWS / BSP-Heel 補正候補

概要セクションで触れた AI 3 マルチセル自動補間が実際に動くのはここです。Setup ポップアップの 3 つの補正テーブルそれぞれに Suggest from current log / Suggest from judged events ボタンがあり、押すと AI が補正候補を提示します。

TWA Correction Table

Suggest from judged events を押すと、Use as Candidate にしたイベントだけを入力として、AI が TWA テーブルの修正候補を自動算出します。1 イベントあたり target = −TWD delta / 2 をターゲット補正値とし、実測 TWA / TWS 地点の周囲 4 セルへ双線形補間で重みを割り、サンプル信頼度を掛けた重み付き最小二乗で全イベントを同時に最もよく説明するセル差分を逆算します。

TWA Correction Table の Suggest 結果
Suggest 実行後 — high / medium / low の信頼度ラベル付きで提案セルが並ぶ。high は自動チェック済み、Apply selected suggestions で選択分だけがアプリ上のテーブルへ反映される

提案の信頼度は次のとおりです:

  • high — サンプル 4 件以上、best / usable が 3 件以上、フィット誤差が小さい。デフォルトでチェック済み
  • medium — サンプル 2 件以上、許容範囲内。チェックは手動。
  • low — それ以外。チェックは手動。

Apply selected suggestions でチェック済みのセルだけがアプリ上のテーブルに反映され、画面上では更新されたセルが緑でハイライトされます。直前の Apply に限り Undo last apply で取り消し可能。実艇の H5000 本体には自動で書き込みません — 表示された current → suggested を見て、人間が H5000 のメニューに手入力します。

True Wind Speed Collection

こちらは判定済みイベントではなく、ロード中のログ全体から AI が安定 45 秒以上 / 標準偏差が許容内のセグメントを抽出し、PolBsp% の中央値から TWS 補正候補を算出します。1 ログあたり ±0.6 ノットでクランプ。TWA 40° / 90° は upwind / beam reach で慎重に扱いたいので、提案の効きを半分に減衰させています。

Boat Speed / Heel Collection

BSP × Heel の格子(Heel 0 列はアンカーで提案対象外)から、同じく PolBsp% の中央値で補正候補を出します。±0.4 ノットでクランプ。BSP / Heel は polar、潮、波、トリム、汚れなど多くの要因が混じるので、複数ログで同じ傾向が出てから少しずつ反映するのが安全です。テーブルの初期値はすべて 0 から始まります。

3 つに共通する考え方: AI が出すのは補正の真値ではなく、人間が H5000 に反映するための候補値です。1 ログだけで判断せず、複数ログで同じ方向が出るか確認してから H5000 に反映していくと、より安全に補正が進みます。

10. ログの管理

ヘッダー右上のメールアドレスをクリックするとメニューが開き、Manage logs から自分のログを管理できます。各行に Delete ボタンがあり、確認ダイアログを経て削除できます。

共有サンプル log-sample-2025Jul05.csv には Sample バッジが付きます。サンプルを削除できるのは管理者だけです(一般ユーザーには disabled で表示されます)。

削除の影響: 削除するのは CSV 本体のみで、過去の判定や AI Screening 結果は Firestore に残ったままです。完全に綺麗にしたい場合は管理者に依頼してください。

データの保存とプライバシー

  • あなたがアップロードしたログは あなたしか見られません(GCS の users/{あなたのUID}/ 領域)。他のクルーや管理者も中身を直接見ることはできません。
  • 判定、AI Screening 結果、H5000 Setup は あなたのアカウント単位で Firestore に保存されます。別端末でサインインしても続きから作業できます。
  • サンプルログ log-sample-2025Jul05.csv は CSV 本体だけが共有で、判定はあなた個別に保存されます。
  • サインアウト時、ブラウザを閉じるとき、変更があったキーは最後にもう一度フラッシュされます(keepalive 付き fetch)。
  • AI Screening / Chat の通信は、サーバー側を経由して OpenAI に渡されます。OpenAI API キーはサーバー側の Secret Manager にあり、ブラウザには絶対に渡されません。