みんなのGOLF AR

ai_team

ai_team

コースエディタ:操作説明書

資料作成者:OpenAI Codex(gpt-5.6-sol) 更新日:2026年9月2日

このページで分かること
every_golfのコースエディタでできることと、各操作の手順を説明します。エディタはゴルフゲームを作るものではなく、ゴルフ場で現在地・方向・距離・高低差・地形を案内するためのデータを作る道具です。

エディタを開く

SafariまたはChromeで次のローカルHTMLを開きます。

file:///Users/trons-fuyuki/Projects/every_golf/doc/ai_team/viewer/kawana_viewer.html

正本ファイルは /Users/trons-fuyuki/Projects/every_golf/doc/ai_team/viewer/kawana_viewer.html です。初期状態では川奈ホテルゴルフコース1番ホールのサンプルを表示します。

エディタでできること

画面の見方

コースエディタ全体画面。管理、3D地形、距離読出し、縦断図を番号で表示

  1. コース/ホール管理:コース、ホール、床データ、Tee、Green、Cup、保存、検査、JSON入出力を操作します。
  2. 3D地形:地形、ルート、Tee、Green、Cup、距離円弧を表示し、編集対象を直接操作します。
  3. 数値読出し:Teeと案内目標の標高、高低差、直線距離、カーソル地点の標高を表示します。
  4. 縦断図:レギュラーTeeからGreenまたはCupまでの標高変化を表示します。

地形の表示を調整する

コースとホールを管理する

  1. 右上の「コース」で編集対象を選びます。
  2. コース名を入力します。新しいコースが必要な場合は「新規コース」を押します。
  3. 「ホール」で編集対象を選び、番号、Par、ホール名を入力します。
  4. 「ホール追加」で追加し、↑/↓でコース内の並び順を変更します。
  5. 「床データ」で、そのホールに使うFloorDataを選びます。

床データを変更すると、そのホールの属性、mask、Tee、Green、Cup、ルートが新しい床に合わせて初期化されます。確認dialogの内容を読んでから実行してください。

生成済みコースを読み込む

Tee、Green、Cup、地表属性、判定対象外mask、ルートまで含めて作業を始める場合は、右上の「Course読込」を使います。「床読込」ではありません。

  1. 「Course読込」を押します。
  2. 読み込む *.course.json を選びます。
  3. 読込後、右上の「コース」と「ホール」で編集対象を選びます。
  4. 3D地形上のTee、Green、Cup、属性、ルートを確認してから編集を始めます。

芹が谷のCourseData:

/Users/trons-fuyuki/Projects/every_golf/doc/ai_team/data/generated/serigaya/serigaya.course.json

Machida-cityのCourseData:

/Users/trons-fuyuki/Projects/every_golf/doc/ai_team/data/generated/machida-city/machida-city.course.json

Course読込と床読込の違い
「Course読込」はコース、各ホール、FloorData、Tee、Green、Cup、属性、mask、ルートをまとめて読み込みます。「床読込」は標高、画像、範囲等のFloorDataだけを読み込みます。床ファイル単体にはTee、Green、Cup、属性、mask、ルートは入っていません。

Tee、Green、Cupを配置する

Tee種別、配置対象、地形上へ配置、Cup目標、保存と出力を番号で表示

  1. 配置対象を選ぶ:「選択中TEE」「Green代表点」「Cup」から変更したい対象を選びます。
  2. Tee種別を選ぶ:Teeの場合は、レギュラー、バック、レディースから対象を選びます。
  3. 配置を開始する:「地形上へ配置」を押します。ボタンが「地形をクリック」に変わったことを確認します。
  4. 位置を指定する:3D地形上の置きたい場所を押します。既存のTee、Green、Cupを選んだ場合も、その位置へ移動します。
  5. 配置を終了する:「地形をクリック」をもう一度押し、通常の「地形上へ配置」へ戻します。
  6. Cupを使う:Cupを置いた後、「Cupを案内目標にする」を選びます。距離、高低差、縦断図、ルート終点がCupへ切り替わります。
  7. 位置を確認する:REG TEE、BACK TEE、LADIES TEE、GREEN、CUPのpinを見て位置関係を確認します。

レギュラーTeeとGreen代表点は必須のため削除できません。バックTee、レディースTee、Cupは「選択点を削除」で削除できます。すべてのTeeは最寄りのルートポイントへ自動接続されます。

現行エディタには緯度経度を数値で直接入力する欄はありません。Tee、Green、Cupの位置変更は3D地形上のクリックで行います。画面上部の座標は小数点以下4桁へ丸めて表示されますが、CourseDataへの保存時は緯度経度を小数点以下7桁まで保持します。

地表属性を編集する

属性palette、属性編集button、地形上の属性overlayを番号で表示

  1. 「属性を編集」を押します。左側に属性ブラシが開きます。
  2. 不明、フェアウェイ、ラフ、林・樹木、バンカー、道・カート道、建物、グリーン、OB、川、池、海から属性を選びます。
  3. 太さを1、3、5、7、9マスから選びます。
  4. 3D地形をドラッグして塗ります。地形の回転は右ドラッグを使います。
  5. 「属性編集を終了」を押して通常表示へ戻ります。

不明は判定対象内だが属性が未確定の場所です。OBは利用者へ警告する対象なので、判定対象外にはしません。

判定対象外maskを編集する

  1. 「判定範囲を編集」を押します。
  2. 「判定対象」または「判定対象外」を選びます。
  3. 太さを選び、3D地形をドラッグして塗ります。
  4. 「判定範囲編集を終了」を押して通常表示へ戻ります。

判定対象外は地表属性とは別のmaskです。スマホアプリの方向・地形・標高検索から完全に除外する場所だけを対象外にします。

ルートを編集する

基本ルートpanel、ルート編集button、地形上のルートを番号で表示

  1. 基本ルートpanelで、TEEから各ポイント、案内目標までの区間距離・高低差と全長を確認します。
  2. 「ルートを編集」を押します。
  3. 地形上のpin以外の場所をclickすると、最も近い区間へ新しいルートポイントが入ります。
  4. 番号pinをドラッグすると移動します。番号pinを右clickすると削除します。
  5. 「すべて削除」は全ルートポイントを消します。TEEとGreenは消しません。
  6. 「ルート編集を終了」を押して通常表示へ戻ります。

ルート全長は TEE → P1 → P2 … → GreenまたはCup の全区間を含みます。

距離表示を使う

距離表示の設定、距離円弧、基準点付近を番号で表示

  1. 右側の「距離表示」を選びます。初期基準点はレギュラーTEEです。
  2. 地形上に基準点から50yardまたは50m刻みの距離円弧が出ます。
  3. ↑キーでTEEからP1、P2、P3の順に進み、↓キーで前のポイントへ戻ります。最後のルートポイントとTEEで停止します。
  4. 地形上のTEEまたは番号pinを押して直接選ぶこともできます。同じpinをもう一度押すとTEEへ戻ります。
  5. yard/meterを切り替えます。

文字入力欄や選択欄を操作している間は、上下キーを距離基準点の変更に使いません。

Undoで編集を戻す

「戻す」または Command+Z(Windows系はCtrl+Z)で、現在ホールの直前の編集を最大40手まで戻せます。

コース/ホールの作成・削除、JSON読込、床変更は一手Undoの対象外です。Redoはありません。

保存、検査、JSON入出力

作業保存、検査、CourseとHoleの入出力、検査結果を番号で表示

  1. 作業保存/検査/出力:「作業保存」はブラウザ内へ途中状態を保存します。「検査」は必須項目、配列size、座標範囲、ID重複、Tee接続等を調べます。検査合格後にCourseまたはHoleを出力します。
  2. 表示切替:線、段彩、写真と属性overlayを使い、出力前に位置関係と塗りを見直します。
  3. 縦断図:Teeから現在の案内目標までの標高変化と距離を確認します。

芹が谷H3で属性とルートを編集した場合の保存手順

  1. 芹が谷H3を選択した状態で「作業保存」を押します。
  2. 「検査」を押し、validation errorがないことを確認します。
  3. 「Course出力」を押し、芹が谷の全ホールを含むCourseDataを保存します。
  4. H3だけを別ファイルでも受け渡す場合に限り、「Hole出力」も押します。
  5. 後日続きから作業するときは、出力したCourseDataを「Course読込」で読み込みます。

「作業保存」だけではJSONファイルは作られません。確実に残す場合は「検査」の後に「Course出力」まで行ってください。また、編集後に元の未編集CourseDataを再読込すると、作業一覧にある同じcourse IDの内容が未編集状態へ置き換わります。

保存先とファイル名

操作保存される場所内容
作業保存現在使用しているブラウザ内の保存領域途中作業。ファイルは作りません。
Course出力現在使用しているブラウザで設定されたdownload先<course-id>.course.json
Hole出力現在使用しているブラウザで設定されたdownload先<hole-id>.hole.json

SafariまたはChromeの標準設定では通常 /Users/trons-fuyuki/Downloads/ へ入りますが、ブラウザの設定でdownload先を変更している場合は、その指定先へ保存されます。芹が谷なら代表的な保存先は /Users/trons-fuyuki/Downloads/serigaya.course.json です。同名ファイルが既にある場合は、ブラウザがファイル名へ連番を付けることがあります。

Course出力とHole出力は、読み込んだ元のJSONを上書きせず、新しいJSONをdownloadします。Safariで「作業保存」した内容とChromeで「作業保存」した内容は共有されません。ブラウザの履歴やサイトデータを削除すると途中保存が失われる可能性があるため、最終保存として残す場合はCourseDataも出力してください。

JSONを読み込む

困ったとき

製品データの画像について
every_golfは国土地理院のdata・画像を採用します。Google画像を製品データへ使用しません。

ai_team

アプリケーション設計:概要書

資料作成者:OpenAI Codex(gpt-5.6-sol) 更新日:2026年9月3日

このページの位置づけ
every_golfのスマホアプリ、Even G2アプリ、外付け方位センサー、現在地取得機能の役割と、ラウンド中の基本動作を整理した概要書です。ここに書かれた機能が実装済みという意味ではなく、今後の設計と実装で共通の基準として使います。

製品構想の正本は /Users/trons-fuyuki/Projects/every_golf/doc/from_fuyuki/PROJECT_VISION.md です。このシステムは完全な攻略法を決定するものではありません。コースデータ、現在地、プレイヤーの登録情報から基本的な番手と方向を提案し、最終判断はプレイヤーが行います。

実現する体験

プレイヤーが現在地で次のショットを検討するとき、スマホアプリがコースデータ、現在地、頭部方位、登録済みの番手とキャリーを組み合わせ、Even G2へ必要な情報を表示します。

風、プレイヤーの当日の調子、ボールの沈み方、木の実際の高さや枝の張り出しは判定しません。現地の視界と状況を見たプレイヤーの判断を優先します。

システム全体の構成

application-system-architecture-drawio.png

スマホアプリをシステムの中心とします。スマホアプリがデータとラウンド状態の正本を持ち、Even G2アプリは表示と操作を担当します。G2との接続が一時的に切れても、ラウンド情報はスマホ側に残します。

役割分担

構成要素主な役割担当しないこと
スマホアプリデータ保持、位置情報の選択、提案計算、ラウンド進行、ショット・スコア記録頭部方位そのものの計測
BLE接続GPS緯度・経度、測位時刻、精度等をスマホへ提供番手提案、コース判定、スコア管理
外付け方位センサー頭部方位、必要に応じて傾き、校正状態をスマホへ提供現在地取得、コースデータ保持、攻略判断
Even G2アプリHUD表示、ラウンド操作、番手変更、スコア入力・修正永続データの正本管理、重い判定処理
Web UIプレイヤープロフィールの入力・編集ラウンド中に必須となる処理

Web UIは便利な編集手段ですが、通信できないゴルフ場でもラウンドできるよう、ラウンド中の基本機能はスマホ内だけで成立させます。

スマホアプリの役割

スマホアプリは、入力データを集約して判断し、ラウンド状態を保存する中心装置です。

現在地の取得元

現在地はスマホ内蔵GPSだけに固定しません。スマホアプリ内に共通の「現在地提供元」を用意し、スマホ内蔵GPSとBLE接続GPSを同じ形式で扱います。

選択モード動作
自動接続中で、有効かつ新しいBLE GPS情報を優先します。使用できない場合はスマホ内蔵GPSへ切り替えます。
スマホGPSスマホ内蔵GPSだけを使用します。
BLE GPSBLE接続GPSだけを使用します。使用できない場合は現在地が必要な操作を止め、警告します。

2つのGPS座標は根拠なく平均しません。採用した1つの測位結果を、その時点の現在地として使用します。自動切替が起きた場合は、G2へ使用中の情報源と注意状態を通知します。

共通の現在地データ

各GPSから受け取った情報は、スマホアプリ内で次の共通形式へ変換します。

項目内容必須
sourcephone_gpsまたはble_gps必須
latitude / longitude緯度・経度必須
altitudeGPSが報告した標高任意
horizontalAccuracyM水平精度の目安必須
verticalAccuracyM垂直精度の目安任意
timestamp測位した時刻必須
fixStatus測位の有効性やfix状態必須
satelliteInfo衛星数等、機器が提供できる品質情報任意

FloorDataの標高とGPSが報告する標高は用途を分けます。コース上の高低差計算はFloorDataを基準とし、GPS標高は測位品質の確認や将来の検証材料として扱います。

BLE接続GPSの扱い

BLE接続GPSは「現在地提供元」です。方位センサーとは別の機能として設計します。将来、GPSと方位センサーを同じ筐体や同じBLE機器へ統合する場合も、スマホアプリ内では位置情報と頭部方位を別々の入力として扱います。

未確定
BLE GPSの具体的な機種、BLE serviceとcharacteristic、データ形式、通知周期、許容精度、情報を期限切れとする秒数は、機器選定と実測後に決定します。現時点では特定機器専用の形式へ固定しません。

現在地を使う処理

処理現在地の使い方
コース検索各ホールのFloorData境界と現在地の最短距離を調べ、どれか1ホールでも2km以内にあるコースを表示します。
Teeショット開始現在地から登録済みTee座標までの距離を調べ、半径5m以内であれば成立します。
現在のライ現在地に対応するFloorDataセルの地表属性を取得します。
ショット記録直前のアドレス位置から現在地までの距離、到着地点の属性、使用した位置情報源を記録します。
番手・方向提案現在地、基本ルート、FloorDataの標高、プレイヤーのキャリーを組み合わせます。

CourseDataには、コース検索用として各ホールのFloorDataの四隅または同等の境界情報を保存します。ホール番号だけでOUT・INを決めず、それぞれに所属するhole IDを明示します。

プレイヤープロフィール

プロフィールはスマホアプリまたはWeb UIで入力します。スマホアプリはラウンド中に使える状態でプロフィールを保持します。

キャリーが未入力の番手は選択候補へ出しません。パターはデフォルトで所有しているものとして扱います。

コース検索とラウンド開始

  1. G2で「コースを探す」を押します。
  2. スマホアプリが現在地とCourseData内の各FloorData境界を比較します。
  3. どれか1ホールでも2km以内にあるコース名をG2へ表示します。
  4. プレイヤーがコースを選びます。
  5. OUT、IN、FULLからラウンド形式を選びます。
  6. CourseDataに明示されたhole IDの順序でラウンドを開始します。

ラウンド中の状態

ラウンド中は、次の状態をスマホアプリが管理します。

コース選択
  ↓
ラウンド設定(OUT / IN / FULL)
  ↓
Teeショットモード
  ↓ 「アドレス状態」ボタン
アドレス状態
  ↓ ショット
通常ショットモード
  ↓ 「アドレス状態」ボタン
アドレス状態
  ↓ 必要回数繰り返す
ホールアウト
  ↓
スコア確認・修正
  ↓
次ホールのTeeショットモード

Teeショットモード

  1. プレイヤーが「Teeショット」ボタンを押します。
  2. スマホアプリが半径5m以内に登録済みTee座標があるか検査します。
  3. 成立したらTeeショットモードを開始します。
  4. 提案された方向と番手を確認し、必要であれば登録済み番手へ変更します。
  5. 「アドレス状態」ボタンを押すと、正式なアドレス状態へ進みます。

通常ショットモード

  1. プレイヤーが次のボール位置へ移動し、「アドレス」ボタンを押します。
  2. 直前のアドレス位置から現在地までを前回ショットの飛距離として記録します。
  3. 前回使った番手と、現在地の床属性を記録します。
  4. 現在地から次の打数のショットモードを開始します。
  5. 提案された方向と番手を確認・変更し、「アドレス状態」ボタンを押します。

「アドレス」ボタンは前回ショットの確定と次ショットの検討開始に使います。「アドレス状態」ボタンは、方向と番手を決めた後にスイング姿勢へ進むための別操作です。

正式なアドレス状態

ショット方向を検討している状態と、実際にスイングする姿勢を区別します。正式なアドレス状態では、右打ちの場合、ショット方向に対して上から見て時計回りに90度回転した向きを基準にします。左打ちは反対方向の90度を基準にします。

方位センサーから受信した頭部方位と基準方向を比較し、G2へ左右の回転量や一致状態を表示します。方位センサーが未接続、未校正、精度不足の場合はアドレス案内を止め、理由を表示します。

番手とショット方向の提案

  1. 現在地から基本ルートを先へたどります。
  2. プロフィールに登録された番手とキャリーを候補にします。
  3. 番手ごとの一般的な弾道の高さと、現在地から着弾候補までの高低差を使ってキャリーを補正します。
  4. 補正後のキャリーと基本ルートが交わる付近を提案方向とします。
  5. プレイヤーが別の登録済み番手へ変更した場合は、キャリー、方向、周辺情報を再計算します。

風は計算へ入れません。木や建物の実際の高さもFloorDataにないため、弾道が越えるかどうかは判定しません。

登録されたキャリーでは池や森などへ到達する場合、同じ番手を使うときの力加減を20%単位で案内できます。人が再現しにくい5%単位の表示は行いません。

障害物・地形情報の表示

表示対象は次の6種類です。これらの存在を理由に基本ルートや提案方向そのものは変更せず、プレイヤーが判断するための情報として表示します。

暫定の最大表示件数は5件です。提案したショット方向とキャリーに近い対象を優先し、左右へ外れた場所よりも、ショット方向の手前や先にある対象を優先します。

未確定
ショット中心線から左右何mまでを検査するか、着弾候補の手前と先を何mまで検査するか、対象が重なった場合の詳細な順位は、FloorDataを使った試験で決定します。

G2へ表示する情報

情報名、方向記号、距離を小さな表示へまとめます。距離を1行目、方向記号と情報名を2行目にする表現を基本とします。

145yd
▼ Green

HUDには次を表示します。

G2アプリの役割

G2アプリはスマホアプリから表示用データを受け取り、プレイヤーの操作をスマホへ返します。

G2側ではCourseData一式やスコアの正本を持ちません。操作イベントをスマホへ送り、スマホが検査・保存した結果を再表示します。

外付け方位センサーの役割

外付け方位センサーは、プレイヤーの頭が向いている方角を測定し、BLEでスマホへ送ります。

方位センサーは番手、ルート、障害物、スコアを判断しません。購入済みのAE-NRF52840単体には方位センサーがないため、追加センサーの選定とファームウェア実装は現在保留中です。

ホールアウトとスコア

  1. 「ホールアウト」ボタンを押すと、直前のアドレス位置から現在地までを最終ショットとして記録します。
  2. そのホールの総打数とParを比較し、バーディ等の対Par表現を表示します。
  3. パット数を入力します。パット数は総打数に含まれる内数で、チップイン等では0回も認めます。
  4. チップイン、押し間違い、ペナルティ等へ対応するため、総打数、パット数、ペナルティを修正できます。
  5. 自動記録したショット履歴と、最終確定したスコアを分けて保持します。

スコア表示の呼称と見せ方は、「みんなのGOLF」シリーズで馴染みのある対Par表現を参考にします。

主なデータ

データ内容正本を持つ場所
PlayerProfile左右の打ち方、所有番手、番手ごとのキャリースマホアプリ
CourseDataコース情報、OUT・INのhole ID、検索用FloorData境界スマホアプリ
HoleData / FloorData地形、属性、Tee、Green/Cup、基本ルートスマホアプリ
LocationSampleGPS情報源、座標、精度、時刻、測位状態スマホアプリが選択
HeadPoseSample頭部方位、傾き、校正状態、時刻方位センサーから受信
RoundStateコース、ホール、打数、現在のモードスマホアプリ
ShotRecord始点・終点、番手、距離、ライ、位置情報源スマホアプリ
HUD表示データG2へ表示する提案、方向、距離、警告スマホアプリが生成

異常時と復旧

状態動作
BLE GPS切断自動モードではスマホGPSへ切り替えます。BLE GPS固定モードでは位置依存操作を止めます。
GPS情報が古い・無効・精度不足Tee判定やショット位置確定を止め、G2へ理由を表示します。
方位センサー切断・未校正アドレス方向案内を止め、再接続または校正を案内します。
G2切断スマホ側でラウンド状態を保持し、再接続後にHUDを復元します。
CourseData不正ラウンド開始前に拒否し、不足項目を表示します。
キャリー未登録の番手番手選択候補へ表示しません。

確定している方針

実装前に決定・検証する項目

現在の実装状況
このページはアプリケーション設計の概要です。スマホアプリ、Even G2アプリ、BLE GPS連携、方位センサーファームウェアが完成したことを示す資料ではありません。実装後は自動テストだけでなく、スマホ、G2、GPS、方位センサーを組み合わせた実地確認が必要です。