← 一覧に戻る

athleat-vision

GitHub ↗ C# 最終push: 2026/10/22 15:54

WIP(現在進行中)

Work In Progress

このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。

現在の状況

(2026-10-21 18:41 時点)

今どこまで進んだか

  • 試作 0.10.0(ビルド 12)を App Store Connect にアップロードした(コミット 5814604)。内部テストに入ったかは未確認。トムソンへの連絡案は作成済みで、You が送る
    • 練習プレイ(仕様書 v1.6、5項目を通して診断だけ): 練習待機 → 練習 → 練習完了のパネル → 本番待機 → 本番。初回は練習必須で「もう一度練習」、再診断は「練習をスキップ」。試作メニューに「初回として試す」
    • 追う力(段階版+5%)を追加、段階版は比較用に残す
    • 周りに気づく力(6回×2)を追加(サイン 0.20 秒・区切りなし・待ち 0.5〜0.9 秒・最初に START)、調整版は比較用に残す
    • 通しの診断の各項目は、練習が入った以外は 0.7.0 の構成のまま
  • 0.8.0(画像サイズのシート)・0.8.1(シートの高さ・カードの背景)はトムソンの実機確認で一旦完了
  • トムソンの 0.9.0 の結果: 追う力(段階版)93・100・100点、周りに気づく力(調整版)92・90・81点(3回目は開始に気づかず最初のサインを見逃した)
  • テスト 222 件。シミュレータで練習の流れ(反応の速さ・追う力)、スキップ、「初回として試す」、周りに気づく力(6回×2)を確認

次に何をするか

  • ビルド 12 が内部テストに入ったか確認し、You がトムソンに 0.10.0 の連絡を送る
  • トムソンの 0.10.0 の確認結果を受けて調整(練習プレイの見た目と流れ、追う力 +5% の採否、周りに気づく力 6回×2 の難しさと所要時間)
  • 「今日の反応チェック」の仕様をトムソンが共有予定。受け取ったら読み、気になる点を返す(実装は診断の調整と練習プレイが一段落してから)
  • 判断する力・周りに気づく力・見極める力の練習をエディタかシミュレータで通す(通しの診断で追う力の本番を越える必要がある)
  • 反応の速さを Play 確認、「5項目を通して診断」で練習込みの所要時間を実測
  • その後: 一時停止の仕様どおりの実装、正解時の気持ちよさ(アニメーション・触覚)の相談、実機での計時の確認

詰まっていること・未決事項

  • 通しの診断を新しい版(追う力の段階版、周りに気づく力の新しい版・白枠なし)にいつ切り替えるか。練習の見え方は本番に合わせるので、切り替えたら練習も変わる
  • 周りに気づく力は2ブロックのままなので、点滅数を1回間違えたときの影響(約1割)は残る。トムソンは試作結果を見て 4回×3ブロック案を再検討する
  • 仕様書の本文と違うまま進めているもの: 追う力の奥行き、スワイプの受付範囲、下のブロックの高さ(トムソンには伝えていない)。「反応時間も測定します。」の位置(0.10.0 の連絡で伝える)
  • 正式ロゴの素材待ち。多言語・320px 幅の確認は多言語対応のとき
  • 条件面(配信アカウントとバンドル ID、経費負担・権利帰属、50:50 の中身、既存アプリの実数)と「診断」の文言方針

過去のWIPアーカイブ

(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)

2026-10-18 16:21 時点のスナップショット

今どこまで進んだか

  • 試作 0.7.0(ビルド 8)を App Store Connect にアップロードした(コミット 7093bec)。内部テストに入ったかは未確認。トムソンへの返信案は作成済みで、You が送る
    • 追う力: 比較版 A(8問目を 7球・速さ +20%)・B(8問目を 8球・+10%、対象の接近は 3〜4 回にそろえる)をメニューに追加。結果画面に「8問目(比べる問題)」
    • 周りに気づく力: サイン 0.3 秒の比較版(中央の点滅の時刻は現行と同じ)
    • 見極める力: 通しの診断を速度パターン版に(暫定)。パラメータ版 proto_2(次の通しの診断は前回と比較しない)
    • 試作メニューは12項目を縦スクロール、指を離したときに選ぶ
  • 0.5.0(診断カード・結果ページ)と 0.6.0(追う力 8問など)の記録漏れを DEVLOG に補記した
  • トムソンの 0.6.0 の感想: 追う力はまだ簡単に 100点、周りに気づく力は 90〜100点、見極める力は調整版 82.2点・速度パターン版 76.3点(6回の平均)
  • テスト 199 件。修正方針と差分は GPT にもレビューしてもらった(.devnotes/discussions/2026-10-18-proto-0.7.0-plan.md)

次に何をするか

  • ビルド 8 が内部テストに入ったか確認
  • トムソンの 0.7.0 の比較結果を受けて調整: 追う力は A か B か(B で差が小さければ、8球の自然な混雑=対象は接近が最も多い組も試す)、周りに気づく力 0.3 秒の採否、見極める力の版の確定
  • 反応の速さを Play 確認(0.3.0 以降未確認)、「5項目を通して診断」で所要時間を実測(追う力 8問で約1分延びた)
  • 正解時の気持ちよさ(判定のアニメーション・触覚)は、ゲーム性と難易度が固まってからトムソンと相談
  • その後: 一時停止の仕様どおりの実装(再開・復帰用練習)、練習プレイ(トムソンが5項目共通で整理予定)、実機での計時の確認

詰まっていること・未決事項

  • 追う力 A・B の差は8問目の1問だけなので総合点には出にくい。比較は「8問目の正答と手応え」で見てもらう(返信で依頼)
  • 正式ロゴの素材待ち(いまは仮のロゴ)。仕様の変更はトムソンが整理し、確定したものから HTML 仕様書に反映する
  • 仕様書の本文と違うまま進めているもの(トムソンには伝えていない): 追う力の奥行き、スワイプの受付範囲、下のブロックの高さ
  • 条件面(配信アカウントとバンドル ID、経費負担・権利帰属、50:50 の中身、既存アプリの実数)と「診断」の文言方針

2026-10-15 17:14 時点のスナップショット

今どこまで進んだか

  • 試作 0.4.0(ビルド 5)を App Store Connect にアップロードした(コミット caf70ce)。処理が終われば内部テストで配信される見込み(17:14 時点ではまだ一覧に出ていない)。You がトムソンに変更点を返信した。返事待ち
    • 追う力: 毎問「点滅 → 光ったまま 0.6 秒 → START → 追跡」、説明2行・下の案内なし。重なりは小さいほうの球の半分まで、対象とそれ以外の接近が 3〜4 回の新バンク、対象は接近の多い組から(仕様から変えたことは返信で伝えた)
    • 判断する力・周りに気づく力・見極める力: 判定の下に ms(測れたときだけ)、判定は次の刺激まで残す。説明はトムソンの文言
    • 周りに気づく力: 点滅 1〜4 回、時刻はサインから独立。「点滅数 ✓/×」
    • 見極める力(調整版): 回答猶予 0.75 秒(止まってから 0.15 秒は残す)。診断版は 0.9 秒のまま
  • You の Play(エディタ): 追う力 81、判断する力 88、周りに気づく力 75、見極める力(調整版)55。You は全部 OK
  • テスト 172 件。ビルドは Unity CLI(エディタを閉じて)→ xcodebuild archive → exportArchive でアップロード

次に何をするか

  • ビルド 5 が内部テストに入ったか確認
  • トムソンの 0.4.0 の感想を受けて調整(追う力の難しさ、見極める力の受付時間、周りに気づく力の点滅)。見極める力の速度パターン混在は、トムソンが受付時間の短縮を見てから必要なら検討
  • 判断する力の「判定を上へ」の依頼が何を指していたか、トムソンの返事を待つ
  • 反応の速さを Play 確認(0.3.0 以降未確認)、「5項目を通して診断」で所要時間を実測
  • 正解時の気持ちよさ(判定のアニメーション・触覚)は、ゲーム性と難易度が固まってからトムソンと相談(トムソンの予告)
  • その後: 一時停止の仕様どおりの実装(再開・復帰用練習)、固定練習と答え合わせ、実機での計時の確認

詰まっていること・未決事項

  • 正式ロゴの素材待ち(いまは仮のロゴ)。結果画面とカードはトムソン側で再検討中。仕様の変更はトムソンが整理し、確定したものから HTML 仕様書に反映する
  • 仕様書の本文と違うまま進めているもの(トムソンには伝えていない): 追う力の奥行き、スワイプの受付範囲、下のブロックの高さ
  • 条件面(配信アカウントとバンドル ID、経費負担・権利帰属、50:50 の中身、既存アプリの実数)と「診断」の文言方針

2026-10-14 17:54 時点のスナップショット

今どこまで進んだか

  • 試作 0.3.0(ビルド 4)を TestFlight の内部テストで配信中(コミット 1f11b88)。トムソンの 0.2.0 の感想(10/13)を反映し、You がトムソンに変更点を返信した。返事待ち
    • 判定の一言は全課題で奥の壁の上辺の少し下(前面の子 Canvas)。追う力・周りに気づく力・見極める力は床の光なし
    • 反応の速さ: 的を 10% 大きく。追う力: 速さ 20% 増(0.216 / 0.288)、最初に START、追跡中は案内を消す。判断する力: ガラス風のパネル。周りに気づく力: 点滅を暗い紺に、サイン後の点滅 +0.5 / +0.8 秒を追加、サインを 0.45W に
    • 見極める力は診断版と調整版(止まらずつなぐ・1.5 倍速)をメニューに並べて比べてもらう。調整版は通しの診断に入れていない
  • 0.2.0(10/09)でメニューから5課題と通しの診断を選べる形になり、追う力はタップなしで始まり、対象は点滅、回答の期限なし(その回は DEVLOG 未記録)
  • You の Play(エディタ): 追う力 83、見極める力 診断版 82 → 調整版 72、判断する力 79、周りに気づく力 78(中央の点滅 2/2 正解)。反応の速さは 0.3.0 で未確認
  • テスト 162 件(純粋ロジック)。ビルドは Unity CLI(エディタを閉じて)→ xcodebuild archive → exportArchive でアップロード

次に何をするか

  • トムソンの 0.3.0 の感想を受けて調整。見極める力は ③(フェイントと本命の速さの差を複数パターン混在)か、回答猶予(本命開始から 0.9 秒)の短縮を検討
  • 反応の速さを 0.3.0 で Play 確認
  • 「5項目を通して診断」で所要時間を実測
  • その後: 一時停止の仕様どおりの実装(再開・復帰用練習)、固定練習と答え合わせ、実機での計時の確認

詰まっていること・未決事項

  • 正式ロゴの素材待ち(いまは仮のロゴ)。結果画面とカードはトムソン側で再検討中
  • 仕様書の本文と違うまま進めているもの(トムソンには伝えていない): 追う力の奥行き、スワイプの受付範囲、下のブロックの高さ。周辺サインの距離 0.45W と点滅の時刻はトムソンの依頼で変えた
  • 条件面(配信アカウントとバンドル ID、経費負担・権利帰属、50:50 の中身、既存アプリの実数)と「診断」の文言方針

2026-10-05 13:24 時点のスナップショット

今どこまで進んだか

  • 企画・仕様はトムソンの仕様書 v0.9(~/Downloads/アスリートビジョン_企画仕様_v0.9_20261004.html、2026-10-04)。トレーニング画面は「暗い部屋マスター v3」の5課題・7状態の画像が見た目の正本で、出題・入力・計時・採点などのロジックは既存仕様のまま。結果画面とカードはトムソン側で再検討中なので作り込みは待つ
  • 5課題すべてをトレーニング画面案の見た目に作り直した(部屋の背景 RoomBackground、共通部分 TaskScreen と配置 FieldLayout.HeaderFirst、課題ごとの *ScreenView と *Sprites)。上は「課題名(通しの診断では 1/5)」と「計測」+進捗バー+「n / N」。右上の一時停止は中断してメニューへ戻る(仕様の再開と復帰用練習は未実装)。ロゴは仮
  • 追う力は奥行きあり(MotSpace / MotTrajectory3D / MotSeedBank3D、画面上で重ならない軌跡だけ)。v0.9 の「全て同径」とは表現が違うが、You の判断で奥行きありのまま(トムソンには伝えていない)
  • スワイプ3課題(判断・周り・見極め)は画面のどこから始めても数える。下のブロック(操作エリア)は最低 0.55W
  • 見た目の確認は DebugCapture(単独の課題の要所を logs/screens_* に PNG で保存)。純粋な画素関数は、作業フォルダの確認用プログラムでエディタの外でも PNG に書き出せる(リポジトリ外)
  • テスト 149 件(純粋ロジック)。Play での確認: 反応の速さは OK(You の確認で「完璧」)、判断・周りは完走、追う力(奥行き)は 2問だけ取れた(0/2・2/3)、見極めは未確認
  • このまとめで、9/25 からの未コミット分も含めてコミットした

次に何をするか

  • 見極める力を Play で確認
  • 追う力(奥行き)を最後まで通して、難しさと見え方を確認(速さ、すれ違いを許すか)
  • 「6. 診断を通しで」で所要時間を実測
  • 試作で見えた論点をトムソンと共有(MOT の天井は奥行きで解消するか、周辺の中央の点滅を数える難しさ、GVS の丸めの食い違い、例外タイプの武器)
  • その後: 一時停止の仕様どおりの実装(再開・復帰用練習)、固定練習と答え合わせ、実機(iPhone)での計時と見た目の確認

詰まっていること・未決事項

  • 周りに気づく力の中央の点滅は数えにくいまま(試作で 4ブロック中 0、今回 2ブロック中 0)。点滅の見えにくさか、同時課題そのものの難しさかはまだ分からない
  • 正式ロゴの素材待ち(いまは仮のロゴ)
  • 追う力の奥行き、周辺パネルの大きさ、スワイプの受付範囲、下のブロックの高さは、仕様書の本文(平面の数値、0.32W の操作パッドの中だけ)と違う。トムソンには伝えていない(DECISIONS.md)
  • 診断中の「練習 1/2」の表示は、練習を実装してから
  • 条件面(配信アカウントとバンドル ID、経費負担・権利帰属、50:50 の中身、既存アプリの実数)と「診断」の文言方針

2026-09-25 20:00 時点のスナップショット

今どこまで進んだか

  • 企画はトムソンの提案資料(~/Downloads/アスリートビジョン.html、2026-09-13 版)。条件は売上 50:50
  • Unity プロジェクト athleat-vision-unity/(6000.3.14f1、Universal 2D)。Player Settings は ProjectSetup.cs のメニューで適用済み
  • 診断5課題の試作が完成(反応・判断・見極め・追う力 MOT・周辺。score_v3 の採点まで)。判断以外はエディタで完走し、計時が仕様どおりなことを JSON ログで確認した
  • 診断ロジック(GVS・7タイプ・武器・重点2項目)を実装し、資料の例をテストで再現。試作メニュー「6. 診断を通しで」で総合結果と所要時間を出し、diagnosis_<UTC>.json に保存する
  • 試作メニューの並びは診断の実施順(資料の「診断 1/5〜5/5」と同じ): 1: 反応、2: 追う力、3: 判断、4: 周辺、5: 見極め、6: 診断を通しで。以前は実装した順(追う力が4番)だったのを You の指摘で直した(2026-09-25)
  • テストは純粋ロジック 139 件(tools/unity-run-pure-tests.sh でエディタを開いたまま実行できる)。見た目は作り込まない方針だが、反応の速さの画面だけ作り込んだ(You の依頼): 提案資料の「診断プレイ」1枚目を元に、「診断 n/5」と「ベスト」は出さず(ベストは仕様「診断中に最速値を煽らない」に合わせる)、説明文は仕様の文言。ReactionScreenView(自前キャンバス、上下のブロックを端に寄せてフィールドを中央に置く FieldLayout.AnchoredStack)、フォントは Noto Sans JP(OFL、hinata-mahjong から流用し Resources/Fonts/ に同梱+ライセンス文)、手のアイコンは Codex で生成(Resources/Icons/icon_tap.png、線を元画像に合わせて細く描き直し)。エディタで確認中: 入力を画面全体に変更、カードが灰色に見えた件(リニア色空間)・文字が中央に見えない件・アイコンの下半分が欠けた件(自動切り分け)を修正済み。反応の速さは You の確認で OK(2026-09-23)
  • 追う力の画面も作り込み(You の依頼): 共通部分を TaskScreen(背景・回数・題名・説明・下部カード・カード上の一言)に切り出し、ReactionScreenView と MotScreenView がその上に乗る。球は立体の銀色(ProceduralSprites.Sphere)、対象は青い球+シアンの輪+光、回答中の選択は白い輪、正解表示は青=対象・白い輪=選んだ・アンバーの輪=選び間違い。回答中は下部カードが「決定」ボタン(k 個そろうまで押せない)。資料の画像にある球の尾(軌跡)は「説明用」とあるので描かない。球の大きさは仕様値(半径 0.035W)のままで、元画像の球はこれより約1.5倍大きい。旧表示 MotBallsView は削除。エディタでの見た目の確認はまだ
  • 判断する力の画面も作り込み(You の依頼、2026-09-25): GoNoGoScreenView(TaskScreen の上)。フィールドの上下左右に短い目印、中央に尾つきの矢印(元画像から測った形: 軸の太さ 0.10W・頭の高さ 0.20W・先端は中心から 0.19W、尾は −0.28W まで薄れる)。No-Go は赤い矢印を×枠で囲む(仕様どおり。画面イメージは色だけ)。下部カードは凡例2行(←→ 青:矢印の方向にスワイプ/☒ 赤:反応せず止まる)で、TaskScreen に凡例の行(SetCardRows)を足した。説明文は仕様の文言で、キーワードを凡例の色に。スワイプは画面のどこから始めても数える(最初はフィールドより下だけにしたが、You が矢印のまわりでスワイプして 12 問中 10 問が受付範囲外になったため変更。DECISIONS.md)。判定の一言は矢印が消えた後に中央へ。図形は GoNoGoSprites が画面と同じ画素数で描き、画素関数は純粋なのでエディタ外でプレビューを確認済み(生成は1枚 30〜60ms)。エディタでの見た目の確認はまだ
  • 詳細は下の「2026-09-23 20:00 時点のスナップショット」と DEVLOG.md

次に何をするか

  • 試作で見えた論点をトムソンと共有(下記)
  • 「6. 診断を通しで」で所要時間を実測(今回は見送り)。判断する力の完走ログもここでそろう
  • 結果説明(今回の観察+次に練習すること)と再診断の比較(上昇・横ばい・低下・比較不可)を純粋ロジックで実装
  • 実機(iPhone)で計時を確認(120Hz が出ているか、入力イベント時刻とフレーム時刻の差)
  • その後: 固定練習と答え合わせ、通常トレーニング Lv1〜10、MOT の B案との比較

詰まっていること・未決事項

  • 試作で見えた仕様上の論点(トムソンと共有したい):
    • MOT が天井(You は全問完全正答で 100 点)。5尺度が正規化されていないので、タイプがロックオン型に偏るおそれ
    • 周辺の同時課題が難しすぎる可能性。点滅は見えていて、中央だけに集中した回でも回数を取り違えた(4ブロック中0正解)。中央を捨てても最大80点なので、捨てる戦略のほうが得にならないかも見る必要がある
    • GVS の丸めの記述が資料内で2通りある(実装は共通例Aに合う「丸めた5能力から」)
    • 例外タイプ(オールラウンダー・ポテンシャル)の「武器」が未定義
    • 反応の速さの入力範囲を仕様の「中央の円の中だけ」から「画面のどこでも」に変更(案内カードがボタンに見えて押されるため。DECISIONS.md)
    • 判断する力のスワイプの受付範囲を、仕様の操作パッド(W×0.32W)から「画面のどこでも」に変更(矢印のまわりでスワイプすると数えられなかったため。DECISIONS.md)
  • 条件面: 配信アカウントとバンドル ID(jp.thomsons.athletevision は暫定)、経費負担・権利帰属、50:50 の中身(手数料控除の前後・経費)、既存アプリの実数(月間DL・課金率・継続率)
  • 「診断」の文言方針(医療機器と誤認されない表現)

2026-09-23 20:00 時点のスナップショット

今どこまで進んだか(実装)

  • 共通基盤: AppClock(単調時計)、FrameMonitor(50ms 超のフレームで技術的無効)、SeededRandom、Statistics((n−1)p 線形補間の分位点・half-up 丸め)、ReleaseGate(全指解放 200ms)、FieldLayout(セーフエリアから W×W フィールド・HUD・操作パッド、0〜1 正規化座標)、FieldView(コード生成の最小 UI、円・矢印・×枠は実行時生成スプライト)、PointerInput(Input System の押下・移動・解放をイベント時刻付きで受け取り AppClock に換算)、SwipeDetector(0.06W 変位で方向確定)、TaskRunnerBase / SessionRecordBase(課題共通の要約・記録)
  • 反応の速さ(診断 8問、score_v3): 実装済み。エディタで 8問完走し、JSON ログで計時を確認した。入力イベント時刻はフレーム時刻より 0.3〜7.3ms 早く(120Hz のサブフレーム精度)、onset は予定時刻から最大 1 フレーム遅れ、フレーム落ちなし
  • 判断する力(Go / No-Go 12問、score_v3): 実装済み・純粋ロジックのテスト済み。エディタで途中まで動作確認(問題なし)
  • 見極める力(フェイント耐性 10問、score_v3): 実装済み・テスト済み。エディタで 10問完走し、commit − onset が T1 と一致、本命開始〜端到達も理論値どおり(スコア 80、1問だけ初動につられて方向ミス)
  • 追う力(MOT 試作 A案 4問、score_v3): 実装済み・テスト済み。軌跡は MotTrajectory(等速直線+鏡面反射の折り返し式、1/240 秒刻み+区間内最接近で 2r+0.015W 未満を不採用)。問題バンク MotSeedBank(速さごとに成立 seed 12 個、tools/mot-seed-scan.sh で作成。0.24 は候補あたりの成立率が低く 1 seed に平均 57 候補かかる)。エディタで 4問完走(全問完全正答=天井の懸念あり、追跡 5.00 秒・フレーム落ちなし)
  • 周りに気づく力(4問×2ブロック、score_v3): 実装済み・テスト済み。中央点滅は予定オフセット(−200/−50/+100ms)で回答に関係なく出す。中央回答は 0〜4 の5択・4 秒。技術的無効はブロック単位で補充。判定表示は診断版(各問 0.2 秒に周辺の正誤、中央回答後 0.4 秒に中央の ✓/×)。エディタで2回完走: 計時は正確(点滅開始は予定オフセットどおり、長さ 250ms、onset の遅れ 1 フレーム以内、フレーム落ちなし)。一方で中央の回数は 4ブロック中 0 正解、2回目は周辺に 1 度も回答なし(スコア 14 → 0)。原因(点滅が見えにくい/同時課題が難しすぎる/意図的に中央だけ見た)を You に確認中
  • 5課題すべて実装済み。試作の起動画面: 課題を選ぶ(1: 反応、2: 判断、3: 見極め、4: MOT、5: 周辺、6: 診断を通しで=反応→MOT→判断→周辺→見極め)→ 課題ごとに1文の説明(タップで開始)→ 計測 → 結果(タップでページ送り)。メニュー選択・課題開始・各試行の結果は [AthleteVision] 付きで Console / Editor.log に出す
  • 診断ロジック Runtime/Diagnosis/: GVS(丸めた5能力を 判断25・周辺20・反応20・追跡20・見極め15 で加重、整数演算で四捨五入)、7タイプ判定(例外2タイプの境界、最高点から3点以内の候補、前回タイプの維持、完全同点の固定順)、重点2項目(65未満の群→65以上の群、最低点+3の候補、前回順→固定順、見出しの3分岐)。前回の維持は同じ scoring_version の前回に限る。資料の表の例と共通例A(69→72、戦術眼型、反応→周辺)をテストで再現
  • 「診断を通しで」の結果1ページ目に 総合・タイプ・武器・僅差の候補・伸びしろ2項目・5能力・所要時間(本番のみ/説明画面込み)を表示し、diagnosis_<UTC>.json にまとめを保存(タイプの偏りを見る材料)
  • スワイプ3課題の試行記録に padPressCount(計測中にパッドを押した回数)と maxDragW(最大変位、W 比)を追加。無回答が「操作なし」か「動かし不足(0.06 未満)」かを区別できる
  • 確認手段: tools/unity-compile-check.sh(Unity 同梱 Roslyn でコンパイル。iOS 用エディタ拡張も -define:UNITY_IOS で確認)、tools/unity-run-pure-tests.sh(純粋ロジックの EditMode テスト 131 件をエディタなしで実行)
  • iOS: Assets/App/Scripts/Editor/iOS/ に Info.plist へ CADisableMinimumFrameDurationOnPhone を足すポストプロセス(ProMotion で 120Hz)。ビルド対象が iOS のときだけコンパイルされる
  • ログ: 各課題の完了時に Application.persistentDataPath/logs/<task>_<UTC>.json(macOS エディタでは ~/Library/Application Support/AthleteVision/AthleteVision/logs/)

今どこまで進んだか(環境・企画)

  • 企画はトムソンからの提案(~/Downloads/アスリートビジョン.html、2026-09-13 版の企画・仕様・ASO 統合資料)。条件は売上 50:50。資料を通読し、初見の感想と論点(判定しきい値が測定粒度に対して細かい/Day2 以降が地味/3日体験と7日再診断のズレ/V1 が大きい/条件面の不在)を You に伝えた
  • 診断結果カードの改善案(競技を「診断結果」ではなく「本人の属性」として見せる。色はタイプで固定)を整理し、モックを Codex で生成 → docs/mockups/result-card-01.png。カードは後回しの方針
  • Unity プロジェクト作成(You が Unity Hub GUI で作成。6000.3.14f1、Universal 2D テンプレート)→ athleat-vision-unity/
  • Assets/App/Scripts/ に asmdef 3つ(Runtime / Editor / Tests.EditMode)と ProjectSetup.cs を追加。メニュー AthleteVision > Apply Project Settings で Player Settings 適用済み(縦固定、名前 AthleteVision、バンドル ID 暫定 jp.thomsons.athletevision、iOS 15 / Android minSdk 26・ARM64・IL2CPP、スプラッシュ非表示)
  • CLAUDE.md(Unity プロジェクトの規約)と DECISIONS.md(配置・バージョン・テンプレート)を更新。.gitignore に *.slnx 追加
  • ここまで未コミット(docs/、athleat-vision-unity/、.gitignore、CLAUDE.md、.devnotes/)

次に何をするか

  • 「6. 診断を通しで」を通して、所要時間の実測(資料の目安: 本番約 167 秒+説明・練習)と総合結果の表示を確認。判断する力の JSON ログもここで初めてそろう
  • 周りに気づく力の難しさを You の体感と合わせて判断(点滅の強さ・長さ、同時課題の負荷)。調整はトムソンと相談
  • 見極めの主観(切り返しの自然さ、速さ、0.9 秒の猶予)を You に聞く
  • 結果説明(今回の観察+次に練習すること、objective_key)と、再診断の比較(上昇・横ばい・低下・比較不可)を純粋ロジックで実装
  • 実機(iPhone)で計時を確認: Unity の Build Profiles で iOS に切り替え → Builds/iOS に Xcode プロジェクトを出力 → Xcode でチームを選んで実機へ。ログは Xcode の Devices からアプリのコンテナを取り出す。見るのは入力イベント時刻とフレーム時刻の差、120Hz が出ているか
  • MOT の B案(6問短縮版)は A案の実機検証後に比較用として追加
  • 固定練習(practice_v2: 全5課題 9 試行)と答え合わせ表示は、診断本番の手触りが固まってから
  • 試作で確認すること: 5能力スコアの分布とタイプの偏り、触って面白いか
  • 課題が増えたら、ランナーの共通部分(Release → Wait → Active → Locked → Feedback、無効の補充・上限)を純粋な状態機械に切り出してテスト対象にする

詰まっていること・未決事項

  • バンドル ID / 配信アカウント(トムソン側か You 側か)。jp.thomsons.athletevision は暫定
  • 「診断」の文言方針。医療機器・医療行為と誤認されない表現にする必要がある(ストア審査・薬機法)。提案資料側もこの点は慎重
  • トムソンに確認したいこと: 既存アプリの実数(月間 DL・課金率・継続率)、経費負担・権利帰属、流用できる既存資産、カードのイラスト制作
  • 収益条件 50:50 の中身(ストア手数料控除の前後、経費の扱い)
  • 試作で見えた仕様上の論点(トムソンと共有したい):
    • MOT が天井: 2〜3個・0.18〜0.24W/秒・5秒追跡で You は全問完全正答(100点)。尺度が正規化されていないので、このままだとロックオン型に偏るおそれ。B案は時間短縮で難度は上がらない
    • 周辺の同時課題が難しすぎる可能性(中央 4ブロック中 0 正解)。中央を無視すると最大 80 点なので、捨てる戦略との比較も必要
    • GVS の丸め: 資料内で「丸め前の各項目から計算」と「丸めた5能力から加重平均」が食い違う。共通例Aの数値が合う後者で実装
    • 例外タイプ(オールラウンダー・ポテンシャル)の「武器」が資料に定義されていない

2026-09-20 19:19 時点

今どこまで進んだか

  • リポジトリ作成、.devnotes/ 初期化、プロジェクト概要の記入、Unity 用 .gitignore の整備まで完了
  • アプリ本体は未開発(Unity プロジェクトも未作成)
  • アプリ概要: 「アスリートビジョン」— 眼の能力のトレーニング(能力アップ)と診断(測定)ができるスマホアプリ。Unity で開発し iOS / Android でリリース予定

次に何をするか

  • 企画の具体化(対象ユーザー、鍛える/測る眼の能力の種類、コアループ、マネタイズ)
  • Unity プロジェクトの作成

詰まっていること・未決事項

  • Unity プロジェクトの配置場所(リポジトリ直下かサブフォルダか)と Unity バージョン
  • 「診断」の文言方針。医療機器・医療行為と誤認されない表現にする必要がある(ストア審査・薬機法)

ROADMAP(計画)

ロードマップ

今週

  • 企画の具体化(対象ユーザー、鍛える/測る眼の能力の種類、コアループ、マネタイズ)→ トムソンの提案資料(2026-09-13 版)で具体化済み
  • Unity プロジェクトの配置場所と Unity バージョンを決める
  • 試作で見えた論点をトムソンと共有(MOT の天井、周辺の同時課題の難度、GVS の丸めの食い違い、例外タイプの武器)
  • トレーニング画面案(暗い部屋)に合わせて5課題の画面を作り直す(2026-10-04〜05。追う力は奥行きあり)
  • 見極める力と追う力(奥行き)を Play で確認する(難しさ・見え方)→ 0.2.0 でトムソンも遊び、感想を反映した 0.3.0 を配信(2026-10-14)
  • トムソンの 0.3.0 の感想を受けて調整する → 0.4.0(追う力の流れと接近、ms 表示、点滅 1〜4 回、調整版の回答猶予 0.75 秒)をアップロード(2026-10-15)
  • トムソンの 0.4.0 の感想を受けて調整する → 0.6.0(追う力 8問・5〜8問は 7球、周りに気づく力の途中の判定なし、見極める力の速度パターン版)をアップロード(2026-10-16)
  • トムソンの 0.6.0 の感想を受けて比較版を出す → 0.7.0(追う力 A・B、周りに気づく力 0.3秒、通しの診断の見極める力を速度パターン版に、メニューの縦スクロール)をアップロード(2026-10-18)
  • トムソンの 0.7.0 の比較結果を受けて調整する → 0.9.0(追う力の段階版、周りに気づく力の調整版、操作エリアの縮小)をアップロード(2026-10-20)
  • 保存・シェアの画像サイズ選択と競技「その他」の表示 → 0.8.0・0.8.1(2026-10-18〜19)、トムソンの実機確認で一旦完了(2026-10-21)
  • 練習プレイの仕様(v1.6)の回答と 0.9.0 の感想を反映する → 0.10.0(練習プレイ、追う力の段階版+5%、周りに気づく力 6回×2)をアップロード(2026-10-21)
  • トムソンの 0.10.0 の確認結果を受けて調整する(練習プレイ、追う力 +5% の採否、周りに気づく力 6回×2)

今月

  • Unity プロジェクトを作成してリポジトリに入れる
  • 「診断」の文言方針を決める(医療機器と誤認されない表現)
  • 最初のトレーニング/測定メニューのプロトタイプ → 診断5課題の試作(2026-09-22〜23)
  • 「診断を通しで」で所要時間を実測する(資料の「3分診断」の根拠)
  • 実機(iPhone)で計時を確認する(120Hz、入力イベント時刻とフレーム時刻の差)
  • 結果説明(今回の観察+次に練習すること)と再診断の比較ロジック
  • 固定練習(practice_v2)と答え合わせ表示 → 通しの診断の練習プレイ(仕様書 v1.6)として入れた(2026-10-21)
  • 「今日の反応チェック」の仕様を読み、気になる点をトムソンに返す(トムソンが共有予定。実装は診断の調整と練習プレイが一段落してから)
  • 通しの診断を新しい版(追う力・周りに気づく力・白枠の有無)に切り替える時期をトムソンと決める
  • 一時停止を仕様どおりにする(今は中断してメニューへ。再開と復帰用練習)
  • 正式ロゴの素材に差し替える(トムソンの素材待ち)
  • 正解時の気持ちよさ(判定のアニメーション・触覚フィードバック)をトムソンと相談する(ゲーム性と難易度が固まってから)
  • 通常トレーニング(Lv1〜10)の試作
  • 条件面をトムソンと確認(配信アカウントとバンドル ID、経費負担・権利帰属、50:50 の中身、既存アプリの実数)

今四半期

  • iOS / Android でのリリース準備(ストア掲載素材、審査対応)
  • MVP(5課題の診断・7タイプ・結果画面・標準カード・今日の反応チェック簡易版・Day1)
  • 結果画面・カード(トムソンの新7タイプカードが方向。結果画面はトムソン側で再検討中のため作り込みは待ち)
  • MOT の B案(6問短縮版)と A案の比較
  • 追う力の 8球を自然な混雑(対象は接近が最も多い組)で試す → 段階版(0.9.0)で各条件の自然な接近の回数に合わせた
  • 多言語対応(9言語)と 320px 幅の確認(練習の案内・練習完了のパネルを含む)

いつか

(いつかやりたいこと・アイデアストック)

DECISIONS(意思決定)

意思決定記録

このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。


2026-10-21: 練習プレイは通しの診断だけに入れ、練習の課題は本番と別に持つ

背景: トムソンの練習プレイ仕様書 v1.6 と、確認事項への回答(バックグラウンド復帰は今の「無効にして出し直す」まま、追う力の練習は現行高速の 80%、周りに気づく力の練習は本番と同じ見え方、単独メニューは練習なし)がそろった。

決定: 通しの診断の各項目を「練習待機 → 練習 → 練習完了のパネル → 本番待機 → 本番」にする。練習は本番とは別のランナーと画面(見出しは「練習」)で持ち、結果は本番のスコア・診断・記録に入れない(ログは mode practice)。初回は端末に診断の記録がないとき、または試作メニューの「初回として試す」がオンのとき。通しの診断では追う力の本番もタップを待つ(単独メニューはタップなしのまま)。「計測」の見出しはシアンにする。見極める力の練習は切り返しなし・ありを1問ずつ。「反応時間も測定します。」は仕様書の「説明の下」ではなく「タップして練習」の上に置く。

理由: 同じランナーの設定を切り替えるより、練習用に作るほうが画面の状態(追う力の球の数、周りに気づく力の枠)を本番と混ぜずに済む。追う力のタップ待ちと見出しの色は仕様書の「本番は自動開始しない」「計測(シアン)」に合わせた。補足の位置は、説明の下だと2行目に詰まり、周りに気づく力の上の枠に重なるため(0.10.0 の連絡で伝える)。

2026-10-21: 追う力の練習と段階版 +5% の問題バンクの選び方

背景: 練習は 6球・対象2個・追跡2秒・重なりなし・0.2304(トムソンの回答)。段階版 +5%(①② +5%、③④ +26%、⑤〜⑧ +41.75%)は、速いほど軌跡の成立がまれになる(⑤〜⑧は 0.9.0 の約半分)。

決定: 練習のバンクは、重ならない軌跡のうち全部の組で接近(すき間 0.02W 未満)がなく、画面上の速さが 0.294W/秒 × 0.8 の ±8% のものを 20 件。対象は軌跡と独立に選ぶ。段階版 +5% は段階版と同じ選び方(各条件で自然に起きる接近の回数の中央付近、画面上の速さ ±8%、重なりの上限は 6〜7球 0.5・8球 0.7)で各 20 件。結果として ③〜⑧ の接近の範囲は段階版と同じになった。

理由: 練習は操作を覚えるためで、接近や交差で迷わせない(仕様書 v1.6)。+5% で接近の基準を変えると、速さの効果と混雑の効果が混ざる。自然な接近の回数は数百件集めると ③〜⑧ で段階版とほぼ同じだった(重なりの上限で、速いほど接近の少ない軌跡が残る)。

2026-10-21: 周りに気づく力(6回×2)の点滅の範囲・方向・START

背景: トムソンの構成(サイン 0.20 秒、6回×2、区切りなし、待ち 0.5〜0.9 秒、受付 1.2 秒・点滅 1〜4 回は維持、START を追加)。待ちが短くなると、点滅の範囲(サインの 0.75 秒前〜0.9 秒後)が待機の外にはみ出し、問をまたぐ点滅の間隔も 0.4 秒を切る。

決定: 点滅の範囲を −0.45〜+0.8 秒にする。方向は各ブロックで上下左右を1回ずつと、残り2回を重ならない方向から選び、同じ方向が続かない順に並べる(4問のブロックは今までどおり同じ seed で同じ出題)。START はプレイの最初だけ出し、表示中は中央の点を隠して待機に入らない(指の解放の確認は並行)。

理由: 待機の最短より後に点滅を始め、問をまたいでも消えてから 0.4 秒以上空ける(テストで全版を確認)。今の配り方のままだと 5・6問目が 1・2問目と同じ方向になる。START の文字は中央の点に重なり、表示中に点滅させると数えにくい。最初のサインまでは約 2〜2.4 秒(0.9.0 は約 1〜1.4 秒)。

2026-10-20: 追う力の段階版は重なりの上限を全部の組で同じにし、8球だけ 0.7 まで(0.9.0、記録漏れの補記)

背景: トムソンの8問構成案(6球・現行高速 → 7球・+20% → 7球・+35% → 8球・+35%、追跡 6.5 秒)。8球・+35%・6.5 秒では、全部の組を半分までにすると 15 分で1件しか軌跡ができなかった。対象が関わる組だけ半分までにする案は作れたが、GPT のレビューで「深く重なった球は対象でないと分かり、重なり方が答えの手がかりになる」と指摘された。

決定: 重なりの上限は全部の組で同じにし、6〜7球は 0.5、8球は 0.7(どの球も完全には隠れない)。接近の回数は「3〜4 回」をやめ、各条件で自然に起きる回数の中央付近の範囲で選ぶ。0.7.0 の追う力は比較用に残し、通しの診断は 0.7.0 のまま。

理由: 3〜4 回は自然な回数(現行の条件で中央値 5 回)より少なく、空いた軌跡を選んで難しさに上限をかけていた。比較しやすいよう、新しい候補は単独のメニューで評価する。

2026-10-18: 追う力の比較版 A・B は8問目だけを変え、B は対象の接近を 3〜4 回にそろえる

背景: トムソンが 0.6.0 で「まだ比較的簡単に100点が出る」として、現行(7球/対象3個/高速+10%)・A案(7球/対象3個/高速+20%)・B案(8球/対象3個/高速+10%)を比べたい、既存の8問構成は維持、と依頼した。走査すると、8球で接近が最も多い対象の組は接近が 5 回以上(中央値 10)で、ほかの問題と同じ 3〜4 回の軌跡がほぼ見つからなかった。

決定: 文面どおり 1〜7問は共通で8問目だけを差し替える(A: 0.3456 = 0.288 の +20%、B: 8球・0.3168)。B は対象を「接近が 4 回以下で最も多い組」から選び(MotCondition.EncounterCap)、接近を 3〜4 回にそろえる。重なりは小さいほうの球の半分まで(完全には隠れない)のまま。結果画面に8問目の正答を別に出す。

理由: ⑦まで変えるのはトムソンの「対象3個」より広い解釈になる(You の判断)。B の選び方は GPT と相談し、ほかの問題と同じ基準を保つ (a) を採った(You の判断)。代わりの案は、8球の自然な混雑(接近 5〜7 回、対象は接近が最も多い組)や、A・B とも接近の基準を外す案。比較で問えるのは「既存の接近基準を保った A・B 版が次の調整候補になるか」で、B に差がなくても球数を増やす効果全般は否定しない。差が小さければ次に自然な混雑を試す。1問だけの差は総合点に出にくいので、8問目の正答と手応えで比べてもらう。

2026-10-18: パラメータ版を proto_2 に上げ、版が違う前回はタイプ・重点の維持にも使わない

背景: トムソンの依頼で通しの診断の見極める力を速度パターン版に替えた。再診断の点差の比較はパラメータ版が違えば比較不可になるが、タイプ・重点の維持ルールは採点版だけを見ていて、条件の違う前回が引き継がれていた(GPT のレビューで発見)。0.6.0 で追う力を 8問にしたときはパラメータ版を上げていない。

決定: SpecVersions.Parameter を proto_1 → proto_2 にし、DiagnosisHistory.ToPrevious でパラメータ版が違う前回は渡さない。

理由: 仕様書の「A/B は実験用の別 parameter_version とし、同一ユーザーの成長比較や正式診断に混在させない」に合わせた。トムソンの次の通しの診断は「比較できる前回の記録がない」の基準記録になり、その次から比較される(返信で伝える)。

2026-10-18: 周りに気づく力(0.3秒)は中央の点滅の時刻を現行と同じにする

背景: トムソンの依頼は「周辺サインの表示時間だけを 0.4 → 0.3 秒、中央点滅・回答受付時間・採点は変更なし」。「サインの後」の点滅の時刻は SignDuration から選んでいたので、そのままでは点滅の出方も変わる。

決定: 「サインの後」の点滅の下限を BlinkAfterSignEarliest = 0.4 として SignDuration から切り離す。同じ seed なら点滅の回数と時刻は現行と同じ(テストで確認)。

理由: サインを短くした効果と、中央の点滅との時間関係が変わった効果を混ぜないため(GPT も賛成)。0.3〜0.4 秒の点滅がサインの表示中か後かが変わる点は、表示の短縮に伴うもので残る。

2026-10-18: 試作メニューは縦スクロールにし、指を離したときに選ぶ

背景: 比較版が増えてメニューが12項目になり、カードを 0.6 倍に縮めても画面に収まらない。トムソンは配置やスクロールは任せるとした。

決定: ロゴより下を縦にスクロールする(結果ページと同じ指の操作と慣性)。項目は指を離したときに選び、縦横どちらかに 0.02W 以上動いた操作、慣性で動いている間に置いた指、押したカードと離したカードが違う操作では選ばない。比較版は元の課題のすぐ後に並べる。

理由: カードを縮めると文字が読めなくなる。押した瞬間に選ぶとスクロールと区別できない。タップ判定の抜けは GPT のレビューで見つけて直した。

2026-10-15: 追う力は 8問にし、5〜8問は 7球で、採点の補正は問ごとの球の数で計算する(0.6.0、記録漏れの補記)

背景: トムソンが 0.4.0 で「4問では全問正解しやすく、反応時間を使わない追う力は能力差が出にくい」として、⑤〜⑧に 7球・対象2/3個・現行高速/+10% の4問を足す案と採点方法を示した。7球のまま選ぶと対象とそれ以外の接近は1問 7 回ほどになる。

決定: 提案どおり 8問にし、球の数を問題ごとに持つ(7個目の球は5問目の前の動きで少しずつ現れる)。7球のバンクも接近 3〜4 回・画面上の速さ ±5% で選ぶ(「0.4.0 と同程度の負荷・密集しすぎない」に合わせる)。偶然正解の補正は c = k / その問の球の数、8問を均等に平均し、上級問題の加点はしない。

理由: トムソンの提案と採点案をそのまま採った。同時に、周りに気づく力は本番中の周辺の判定と反応時間を出さない(計測と採点はそのまま)、見極める力は速度パターン版(フェイントの終わりの速さを本命の 1.15 / 0.85 / 1.0 倍)を別メニューで足した。

2026-10-15: 追う力は毎問 START を追跡の直前に出し、点滅の後に光ったまま確かめる時間を置く

背景: 0.3.0 では START を最初の問題の前(球が止まったまま)にだけ出していた。トムソンの説明不足だったとして、「動く → 止まって対象が光る → 確かめる時間 → START → 消えたら追跡 → 止まって選ぶ」の流れを求められた。

決定: START を毎問の追跡の直前に出す。対象は3回点滅(1.2 秒)の後、光ったまま 0.6 秒止め(ConfirmDuration)、START(1.5 秒)の文字が消え始める 1.08 秒で元の色に戻す(そこから START が消えるまでの 0.42 秒が同色化)。説明は「最初に光った k つを追う。止まったら、k つ選択。」の2行にし、下の案内はやめる。

理由: 対象を光らせたまま START を出すほうが覚えやすく、色が戻る瞬間と動き出す瞬間を分けられる(仕様の同色化 0.3 秒と同じ考え方)。START を出さない設定(ShowStart = false)では仕様どおり同色化 0.3 秒を置く。

2026-10-15: 追う力は半分までの重なりを許し、対象とそれ以外の接近が多い軌跡と対象を選ぶ

背景: トムソンの感想は「まだ少し簡単。速さはそのままで、ボール同士、特に対象とそれ以外の接近・交差を増やしたい。完全に重なって判別できない動きは避けたい」。10/04 に「画面上で重ならない軌跡だけを使う」と決めていて、今のバンクは対象とそれ以外の接近(すき間 0.02W 未満)が1問 0.3〜0.8 回しかなかった。

決定: すれ違いの重なりを深さ 0.5(小さいほうの球の半分まで。大きいほうの球が小さいほうの中心を覆わない)まで許す(MotConfig.MaxOverlap、始まりと終わりは従来どおり 0.015W 以上のすき間)。対象は、対象とそれ以外の球の接近の合計が最も多い組から選ぶ(MotTargetPicker。仕様の「軌跡と独立」から変更)。バンクは接近が対象2個・3個とも 3〜4 回で、画面上の速さが前のバンク ±5% のものを選び直す(重なりは1問 2.4〜2.5 回)。10/04 の決定を変更。

理由: 重なりを無制限に許すと1問 6〜8 回重なり、完全に隠れる場面も出る。半分までなら最も深い瞬間でも後ろの球は半分以上見える(絵で確認)。接近 3〜4 回は今の約5倍で、「少し簡単」に対して1段上げる大きさとして選んだ(トムソンの指定はない)。対象の選び方を変えたことはトムソンに伝えた。

2026-10-15: 判定の下に反応時間を出し、判定は次の刺激まで残す

背景: トムソンが、判断する力・周りに気づく力・見極める力で反応時間も測っていると分かるよう、「正解!」の下に「342 ms」を出したいとした(測れないときは出さない)。判定はこれまで 0.2〜0.25 秒の表示と指の解放待ちの間しか出ていなかった。

決定: 2行目は正解と方向ミス(判断する力は赤い矢印で動いたときも)だけに出し、止まれた・時間切れ・先走りには出さない。判定は次の刺激(矢印・サイン・動作開始)が出るまで残す。周りに気づく力の4問目は点滅の問いかけを出すまで残す。

理由: 先走りの反応時間は負で、出すと誤解を招く。各問の時間を延ばさずに2行目を読めるようにするため、表示の時間だけを延ばした。

2026-10-15: 周りに気づく力の点滅は 1〜4 回で、時刻を周辺サインから切り離す

背景: トムソンが「まだ少し簡単」として、中央の点滅を 1〜3 回 → 1〜4 回にし、点滅のタイミングを周辺サインから独立させたい(サインの間に2回、サインと重なる場合も設ける。続けて点滅するときは数えられる間隔を確保)とした。0.3.0 は点滅のある問ごとに onset から決まったオフセット(5つ)で1回だった。

決定: 点滅ごとに問を一様に選び、その問の onset −0.75〜+0.9 秒から時刻を一様に選ぶ。同じ問で続くときは消えてから 0.4 秒以上空け、1問2回まで。点滅2回以上のブロックは確率 0.5 で、あるサインの後と次のサインの前に1回ずつ置く。

理由: 範囲は待機の最短(0.8 秒)より後、受付の終わり(+1.2 秒)より前で、問の区切りや指の解放待ちの間には点滅させない(問をまたぐ点滅は必ず 0.5 秒以上空く)。一様に選ぶだけでは「サインの間に2回」が1割ほどしか起きないので狙って入れ、ブロックの 43% で起きるようにした。点滅はサインの前 38%・重なる 25%・後 38%。

2026-10-15: 見極める力(調整版)の回答猶予は 0.75 秒で、本命が止まってから 0.15 秒は残す

背景: トムソンは調整版を「かなり良くなった」とし、本命が止まった後も答えられて余裕があるので、回答猶予を本命の開始から 0.9 → 0.75 秒程度に縮め、動作の終わりの後に短い猶予が残るようにしたいとした。調整版の本命の動きは切り返しなし約 0.37 秒、ありで約 0.61〜0.65 秒。

決定: 調整版だけ、回答猶予を max(0.75 秒, 本命の動きの時間 + 0.15 秒) にする(FeintConfig.AnswerWindow)。切り返しなしは 0.75 秒、ありは 0.76〜0.80 秒。診断版は 0.9 秒のまま。

理由: 0.75 秒ちょうどだと切り返しありは止まってから 0.10〜0.14 秒しか残らないので、0.15 秒を下限にした。速度パターンの混在は、トムソンが短縮を見てから必要なら検討する。

2026-10-14: 周りに気づく力は点滅をサインの後にも出し、サインを 0.45W に広げ、点滅中の点を暗い紺にする

背景: トムソンの感想(10/13)で ① 中央の点滅時の色を暗く ② 周辺サインの後にも点滅するパターンを従来と混在 ③ サインの位置を上下左右に広げる、の希望があった。10/05 にサインの距離は本文の 0.38W と決めていた。

決定: 点滅開始のオフセットに +0.5 / +0.8 秒(サイン 0.4 秒が消えた後)を足し、従来の −0.2 / −0.05 / +0.1 秒と合わせた5つから等確率で選ぶ(約4割がサインの後)。サインの距離は 0.38W → 0.45W(10/05 の決定を変更)。点滅中の点は白の透明度 0.25 をやめ、不透明の #1c2638 にする。

理由: 点滅は各問の受付の終わり(+1.2 秒)より前に終わる範囲にした(打ち切らないため)。0.45W はパネルの外側の縁がフィールドに収まる範囲で、上のパネルが説明文に重ならない。リニア色空間では透明度 0.25 の白が灰色(#828589 ほど)に見えていたので、不透明色で暗さを決めた。Play では中央の点滅を2ブロックとも正しく数えられた(これまでの試作は 0/6)。

2026-10-14: 追う力の 20% は世界座標の速さで上げ、問題バンクは画面上の速さで選ぶ

背景: トムソンの希望は「追跡中の移動スピードを 20% 速く」。奥行きありの MOT は、同じ世界座標の速さでも軌跡の奥行きで画面上の速さが ±2 割ほどばらつき、0.216 で最初に作ったバンクは画面上の平均が旧バンクの 1.06 倍しかなかった。

決定: 条件の速さを 0.18 / 0.24 → 0.216 / 0.288 にする。0.216 のバンクは 40 件を走査し、画面上の平均の速さが旧バンク(0.190W/秒)の 1.2 倍(0.228W/秒)になる 12 件を選ぶ。0.288 は走査どおりの 12 件(1.25 倍)。

理由: 比べるのは前の版を遊んだときの体感なので、画面上でも 2 割速く見えるようにした。旧バンクの速さ(18 / 24)も残し、平面版のバンクも新しい速さで作った(テストが全速さを確かめるため)。

2026-10-14: 見極める力(調整版)は止まらずにつなぎ、本命とフェイントを同じ 1.5 倍の速さにする

背景: トムソンが診断版を簡単すぎると感じ、① フェイント後の停止をなくす ② 移動距離は変えずに本命を速くする(本命だけ速いとヒントになるのでフェイントも含めて調整)を試したいとした。診断版は小動作の終わりで速度が 0 になってから本命が動き出すので、止まって見える。

決定: FeintStyle.Continuous を足す。小動作は G(u) = u²(3 − u)/2 で加速し、commit で速さ 1.5A/T のまま本命へつながる。切り返し 0回はそのまま速さ v まで加速し、1回は加速度 v/a で減速して逆向きへ加速する(切り返しの一瞬だけ速度 0)。commit までは 0回と 1回で同じ動き。速さは本命 0.60 → 0.90W/秒、加速 0.12 → 0.08 秒、T を 1/1.5(0.17 / 0.22 / 0.27 秒)にして、小動作の最高速と本命の比を診断版と同じにする。回答猶予 0.9 秒・振れ幅・問題数・採点などほかの条件は診断版と同じ。

理由: 1.5 倍は You とトムソンが比べて違いが分かる大きさとして選んだ(トムソンの指定はない)。本命までの時間は切り返しありで 0.85 → 0.65 秒、なしで 0.60 → 0.36 秒。Play では 82 → 72 になり、間違いはフェイント側へのつられだった。まだ簡単なら、③ 速さの差の混在か、回答猶予の短縮(本命が端に着いた後も猶予が残り、待てば答えが見えるため)を次に試す。

2026-10-14: トムソンの感想(10/13)の調整は置き換えで入れ、見極める力だけ調整版を別項目にする

背景: トムソンの希望には「試してみたい」とだけある調整(反応の速さの的 10% 大、追う力 20% 速く)と、「現状版を残して別項目に」と明記された見極める力の調整版があった。

決定: You の判断で、見極める力以外は今の版を置き換える(確認の返信はしない)。見極める力は診断版を残し、調整版をメニューの 6 番目に置く。調整版は通しの診断には入れない。

理由: メニューを増やさず早く試してもらうため。比べたいとはっきり言われたのは見極める力だけだった。

2026-10-05: 周りに気づく力のパネルは本文の距離 0.38W で、大きさは参考画像の比率にする

背景: 仕様書 v0.9 で周辺のサインが横長のガラスパネルになったが、本文の数値は前の「点」のまま(中心から 0.38W・半径 0.025W)。参考画像のパネルは画面の端(約 0.48W)にあり、長さ約 0.26W × 厚み約 0.03W。ただしこれは画像から測った値で、パネルの数値はどこにも書いていない。

決定: 距離は本文どおり 0.38W、パネルは参考画像の比率(外側の辺が長い台形)にする。4枚とも常に白い輪郭で見せ、光った方向だけシアン(v0.9 のルール)。中央の点は試作の半径 0.03W のまま。トムソンへの確認はしない。

理由: v0.9 は「画像は説明用の代表状態、出題などは既存仕様を維持」としているので、書いてある数値を優先した。You の判断で「この辺はざっくりでよい」。中央の点を画面案のように小さくしないのは、試作で点滅を数えるのが難しかったため。

2026-10-05: 追う力は v0.9 の「全て同径」にかかわらず奥行きありで進める

背景: 仕様書 v0.9 の共通デザインルールに「診断の実刺激は全て同径とし、静止画の遠近感による見かけの差を難易度条件へ持ち込まない」とあり、追う力の本文も平面の書き方(半径 0.035W、中心の範囲 [r, 1−r]、向きは 0〜2π)のまま。すでに奥行きありで実装していた。

決定: 奥行きありのまま進める(You の判断)。トムソンへの修正依頼もしない。

理由: 「全て同径」は球そのものが同じ大きさという意味にも読め、実装(球はすべて同じ大きさで、手前ほど大きく見えるだけ)はその範囲に収まる。v0.9 は「平面」とは明記していない。画面案の見た目に合い、平面版は試作で満点(天井)だったので難しさも上がる見込み。

2026-10-05: 周りに気づく力・見極める力もスワイプは画面のどこから始めても数える

背景: 判断する力は 2026-09-25 に「画面のどこから始めたスワイプも数える」にした(矢印のまわりでスワイプされ、12問中10問が数えられなかった)。画面案では3課題とも下に「このエリアでスワイプ」の操作エリアがある。

決定: 周りに気づく力・見極める力も画面のどこからでも数える(AcceptAnywhere、既定 true、ログに inputArea)。操作エリアの表示は残し、一時停止ボタンの範囲は入力から外す。

理由: 3課題で受け方をそろえ、刺激のまわりでスワイプしても取りこぼさないため。仕様書の本文(操作パッドの中だけ)とは違う。

2026-10-04: 追う力を奥行きありにし、画面上で重ならない軌跡だけを問題バンクから使う

背景: トレーニング画面案の追う力は、部屋の中で球の大きさがまちまちに(奥行きがあるように)描かれていた。You が「奥行きありで決まり」とした。

決定: 部屋と同じ透視の箱の中を球が3次元に動く(MotSpace: 球の半径 0.025、手前の倍率 1.9、手前の球もフィールドに収まり、床と奥の壁にめり込まない)。画面上の球と球のすき間は 0.015W 以上、初期位置の中心間は 0.12W 以上。速さは条件の値を世界座標の速さにそのまま使う。成立する軌跡がまれなので、問題バンク MotSeedBank3D に seed と候補番号を持たせ、実行時は FromBank で検査なしに候補を飛ばして作る。平面版のコードとテストは残す。

理由: 画面上で重なると、止まったときに後ろの球を選べず、すれ違いで見失う分だけ一気に難しくなる(すれ違いを許すと1問あたり5〜6回重なる)。難しくしたいときのために AllowCrossing(始まりと終わりだけ確かめる)を残した。画面上の平均の速さは平面版とほぼ同じ(0.190 / 0.235W/秒)。

2026-10-04: トレーニング画面案(暗い部屋)を試作の見た目の基準にし、背景と図形はコードで描く

背景: トムソンから5課題のトレーニング画面案が届き、「これを基準に試作を進めてほしい」と依頼された(仕様書 v0.9 で見た目の正本になった)。

決定: 5課題を画面案の見た目に作り直す。部屋の背景・パネル・矢印・球・ダイヤは画素関数で描く。上のブロック(ロゴ・一時停止・題名・進捗・説明)はノッチを避けてセーフエリアの内側に置き、そのすぐ下にフィールド(W×W)、残りを下のブロックにする(FieldLayout.HeaderFirst)。下のブロックの最低は 0.55W(You の確認で 0.32 → 0.45 → 0.55)。一時停止は試作では「中断してメニューへ」。診断中の上部は「課題名 1/5」と「計測」+進捗(v0.9 の進捗表示)。判定の一言は刺激の下に出す。

理由: 背景を1枚の画像にすると端末の縦横比でフィールドとずれるが、W 基準で描けば常に合う。描く関数を純粋にしておくと、エディタの外で画面案と並べて色や寸法を確かめられる。上のブロックを画面案のようにノッチの横に置くと、Dynamic Island やパンチホールとロゴが重なる。

2026-10-01: シェアカードは競技を外したトムソン案の方向で進める

背景: 「競技名や競技別の背景があると、向いている競技を診断するアプリに見える」という You の指摘を受け、トムソンが競技を外した7タイプ×日英のカード案を送ってきた。

決定: この方向で進める(You が「大変いい」と返信)。細かい指摘(否定の注記、コピーの言い方、低得点時の見え方、色が近い2タイプなど)は送らない。結果画面はトムソン側で再検討中なので作り込みは待つ。

理由: 競技適性に見える懸念はほぼ解消していた。実装で必ず決める必要が出たもの(部品・フォント・出力サイズ)だけ、そのときに持ち出す。

2026-10-01: 見た目の確認に Play 中の画面の自動保存を使う

背景: 作り込んだ画面の見た目の確認が You の目頼みで、細かい崩れの往復が多かった。

決定: DebugCapture で、単独の課題の要所(説明・刺激・回答・判定など)を logs/screens_<task>_<UTC>/ に PNG で残す。エディタと Development Build だけで、通しの診断では撮らない(所要時間を測るため)。

理由: 読み戻しはメインスレッド、PNG の圧縮は別スレッドにし、onset のフレームを避けて撮ることで、計時への影響を小さくした。

2026-09-25: 判断する力は画面のどこから始めたスワイプも数える

背景: 仕様は「フィールド下に幅W×高さ0.32Wの操作パッドを置き、パッド内から始めたスワイプだけを数える」。画面イメージではその場所が凡例のカード(青:矢印の方向にスワイプ/赤:反応せず止まる)なので、作り込みではまず「フィールドより下(カードとその周り)から始めたスワイプだけ」を数えた。You が試すと、矢印のまわりでスワイプして 12 問中 10 問で入力が受付範囲外になり、Go はほぼ「時間切れ」になった。

決定: 画面のどこから始めたスワイプも数える(You の判断: 矢印のまわりでスワイプしてよい)。フィールドより下だけに戻す設定(GoNoGoConfig.AcceptAnywhere = false)も残し、ログには受付範囲(anywhere / below_field)とカードの位置を残す。

理由: 矢印のまわりでその向きにスワイプするのは自然な操作で、受付範囲を知らないと入力が黙って捨てられる。反応の速さも画面全体で受け付けており、課題間で操作のルールがそろう。仕様が操作パッドを分けているのは指で刺激を隠さないためだが、待機中に指を置く場所は本人が選べ、スワイプの開始位置はログで確認できる。仕様からの変更なのでトムソンに共有する。

2026-09-25: 判断する力の No-Go は、画面イメージにない×枠を残す

背景: 画面イメージは「青はスワイプ・赤は止まる」と色だけで区別しているが、仕様は「色だけに依存せず、No-Go は矢印を囲む×枠を併用」としている。

決定: No-Go は赤い矢印を×枠(角の丸い四角と×)で囲む。カードの凡例も、止まる側のアイコンを画面イメージの赤い「←→」から「☒」に変え、形でも区別できるようにする。説明文は仕様の文言で、「青い矢印」「×枠の赤い矢印」を凡例の色で塗る(画面イメージの「● 青はスワイプ ● 赤は止まる」の代わり)。

理由: 色覚の個人差で赤と青の区別がつきにくい人でも、形で判断できるようにするため(仕様の原則)。画面イメージの文言・数値は資料自身が「実装対象外」としている。

2026-09-23: 反応の速さは画面のどこをタップしても反応として数える

背景: 反応の速さの画面を提案資料の画面イメージどおりに作り込んだところ、下部の案内カード(手のアイコン+「光った瞬間にタップ」)がボタンに見え、You が試すとカードばかり押して全問「時間切れ」になった(34回のタップがすべて受付範囲外)。資料の仕様は「中央の円(半径0.20W)の中だけを反応として数える」。

決定: 画面のどこをタップしても反応として数える(You の判断)。仕様の中央の円も設定(ReactionConfig.AcceptAnywhere = false)で戻せるようにし、ログには入力範囲(anywhere / center_circle)を残す。

理由: 資料自身の画面デザインが「光った瞬間にタップ」とボタン状のカードを置いており、中央の円に限るとユーザーが迷う。反応テストとしても画面全体で受け付ける形は一般的。代替案は「カードの文言を『中央をタップ』に変える」「カードも受付範囲に含める」だったが、前者は画面の見た目と噛み合わず、後者は指を構える位置で反応時間が比べにくくなる。仕様からの変更なのでトムソンに共有する。

2026-09-23: 総合スコア(GVS)は丸めた5能力スコアから計算する

背景: 提案資料の中で GVS の計算が2通りに書かれていた(「タイプはどう決まる?」では丸め前の各項目スコアで計算、メニュールール v3 §8 では丸めた5能力スコアから加重平均)。実装でどちらかに決める必要があった。

決定: 0〜100 の整数に丸めた5能力スコアを、判断 25%・周辺 20%・反応 20%・追跡 20%・見極め 15% で加重平均し、最後に四捨五入(0.5 は切り上げ)する。重み×スコアを整数で合計し、浮動小数の誤差なく丸める。

理由: 資料の共通例A(68.6→69、72.4→72)がこちらの方法で一致する。画面に出る5つの数字から誰でも同じ総合スコアを再計算でき、説明しやすい。食い違い自体はトムソンに確認する。

2026-09-22: 計時と判定の実装方針

背景: 反応時間を ms 単位で扱う課題を作るにあたり、時刻の取り方と、判定・採点ロジックの検証方法を決める必要があった。

決定: 時刻は単調時計(AppClock = Time.realtimeSinceStartupAsDouble)に統一する。刺激の onset は描画対象にした Update の時刻、入力は Input System のイベント時刻を AppClock に換算して使う。判定・採点・出題生成は UnityEngine に依存しない純粋な C# にし、EditMode テストをエディタの外からも回せるようにする(tools/unity-run-pure-tests.sh)。

理由: 資料の計時仕様(入力イベントの時刻を優先し、処理フレームの時刻と混在させない)に合わせるため。フレーム時刻だけでは 120Hz でも最大 8ms ほどの量子化が乗る(実測でも入力イベント時刻はフレーム時刻より 0.3〜7.3ms 早かった)。判定をテストで固めておけば、しきい値の調整や仕様変更に安全に追従できる。エディタを開いたままでは Unity のバッチモードが使えないため、同梱の Roslyn と .NET で確認できるようにした。

2026-09-22: 試作は見た目を作り込まず、計時・判定・ログを優先する

背景: 診断5課題の試作に入るにあたり、どこから作り込むかを決める必要があった。前日には結果カードのモックも作っていた。

決定: 序盤は見た目を作り込まない(You の方針)。UI はコードで組み立てる最小限にし、計時・判定・採点・JSON ログの正しさを優先する。結果カードは後回しにする。

理由: カードはアプリの一部の要素にすぎず、先に確かめるべきは課題が成立するか(操作・所要時間・得点の出方)。資料の段階案(試作 → MVP → 正式 V1)で「試作」が確かめる項目とも一致する。

2026-09-22: Unity プロジェクトの配置・バージョン・テンプレート

背景: Unity プロジェクトを作るにあたり、配置場所(リポジトリ直下かサブフォルダか)、Unity バージョン、テンプレート、入力方式を決める必要があった。

決定:

  • 配置はリポジトリ直下のサブフォルダ athleat-vision-unity/。Unity 本体も同一リポで管理する(LFS は使わない)
  • Unity バージョンは 6000.3.14f1(Unity 6.3)
  • テンプレートは Universal 2D(URP 2D + Input System)
  • 入力は Input System のみを使う(旧 Input Manager は無効)
  • プロジェクト作成は You が Unity Hub の GUI で行う(CLI での自動生成は一度作ったが撤回した)

理由:

  • 既存の Unity プロジェクト7件がすべて <name>-unity/ サブフォルダ構成で、hinata-mahjong は同一リポ管理の実績がある。リポジトリには企画・ストア素材・運用も置くため、直下に Unity を展開するより見通しがよい
  • 6000.3.14f1 はこの Mac に入っている中で最新で、iOS / Android モジュール導入済み。hinata-mahjong で実績あり。2022.3 系は LTS 期限が近く新規には不向き
  • 5課題はすべて2D表現。Universal 2D は Input System を同梱しており追加設定が少ない
  • 提案資料の計時仕様(入力イベントの時刻を採用し、処理フレームの時刻と混在させない)を満たすには、イベント時刻が取れる Input System が必要

2026-09-20: 開発環境は Unity にする

背景: 眼の能力のトレーニングと診断(測定)を行うスマホアプリを新規に作るにあたり、開発環境を決める必要があった。

決定: Unity(C#)で開発し、iOS / Android の両方でリリースする。

理由: プロジェクト開始時点での You の方針(代替案の比較検討はしていない)。補足として、1つのコードベースで両 OS に出せ、動く視標や反応計測などゲーム的な表現を作りやすい。

DEVLOG(作業ログ)

開発日誌

このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。


2026-10-21

18:41 - トムソンの練習プレイの回答と 0.9.0 の感想を反映した試作 0.10.0 を TestFlight にアップロード

やったこと:

  • トムソンの LINE 2件を受けた(練習プレイの確認事項への回答と 0.9.0 のプレイ結果・次の調整案、カード(0.8.1)の確認完了)。周りに気づく力の質問(受付時間・次のサインまでの間隔・6回×2 の懸念点)にコードと 10/15 のログで答え、返信案を作った。You が送った
    • 受付はサインの出現から 1.2 秒で、早く答えても受付の終わりまで次に進まない。受付終了 → 区切り 0.2 → 指の解放 0.2 → 待ち 0.8〜1.2 秒で、サインの出現の間隔は 2.4〜2.8 秒(ログでも 2.47〜2.81 秒)
  • 追う力 +5% の ⑤〜⑧ が作れるかを、同じ seed の範囲で 6 分ずつ走査して比べた(成立は 7球 19 → 11 件、8球 62 → 27 件で約半分)
  • 練習プレイ(仕様書 v1.6、5項目を通して診断だけ)を実装した: 練習待機 → 練習 → 同じ画面に練習完了のパネル → 本番待機 → 本番。初回は練習必須で「もう一度練習」、再診断は「練習をスキップ」。試作メニューに「初回として試す」。練習の課題は本番とは別のランナーと画面(見出しは「練習」)で、結果の行は PracticeResult。診断ログに練習の秒数と回数を残す
    • 練習の中身: 反応の速さ 2問(既存の固定練習)、追う力 1問(6球・対象2個・0.2304・追跡2秒・重なりなし)、判断する力 青 → 赤(GoNoGoConfig.FixedKinds)、周りに気づく力 サイン2回と点滅1〜2回(見え方は本番と同じ)、見極める力 右・左1回ずつ(調整版の動き、切り返しなし・ありを1問ずつ)
    • 練習完了のパネルは仕様書の画像から色と割合を測って作った(TaskScreen.ShowPracticeResult)
  • 追う力(段階版+5%、MotConfig.StagedFaster)を追加。4区分を14本並べて走査し(成立 7776・185・89・199 件)、各20件のバンクを作った。練習用のバンク(2秒・重なりなし・全部の組で接近なし)も 20 件。走査ツールの重なりの上限に 0 を渡せるようにした
  • トムソンの返事(周りに気づく力の構成の確定、点滅の範囲の質問、「今日の反応チェック」の仕様の共有の相談)を受け、返信案を作った(You が送った)。周りに気づく力(6回×2、PeripheralConfig.Rapid)を追加: サイン 0.20 秒、区切りなし、待ち 0.5〜0.9 秒、点滅の範囲 −0.45〜+0.8 秒、各ブロックで上下左右を1回ずつと残り2回は同じ方向が続かない順、最初に START
  • シミュレータで確認: 練習待機(初回・再診断)、スキップ、練習完了のパネル(反応の速さ 2行・追う力 1行)、「もう一度練習」、本番待機(「計測」はシアン)、「初回として試す」、追う力の練習の START、周りに気づく力(6回×2)を1回通してログで間隔 1.95〜2.32 秒・サイン 0.20 秒・方向・点滅の範囲。再診断は、仮の診断記録を置いて試した(確認後に消した)
  • テスト 222 件。コミット 5814604。0.10.0(ビルド 12)を Unity CLI → xcodebuild archive → exportArchive で App Store Connect にアップロード(Upload succeeded)。トムソンへの連絡案を作った

決めたこと:

  • 練習プレイは通しの診断だけに入れ、練習の課題は本番と別に持つ。通しの診断では追う力の本番もタップを待つ(DECISIONS.md)
  • 追う力の練習と段階版 +5% の問題バンクの選び方(DECISIONS.md)
  • 周りに気づく力(6回×2)の点滅の範囲・方向・START(DECISIONS.md)

詰まったこと / 気づき:

  • 最初の 6 分の走査(27 件)から「+5% で ⑦⑧ の接近が1問1〜3回増える」とトムソンに伝えたが、数百件集めると ③〜⑧ の自然な接近の回数は段階版とほぼ同じで、増えたのは ①② の1回ほどだった(重なりの上限があるので、速いほど接近の少ない軌跡が残る)。2通目の返信で訂正した。少ない件数の傾向を数字で伝えない
  • 「反応時間も測定します。」を仕様どおり説明の下に置くと、説明の2行目に詰まり、周りに気づく力の上の枠にも重なる。「タップして練習」の上に移した
  • 周りに気づく力の START は、文字が中央の点に重なり(「A」の後ろに点が透ける)、開始前の「タップして開始」も START が消えるまで残っていた。START の表示中は点を隠し、案内を消した
  • メニューの補足が長いと2行に折り返して題名に重なる(補足の幅は約 22 字)
  • 走査を裏で走らせている間は、TMPDIR を変えてコンパイル確認とテストを別のフォルダで行った(同じ dll を上書きしないように)
  • シミュレータのメニューはスワイプの慣性が残るうちにタップすると別の項目が開く。止まってからスクリーンショットで位置を確かめる
  • 判断する力・周りに気づく力・見極める力の練習は、通しの診断で追う力の本番(回答が必要)を越える必要があり、シミュレータでは通していない

次回やること:

  • ビルド 12 が内部テストに入ったか確認し、You がトムソンに 0.10.0 の連絡を送る
  • トムソンの 0.10.0 の確認結果を受けて調整(練習プレイ、追う力 +5%、周りに気づく力 6回×2)
  • 「今日の反応チェック」の仕様を受け取ったら読み、気になる点を返す

2026-10-20

05:16 - トムソンの 0.7.0 の感想を反映した試作 0.9.0 を TestFlight にアップロード(記録漏れの補記)

やったこと:

  • コミット d0e317a の内容から補記する。追う力の段階版(6球・現行高速 → 7球・+20% → 7球・+35% → 8球・+35%、各段階で対象2個・3個、追跡 6.5 秒、MotConfig.Staged)と4区分×20件のバンク、周りに気づく力の調整版(待機中の枠なし・サイン 1.05 倍・0.25 秒)、操作エリアの見える枠を 85% に。比較版 A・B を外し、0.7.0 の追う力を比較用に残した。方針と差分を GPT にレビューしてもらった(.devnotes/discussions/2026-10-20-proto-0.9.0-plan.md)。バージョン 0.9.0(ビルド 11)
  • トムソンから練習プレイの仕様書 v1.6 を受け取り、0.9.0 の返信に確認事項(バックグラウンド復帰、追う力の練習の速さ、白枠、初回の判定、単独メニュー、多言語)を入れた

2026-10-19

20:16 - トムソンの 0.8.0 の確認結果を反映した試作 0.8.1(記録漏れの補記)

やったこと:

  • コミット d70e92a の内容から補記する。画像サイズのシートの高さを注記の下に safe area + 10px に、カードの背景 14 枚をトムソンの作り直し版に差し替え、銀枠の外を透明にする処理を背景の不透明度で決める形に。テスト 205 件。バージョン 0.8.1(ビルド 10)。2026-10-21 にトムソンから実機で問題なしとの連絡があり、カードの対応は一旦完了

2026-10-18

20:08 - 保存・シェアの画像サイズ選択と競技「その他」の表示(試作 0.8.0、記録漏れの補記)

やったこと:

  • コミット f0be88e の内容から補記する。「画像を保存」「カードをシェア」で下から開くシートで 4:5/9:16 を選ぶ(CardSizeSheet。前回のサイズを覚える)、競技が「その他」なら結果ページの競技のチップを出さない。テスト 203 件。バージョン 0.8.0(ビルド 9)

16:21 - トムソンの 0.6.0 の感想を反映した比較版の試作 0.7.0 を TestFlight にアップロード

やったこと:

  • トムソンの LINE(0.6.0 の感想と比較依頼)を受け、方針を整理して You に確認した。追う力の A・B 案は「8問目だけ変える」(文面どおり)に決定。0.6.0 の未コミット分を先にコミット(510c459)
  • You の依頼で修正方針を GPT(codex exec、三者議論スキル)に2ラウンドでレビューしてもらい、実装後に差分のレビューも1ラウンド頼んだ(.devnotes/discussions/2026-10-18-proto-0.7.0-plan.md)
  • 追う力: 比較版 A(8問目を 7球・0.3456 = 現行高速 0.288 の +20%)と B(8問目を 8球・0.3168)をメニューに追加(MotConfig.SpeedPlus20 / EightBalls、TaskId mot_speed20 / mot_8balls)。B は対象を「接近 4 回以下で最も多い組」から選ぶ(MotCondition.EncounterCap、MotTargetPicker に上限)。問題バンクを追加(7球・0.3456 と 8球・0.3168、各12件)。結果画面に「8問目(比べる問題)3個中○個」と、4問ずつ2行の「正解(1〜4問目)/(5〜8問目)」(8問だと1行の値が項目名に重なっていた)。試行記録に元の問題番号 problemNumber を持たせ、補った問題も元の番号で並べる
  • 走査ツール: 9番目(接近の範囲を確かめる対象の数)・10番目(対象の選び方の上限)の引数と、既存バンクの (seed, 候補番号) の自動除外を追加。A は成立が約 0.5% と遅く、開始 seed を変えた6本を並べて走らせた
  • 周りに気づく力: サイン 0.3 秒の比較版(PeripheralConfig.ShortSign、TaskId peripheral_sign03)。「サインの後」の点滅の下限を BlinkAfterSignEarliest = 0.4 に切り離し、同じ seed なら点滅の時刻は現行と同じ
  • 見極める力: 通しの診断を速度パターン版に(題名は「見極める力」のまま、TaskId feint_speedmix)。AbilityInfo.FromTaskId は「_」の前で元の課題に対応。SpecVersions.Parameter を proto_2 にし、版が違う前回は点差の比較にもタイプ・重点の維持にも使わない(DiagnosisHistory.ToPrevious)
  • 試作メニュー: 12項目になり収まらないので、ロゴより下を縦スクロール(RectMask2D の窓、慣性つき)。項目は指を離したときに選び、縦横どちらかに 0.02W 以上動いた操作・慣性で動いている間に置いた指・押したカードと離したカードが違う操作では選ばない。PrototypeBootstrap の課題を _menuRunners 配列にまとめた
  • テストを追加(計 199 件)。シミュレータで B を8問目(8球)まで通し、メニューのスクロールと横ドラッグで選ばれないこと、周りに気づく力(0.3秒)が開くことを確認
  • コミット 7093bec。0.7.0(ビルド 8)を Unity CLI → xcodebuild archive → exportArchive で App Store Connect にアップロード(Upload succeeded)。トムソンへの返信案を作成(「!」なし)

決めたこと:

  • 追う力の比較版 A・B は8問目だけを変え、B は対象の接近を 3〜4 回にそろえる(DECISIONS.md)
  • パラメータ版を proto_2 に上げ、版が違う前回はタイプ・重点の維持にも使わない(DECISIONS.md)
  • 周りに気づく力(0.3秒)は中央の点滅の時刻を現行と同じにする(DECISIONS.md)
  • 試作メニューは縦スクロールにし、指を離したときに選ぶ(DECISIONS.md)

詰まったこと / 気づき:

  • 8球では、接近が最も多い対象の組の接近が 5 回以上(96 件で中央値 10、3〜4 回は 0 件)で、今の基準のままでは B のバンクができなかった。上限つきの選び方にすると 108 seed で 12 件そろった(ただし全ペアの重なりは1問 8.6 回と、7球の 2.3〜2.5 回より混む)
  • 速さだけ違う同じ軌跡(同じ seed と候補番号)は、別の速さでも成立しやすい。A の候補の半分が既存バンクと重なっていた
  • GPT のレビューで、メニューのタップ判定の抜け(横の動き、遅い慣性)、パラメータ版が違う前回がタイプの維持に使われる経路、補った問題で「8問目」の意味がずれる点、同じ呼び出しを比べるだけの乱数テストが見つかった。すべて直した
  • Release ビルドのシミュレータでは [AthleteVision] のログが simctl log show に出なかった。画面のスクショで確かめた

次回やること:

  • ビルド 8 が内部テストに入ったか確認し、You がトムソンに返信
  • トムソンの 0.7.0 の比較結果を受けて調整(追う力は A か B か、差が小さければ 8球の自然な混雑。周りに気づく力 0.3 秒の採否。見極める力の版)

2026-10-16

00:07 - トムソンの 0.4.0 の感想を反映した試作 0.6.0 を TestFlight にアップロード(記録漏れの補記)

やったこと:

  • 追う力を 8問に(1〜4問は 6球のまま、5〜8問は 7球で (2, .288)・(3, .288)・(2, .3168)・(3, .3168)。トムソンの提案どおり)。球の数を問題ごとに持ち、7個目の球は5問目の前の動きで少しずつ現れる(MotApproach)。7球のバンクは接近 3〜4 回・画面上の速さ ±5% で選んだ(7球のままだと接近は中央値 7 回)。採点の偶然正解の補正は問ごとの球の数で計算し、8問を均等に平均
  • 周りに気づく力: 本番中は周辺サインごとの判定と反応時間を出さない(ShowSignFeedback。計測と採点はそのまま、「点滅数 ✓/×」は残す)
  • 見極める力(速度パターン)をメニューに追加(フェイントが本命に切り替わる瞬間の速さを本命の 1.15 / 0.85 / 1.0 倍で混ぜる。振れ幅 0.07〜0.09W、T は 0.10〜0.18 秒)
  • テスト 191 件。シミュレータで5〜6問目まで確認し、0.6.0(ビルド 7)をアップロード。返信案を作り、You に「!」を使わないよう言われた
  • このときはコミットしておらず、2026-10-18 に 510c459 としてコミットした

2026-10-15

18:43 - 診断カードと初診断・再診断の結果ページ(試作 0.5.0、記録漏れの補記)

やったこと:

  • コミット 92716bf と cc79a89 の内容から補記する。トムソンの素材パック v5(仕様書 v7)どおりのカード(7タイプ・日英・初診断/再診断・4:5/9:16)、通しの診断の前の競技の選択、仕様書 v7 の初診断・再診断の結果ページ(端末に保存し、2回目から前回比較。条件が違えば新しい基準記録)、iOS の画像の保存・シェアを追加。テスト 183 件。バージョン 0.5.0

17:14 - トムソンの 0.3.0 の感想を反映した試作 0.4.0 を TestFlight にアップロード

やったこと:

  • トムソンの LINE(0.3.0 の感想と追加の調整)を受けて4課題を直した。確認の返信はせずに修正へ進み、0.4.0 を上げてから You が変更点を返信した(返信案はこちらで作成)
  • 共通: 判定の下に2行目(反応時間「342 ms」)を出す(TaskScreen.SetFeedback の detail と FormatRt)。測れたとき(正解・方向ミス、判断する力は赤い矢印で動いたときも)だけ。判定は次の刺激が出るまで残す(0.2〜0.25 秒では2行目が読めないため。各問の時間は変わらない)。「正解」→「正解!」
  • 追う力(流れ): 「動く → 止まって対象が3回点滅 → 光ったまま 0.6 秒(ConfirmDuration)→ START 1.5 秒(文字が消え始める 1.08 秒で同色化)→ 追跡」。START は最初の問題だけでなく毎問。説明を2行(「最初に光った k つを追う。」「止まったら、k つ選択。」)にし、下の案内(「追跡中」「止まったら、k つ選択」)をやめた
  • 追う力(難しさ): 今のバンクは対象とそれ以外の接近(すき間 0.02W 未満)が1問 0.3〜0.8 回(対象を一様に選んだとき)しかなかった。すれ違いの重なりを深さ 0.5(小さいほうの球の半分)まで許す MotTrajectory3DParams.MaxOverlap、重なりの深さ MaxOverlapDepth、接近の回数 Encounters を足し、対象は接近が最も多くなる組から選ぶ(MotTargetPicker)。バンクは接近 3〜4 回・画面上の速さ ±5% で選び直した(0.216: 接近 3.50・重なり 2.42 回・0.227W/秒、0.288: 3.75・2.50 回・0.292W/秒)。tools/mot-seed-scan.sh に接近の範囲と速さの目安の引数を足した
  • 周りに気づく力: 点滅を 1〜4 回にし、時刻を周辺サインから切り離した(各問の onset −0.75〜+0.9 秒から一様、同じ問で続くときは消えてから 0.4 秒以上、1問2回まで、点滅2回以上のブロックの半分はサインの後と次のサインの前に1回ずつ)。2000 seed の集計で、点滅はサインの前 38%・重なる 25%・後 38%、サインの間に2回のブロック 43%。中央の判定を「点滅数 ✓/×」に、説明に「素早く」を足した
  • 見極める力: 説明を「フェイントに惑わされず、本命の方向へ素早くスワイプ。」に。調整版だけ回答猶予を 0.9 → 0.75 秒にし、本命が止まってから 0.15 秒は残す(FeintConfig.AnswerWindow。切り返しなし 0.75 秒、あり 0.76〜0.80 秒)
  • 判断する力: 説明を「青い矢印の方向へ、素早くスワイプ。赤い矢印では、動かない。」に。判定を上へ移す依頼もあったが、0.3.0 ですでに上に出ていた(返信で何を指すか確認中)
  • テスト 10 件追加(計 172 件)
  • You の Play(エディタ): 追う力 81(4問中3問全問正解。対象とそれ以外の接近 3〜4 回、重なりの深さ 0.37〜0.46)、判断する力 88(12/12)、周りに気づく力 75(サイン 8/8、点滅 1/2 ブロック。サインの間の2回を正しく数えた)、見極める力(調整版)55(切り返しありで 229〜338ms の速い方向ミス 3 回、時間切れ 1 回)。You は「全部自分的に大丈夫」
  • コミット caf70ce。0.4.0(ビルド 5)を Unity CLI → xcodebuild archive → exportArchive で App Store Connect にアップロード(17:14 時点では処理待ちで一覧に出ていない)

決めたこと:

  • 追う力は毎問 START を追跡の直前に出し、点滅の後に光ったまま確かめる時間を置く(DECISIONS.md)
  • 追う力は半分までの重なりを許し、対象とそれ以外の接近が多い軌跡と対象を選ぶ(DECISIONS.md。10/04 の「重ならない軌跡だけ」を変更)
  • 判定の下に反応時間を出し、判定は次の刺激まで残す(DECISIONS.md)
  • 周りに気づく力の点滅は 1〜4 回で、時刻を周辺サインから切り離す(DECISIONS.md)
  • 見極める力(調整版)の回答猶予は 0.75 秒で、本命が止まってから 0.15 秒は残す(DECISIONS.md)

詰まったこと / 気づき:

  • 重ならない軌跡だけだと、球どうしが近づく場面がほとんどない(全ペアで1問 0.6〜1.3 回)。これが「まだ簡単」の原因と見た。重なりを無制限に許すと1問 6〜8 回重なり、完全に隠れる場面も出る
  • 重なりの深さ 0.5 は「大きいほうの球が小さいほうの中心を覆わない」(中心間距離 ≥ 大きいほうの半径)と同じ。最も深い瞬間を絵にして、後ろの球が半分以上見えることを確かめた
  • 点滅の時刻を一様に選ぶだけでは「サインの間に2回」は1割ほどしか起きない(サインの前後の窓が 0.5 秒ずつで、同じ問の中には 0.65 秒間隔の2回がサインをまたがずに入らない)。サインの後と次のサインの前の組を狙って入れた
  • You がまだ Play していないのに、10/13 のログを読みかけた。Play の後は、ログの日付を先に確かめる
  • ビルドの前に Unity エディタを System Events の Cmd+Q で閉じた(3 秒で終了)

次回やること:

  • トムソンの 0.4.0 の感想を受けて調整(追う力の難しさ、見極める力の受付時間、周りに気づく力の点滅)
  • ビルド 5 が内部テストに入ったか確認

2026-10-14

17:54 - トムソンのプレイ感想(10/13)を反映した試作 0.3.0 を TestFlight に配信

やったこと:

  • トムソンの LINE(0.2.0 のプレイ感想と修正希望)を要約し、返信案を作った。You の判断で「試したい」とあった反応・追う力の調整は今の版を置き換え、確認の返信はせずに修正へ進んだ
  • 全体共通: 各問の判定(○○ms、○/○ 個正解など)を全課題で奥の壁の上辺の少し下に移した(TaskScreen.SetFeedback。課題ごとの判定の文字は削除)。追う力・周りに気づく力・見極める力は床の光(奥の細い帯とそのにじみ)を消した(RoomScreen.FloorGlow、RoomBackground.Pixel の floorGlow)
  • 反応の速さ: 的全体を 10% 大きく描く(ReactionSprites.Scale)
  • 追う力: 速さを 20% 上げた(0.216 / 0.288)。問題バンクを作り直し(tools/mot-seed-scan.sh が小数の速さ・候補の上限・軌跡ごとの画面上の速さに対応)、0.216 は 40 件から画面上の平均の速さが旧バンクの 1.2 倍になる 12 件を選んだ。最初に眼球トレと同じ流れの START を 1.5 秒(球は止めたまま。TaskScreen.SetStart)、追跡が始まったら下の案内を消す
  • 判断する力: 中央のパネルを半透明のガラス風に描き直した(上ほど薄い面、縁の内側の明るみ、左上の照りと反射の筋2本、上と左が明るい縁)。エディタ外の確認用プログラム(作業フォルダ、リポジトリ外)で新旧を並べて調整
  • 周りに気づく力: 点滅中の中央を不透明の暗い紺(#1c2638)に、サインが消えた後の点滅 +0.5 / +0.8 秒を足して5つから等確率に、サインを 0.38W → 0.45W に広げた
  • 見極める力(調整版): FeintStyle.Continuous(小動作は止まらず本命へつながる)と FeintConfig.Adjusted()(本命 0.60 → 0.90W/秒、加速 0.12 → 0.08 秒、T を 1/1.5 の 0.17 / 0.22 / 0.27 秒)。メニューの 6 番目に別項目で置き、診断版は残した(通しの診断には入れない)。ログは feint_adjusted_*.json
  • メニューはカードが収まらない端末でカードの高さを詰める。バージョンを 0.3.0 に。テスト 6 件追加(計 162 件)
  • You の Play で確認: 追う力 83(4問中3問全問正解)、見極める力 診断版 82 → 調整版 72(切り返し 4/5 → 3/5、間違いは 0.24・0.31 秒の速い回答でフェイント側へ)、判断する力 79、周りに気づく力 78(中央の点滅は 2/2 ブロック正解。これまでの試作は 0/6)。体感でも追う力・見極める力(調整版)ともに難しくなった
  • 1回目の Play で START の文字の手前に球が描かれた。判定の一言と START を前面の子 Canvas(RoomScreen.NewFrontLayer)に移して解消
  • コミット 1f11b88。Unity CLI で書き出し → xcodebuild でアーカイブ → App Store Connect にアップロードし、0.3.0(ビルド 4)が内部テストで配信中。You がトムソンに変更点を返信した

決めたこと:

  • 反応・追う力の調整は置き換え、見極める力だけ調整版を別項目にする(DECISIONS.md)
  • 見極める力(調整版)の動き方と速さ(DECISIONS.md)
  • 追う力の 20% は世界座標の速さで上げ、問題バンクは画面上の速さで選ぶ(DECISIONS.md)
  • 周りに気づく力の点滅の時刻・サインの距離・点滅の色(DECISIONS.md。10/05 の 0.38W の決定を変更)

詰まったこと / 気づき:

  • 奥行きありの MOT は、画面上の速さが軌跡の奥行きで軌跡ごとに ±2 割ほどばらつく。速さを上げても、選ばれた軌跡しだいで画面上の平均は 6% しか上がらなかった(0.216 の最初の走査)
  • 同じ Canvas の中で、後から作った文字の手前に球(Image)が描かれた。並び順に頼らず、必ず手前に出したいものは子 Canvas(overrideSorting)に置く
  • 見極める力は、本命が端に着いたあとも回答の猶予(0.9 秒)が残るので、待てば答えが見える。調整版でも簡単なら、次は猶予の短縮が効く
  • You の Play 中にこちらがコードを直し、Play 中の再コンパイルで NullReferenceException が出た(不具合ではない)
  • Unity エディタは tell application "Unity" to quit では閉じず、System Events で Cmd+Q を送って閉じた
  • 10/09 の作業(0.2.0 の TestFlight、追う力の変更)はコミットだけで DEVLOG には書いていない

次回やること:

  • トムソンの 0.3.0 の感想を受けて調整(見極める力の ③ 速度パターンの混在、または回答猶予の短縮)
  • 反応の速さを 0.3.0 で Play 確認(未確認)

2026-10-05

13:24 - 仕様書 v0.9 の確認、周りに気づく力・見極める力の作り直し(5課題がトレーニング画面案の見た目に)

やったこと:

  • トムソンの仕様書 v0.9(~/Downloads/アスリートビジョン_企画仕様_v0.9_20261004.html)を読み、トレーニング画面「暗い部屋マスター v3」・共通デザインルール・新7タイプカードの変更点を整理。診断中の上部表示(「課題名 1/5」+その下で「練習 1/2」「計測 1/8」)の仕様を見つけた
  • v0.9 に合わせて直した: 進捗の見出しを「計測」に、通しの診断では題名の横に「1/5」、一時停止を細い白枠、操作エリアの枠を白、反応の速さは輪を変えず中央だけ切り替え
  • 周りに気づく力を作り直し(PeripheralScreenView / PeripheralSprites): 中心から 0.38W に横長パネル4枚(常に白い輪郭、光った方向だけシアン、参考画像の比率の台形)、中央の点は半径 0.03W、判定の一言は中央とパネルの間、点滅の回数は操作エリアの位置に 0〜4 のボタン。古い PeripheralView は削除
  • 見極める力を作り直し(FeintScreenView / FeintSprites): 細い白い水平レールの上を宝石風のダイヤが動く(残像なし)。レールは動く範囲より少し長い。操作エリアは左右の矢印
  • 周り・見極めもスワイプは画面のどこから始めても数える(AcceptAnywhere、ログに inputArea)
  • これで5課題すべてがトレーニング画面案の見た目になった。テストは 149 件
  • You が周りに気づく力を Play: 周辺 7/8 正解、中央の点滅は 0/2 ブロック(どちらも「1回」と回答、実際は2回と3回)、スコア 53。判断する力も完走(65)
  • トムソンへの返信は、You が「実装上問題になりそうな点は特にない」とだけ送った

決めたこと:

  • 追う力は v0.9 の「全て同径」にかかわらず奥行きありのまま。トムソンへの修正依頼もしない(DECISIONS.md)
  • 周りに気づく力はざっくりでよい: 距離は本文の 0.38W、パネルは参考画像の比率(DECISIONS.md)
  • 周り・見極めもスワイプは画面のどこからでも数える(DECISIONS.md)

詰まったこと / 気づき:

  • v0.9 は「画像は説明用の代表状態、出題・計時などは既存仕様を維持」と明記している。画像から測った値を仕様と読み違えない(周辺パネルの位置を一度「画面の端」とおすすめして撤回した。「平面」も本文には書いていない推測だった)
  • 判断する力を試してもらっている最中にコードを変え、Play 中の再コンパイルで NullReferenceException が出た。試している間はコードを触らない
  • 中央の点滅を数えるのは、画面を作り直しても難しいまま(試作で 0/4、今回 0/2)

次回やること:

  • 見極める力を Play で確認(未確認)
  • 追う力(奥行き)を最後まで通して、難しさと見え方を確認
  • 「6. 診断を通しで」で所要時間を実測

2026-10-04

15:30 - トレーニング画面案(暗い部屋)に合わせて共通部分・反応・判断・追う力を作り直し、追う力を奥行きありに

やったこと:

  • トムソンから5課題のトレーニング画面案(暗い部屋の背景、7状態の画像)が届き、画面案・仕様・試作を突き合わせて論点を整理した(周辺の位置と大きさ、操作エリア、追う力の球の大きさ、上部の Lv と n/4、No-Go の×枠廃止、ロゴ)
  • 部屋の背景を画素関数で描く RoomBackground(一点透視の奥の壁・天井・床・左右の壁、光、角の線、帯状のむらを消すノイズ)。画面案と同じ点の色がほぼ一致するまで調整した。純粋な画素関数を PNG に書き出す確認用プログラムを作業フォルダに作った(リポジトリ外)
  • 共通部分 TaskScreen を作り直し: 上にロゴ(仮)・一時停止・題名・進捗バー・説明、そのすぐ下にフィールド、残りの下のブロックに案内の文字/ボタン/操作エリア。新しい配置 FieldLayout.HeaderFirst(テスト2件)
  • 反応の速さ(ガラスの輪と円 ReactionSprites、下のカードを廃止)と判断する力(ガラスのパネル、Go は水色の塗り・No-Go は赤い輪郭の矢印 GoNoGoSprites、操作エリア)を作り直し。判断する力の判定の一言はパネルの下へ(パネルの中だと長い文がはみ出した)
  • 一時停止ボタン: 押すと課題を中断してメニューへ(TaskRunnerBase.Cancel)。課題の入力からは外す
  • 追う力を奥行きありに: MotSpace(部屋と同じ透視の箱。球の半径 0.025、手前の倍率 1.9)、MotTrajectory3D(3次元の等速直線+鏡面反射、画面上のすき間 0.015W 以上)、MotSeedBank3D(seed と候補番号、速さごとに12問)、tools/mot-seed-scan.sh を奥行き対応(既定)。球は画面案の銀色(MotSprites)で、毎フレーム奥から順に重ねる。同じ回の中で同じ軌跡を繰り返さない。テスト8件
  • You の確認: 反応の速さは「完璧」。判断する力の操作エリアは「もうちょっと増やして」で、下のブロックの最低を 0.32 → 0.45 → 0.55W に広げた

決めたこと:

  • トレーニング画面案を試作の見た目の基準にし、背景と図形はコードで描く(DECISIONS.md)
  • 追う力は奥行きあり(You の判断)。重なりは「画面上で重ならない」を既定にした(DECISIONS.md)

詰まったこと / 気づき:

  • Unity の Mathf.SmoothStep(from, to, t) は GLSL の smoothstep と違い、第1・第2引数は補間の両端。境目のつもりで使うと値がずれる(背景の壁と床が真っ暗になった)
  • 奥行きありで「追跡中ずっと重ならない」軌跡は成立がまれ(速さ 0.18 で候補約1300個に1つ、0.24 で約1万個に1つ)。問題バンクに候補番号を持たせ、実行時は検査なしに候補を飛ばして作る
  • 速さは世界座標の値のままで、画面上の平均の速さもほぼ同じになる(0.18 → 0.190、0.24 → 0.235W/秒)
  • 追う力(奥行き)の最初の Play は 0/2・2/3(残りの2問はウィンドウ切り替えで技術的無効)

2026-10-01

18:45 - トムソンのカード改訂案の確認と、Play 中の画面の自動保存

やったこと:

  • トムソンから届いたシェアカードの改訂案(競技名・競技背景を外した7タイプ×日英)を確認し、所感と返信案を作った。You は「大変いい」とだけ返信
  • Play 中の要所の画面を PNG で残す DebugCapture を追加(エディタと Development Build、単独の課題だけ。保存先は logs/screens_<task>_<UTC>/)

決めたこと:

  • カードは競技を外したトムソン案の方向で進める(DECISIONS.md)
  • 見た目の確認に画面の自動保存を使う(DECISIONS.md)

2026-09-25

20:00 - 反応の速さ・追う力・判断する力の画面の作り込み(記録漏れの補記)

やったこと:

  • 提案資料の「診断プレイ」画面を元に、反応の速さ・追う力・判断する力の画面を作り込んだ(共通部分 TaskScreen、Noto Sans JP、Codex で生成した手のアイコン)。反応の速さは You の確認で OK
  • 判断する力のスワイプを画面のどこからでも数えるようにし、No-Go は×枠を残した(DECISIONS.md)
  • CLAUDE.md に UI の見た目の注意(リニア色空間、表示と同じ画素数で描く、画像の自動切り分け、フォント)を追記した
  • このときの WIP 更新はしたが、開発日誌への記録とコミットが漏れていた

2026-09-23

19:45 - 周辺課題の検証と診断ロジック(GVS・タイプ・重点2項目)

やったこと:

  • 周りに気づく力をエディタで2回確認。計時は仕様どおり(点滅は予定オフセットの時刻に始まり長さ 250ms、周辺サインは予定から1フレーム以内、無効級のフレーム落ちなし)。中央の点滅回数は4ブロック中0正解。2回目に周辺へ回答しなかったのは You が意図的に中央だけを見たもので、点滅自体は見えていた
  • 診断ロジック Runtime/Diagnosis/ を UnityEngine 非依存で実装: GVS(丸めた5能力の加重平均を整数演算で四捨五入)、7タイプ判定(例外2タイプ、最高点から3点以内の候補、前回タイプの維持、完全同点の固定順)、武器、重点2項目(65未満の群を先に、最低点+3の候補、前回順→固定順、見出しの3分岐)。資料の表の例と共通例A(69→72、戦術眼型、反応→周辺)をテストで再現。テストは計131件
  • 試作メニューに「6. 診断を通しで」を追加。課題ごとに1文の説明(タップで開始)→ 5課題を資料の実施順 → 総合結果(GVS・タイプ・武器・僅差の候補・伸びしろ2項目・所要時間)→ 各課題の詳細をページ送り。まとめを diagnosis_<UTC>.json に保存
  • 周辺課題の判定表示を資料の診断版にそろえた(各問 0.2 秒に周辺の正誤、中央回答後 0.4 秒に中央の ✓/×)
  • スワイプ3課題の試行記録に padPressCount と maxDragW を追加(無回答が「操作なし」か「動かし不足」かを切り分けるため)

決めたこと:

  • GVS は丸めた5能力スコアから計算する(DECISIONS.md に記録)

詰まったこと / 気づき:

  • 点滅が見えていて、中央だけに集中した回でも回数を取り違えた(3→2、2→3)。同時課題として難しすぎる可能性が高い。中央を捨てても最大80点なので、捨てる戦略のほうが得にならないかも見る必要がある
  • MOT は You が全問完全正答(100点)で天井。5尺度が正規化されていないので、このままだとタイプがロックオン型に偏るおそれ
  • 資料の食い違い・未定義: GVS の丸めの記述が2通りある(共通例Aに合うほうで実装)、例外タイプ(オールラウンダー・ポテンシャル)の武器が定義されていない

次回やること:

  • 試作で見えた論点をトムソンと共有
  • 「6. 診断を通しで」で所要時間を実測(今回は You の判断で見送り)
  • 結果説明(今回の観察+次に練習すること)と再診断の比較を純粋ロジックで実装、実機(iPhone)で計時を確認

2026-09-22

18:35 - 診断5課題の試作(反応・判断・見極め・追う力・周辺)

やったこと:

  • 共通基盤を実装: AppClock(単調時計)、FrameMonitor(50ms 超で技術的無効)、SeededRandom、Statistics((n−1)p 線形補間の分位点・half-up 丸め)、ReleaseGate(全指解放 200ms)、FieldLayout(セーフエリアから W×W フィールドと操作パッド、0〜1 正規化座標)、FieldView(コード生成の最小 UI)、PointerInput(Input System のイベント時刻を AppClock に換算)、SwipeDetector(0.06W 変位で方向確定)、TaskRunnerBase
  • 5課題を資料のメニュールール v3 と score_v3 の採点まで実装し、順にエディタで確認:
    • 反応の速さ(8問): 完走。入力イベント時刻はフレーム時刻より 0.3〜7.3ms 早く、120Hz でもサブフレームの精度が取れている
    • 判断する力(Go / No-Go 12問): 途中まで確認して問題なし
    • 見極める力(10問): 完走。本命移動の開始(commit)− 動作開始が小動作の時間 T と一致
    • 追う力(MOT 試作A案 4問): 完走、全問完全正答。軌跡は等速直線+鏡面反射の折り返し式で、接近しすぎる軌跡を 1/240 秒刻み+区間内最接近で除外。問題バンクに速さごとの成立 seed を12個
    • 周りに気づく力(4問×2ブロック): 実装(確認は 09-23)
  • 各課題の完了時に JSON ログ(試行ごとの onset・入力時刻・判定・フレーム間隔)、Console に [AthleteVision] 付きの試行結果を出力
  • tools/ を追加: unity-compile-check.sh(Unity 同梱 Roslyn でコンパイル確認)、unity-run-pure-tests.sh(純粋ロジックのテストをエディタ外で実行)、mot-seed-scan.sh(MOT 問題バンクの seed 走査)
  • iOS ビルド用に、ProMotion で 120Hz を使う Info.plist キーを足すポストプロセスを追加

決めたこと:

  • 試作は見た目を作り込まず、計時・判定・ログを優先する(結果カードは後回し)
  • 計時と判定の実装方針(単調時計+入力イベント時刻、判定・採点は UnityEngine 非依存にしてテスト)
  • どちらも DECISIONS.md に記録

詰まったこと / 気づき:

  • Unity エディタを開いたままでは同じプロジェクトをバッチモードで開けない。Bee が残した rsp を流用して同梱の Roslyn を直接呼ぶ方法でコンパイル確認とテストを回せるようにした
  • Unity 向けにビルドした dll(mscorlib 4.0 のファサード参照)を同梱の .NET 6 から使うには、mscorlib / netstandard への参照を足す必要がある
  • MOT の 0.24W/秒は接近検査の通過率が低く、成立する seed 1つにつき平均57候補かかる

17:45 - Unity プロジェクト作成と初期設定

やったこと:

  • Unity プロジェクトを CLI で生成したが、You が Unity Hub の GUI で作りたいとのことで削除。You が Hub で作成(6000.3.14f1、Universal 2D テンプレート)→ athleat-vision-unity/
  • asmdef 3つ(Runtime / Editor / Tests.EditMode)と ProjectSetup.cs を追加。メニュー AthleteVision > Apply Project Settings で Player Settings を適用(縦固定、製品名 AthleteVision、暫定バンドル ID jp.thomsons.athletevision、iOS 15 / Android minSdk 26・ARM64・IL2CPP、スプラッシュ非表示)
  • .gitignore に *.slnx を追加し、Addressables のパターンをサブフォルダ配置に合わせて修正
  • CLAUDE.md に Unity の規約、DECISIONS.md に配置・バージョン・テンプレートを記録して commit(31d6eeb)

決めたこと:

  • Unity プロジェクトの配置・バージョン・テンプレート・入力方式(DECISIONS.md に記録済み)

詰まったこと / 気づき:

  • Unity プロジェクトの新規作成は You が GUI で行う。こちらは推奨設定を示して待つ

2026-09-20

20:00 - トムソン提案資料の初見レビューと結果カードのモック

やったこと:

  • トムソンの企画・仕様・ASO 統合資料(~/Downloads/アスリートビジョン.html、2026-09-13 版)を通読し、初見の感想を伝えた。骨格は良い。論点は、判定しきい値が測定粒度に対して細かく5尺度も未正規化、Day2 以降が地味、3日体験と7日再診断のズレ、V1 の範囲が大きい、条件面が未記載
  • 条件は売上 50:50 と You から共有を受けた
  • 結果カードに競技と型が並び「向いている競技がわかる診断」と誤読される問題を整理。競技は本人の属性として見せる、色はタイプで固定、販促物で競技と型を1対1に並べない、という方向を提案
  • Codex(GPT-6 Astra)でカードのモックを生成 → docs/mockups/result-card-01.png
  • V1 の意味(ストアに最初に出す正式版)を説明

詰まったこと / 気づき:

  • 資料の収益試算ステージ1(月商約60万円)はストア手数料控除前で、新規課金の初回決済分だけ。50:50 がどちらの額に対してか、経費の扱いを確認する必要がある

19:19 - プロジェクト新規作成と概要の記入

やったこと:

  • new-project-setup で ~/cdev/athleat-vision を作成し、GitHub private リポジトリ(ichirokisanuki/athleat-vision)へ初回 push。dev-tracked topic を付与
  • .devnotes/ の4ファイル雛形、.gitignore、README.md、CLAUDE.md を配置
  • プロジェクト概要を README.md / CLAUDE.md に記入。日本語タイトルは「アスリートビジョン」
    • 眼の能力のトレーニング(能力アップ)と診断(測定)ができるスマホアプリ。iOS / Android でリリース予定。現時点では未開発
  • .gitignore に Unity 用パターン(Library/ Temp/ などの生成フォルダ、ビルド成果物、*.p12 / *.mobileprovision などの署名関連)を追記

決めたこと:

  • 開発環境は Unity(DECISIONS.md に記録)

詰まったこと / 気づき:

  • 「診断」という表現は、医療機器・医療行為と誤認されると App Store 審査や薬機法で問題になりうる。「測定」「チェック」寄りの表現にする方向で CLAUDE.md に注意書きを入れた(最終的な文言方針は未確定)
  • .gitignore の Addressables まわりのパターンは Unity プロジェクトをリポジトリ直下に置く前提。サブフォルダに置くなら要調整

次回やること:

  • 企画の具体化(対象ユーザー、鍛える/測る眼の能力の種類、コアループ、マネタイズ)
  • Unity プロジェクトの作成(配置場所とバージョンを決める)

最近のコミット

README

athleat-vision(アスリートビジョン)

概要

眼の能力のトレーニング(能力アップ)と診断(測定)ができるスマホアプリ。Unity で開発し、iOS / Android でのリリースを予定している。

現在は企画段階(未開発)。

セットアップ

(記入予定)

使い方

(記入予定)