# サッカー場面における行動計画更新課題の仕様

敵陣を見る、受球直前に自陣側の味方と近づくボールを見る、受球後に敵陣を再確認する、という流れを3枚の一人称画像で表現します。最初に準備した進行方向を維持するStay条件と、逆方向へ変更するSwitch条件を比較します。最終画像の出現からボタン押下までを反応時間として測定します。

版は0.3、作成日は2026年10月8日、更新日は2026年10月9日です。承認済みの受球直前の第4版画像を用いて、Python／PsychoPy実行プログラムを実装しました。以下の時間、比率、試行数は初期設定であり、研究目的に合わせて予備実験後に確定します。

## 評価する機能と課題の位置づけ

中心となる問いは「最初に準備した方向が、受球後の敵配置と合わなくなったとき、どれだけ速く正確に選択を更新できるか」です。最初の画像で敵の反対側へ進む計画を準備し、最終画像を実行合図として、その時点で適切な方向を押します。初回画像は予告刺激、最終画像は反応を要求する命令刺激に相当します。

一般的なFlanker課題は、同時に提示された標的と妨害刺激の反応適合性を操作します。本課題はその操作を含まないため、「Flanker課題」と呼ぶよりも「サッカー場面を用いた予告刺激による行動計画更新課題」と呼ぶのが適切です。[Eriksen and Eriksen 1974](https://link.springer.com/article/10.3758/BF03203267)

また、最初の画像では押下を開始しないため、開始済みの反応を止めて別の反応に変更するchange-signal課題とも区別します。スポーツ経験を扱ったchange-signal研究は、比較すべき別の実験構造として参照します。[Chen et al. 2019](https://pmc.ncbi.nlm.nih.gov/articles/PMC6834996/)

本課題から得られるRT差は、行動計画の更新に関連する行動指標です。画像の変化検出、記憶、左右の反応選択、条件の予測も関与します。サッカーの競技力や実際のパス判断能力を直接評価できることまでは前提にしません。

## サッカー場面と刺激画像

被験者は赤チームの選手です。青チームの近くの守備者を避け、左右どちらの空いた側へ進むかを決めます。ボタンはその方向を選択する操作とし、初版ではパスとドリブルを別の選択肢として採点しません。

| 画像ID | ファイル | 内容 | 使用段階 |
| --- | --- | --- | --- |
| `opponent_left` | `assets/opponent_left.png` | 敵陣を見る一人称視点。近くの青い守備者が画面左、赤い味方が遠方の左右に配置される | 最初と最終 |
| `opponent_right` | `assets/opponent_right.png` | 同じ場面を基に、近くの青い守備者を画面右へ変更する | 最初と最終 |
| `receive_pass` | `assets/receive_pass_v04.png` | 立った選手の目線の高さから自陣側を見る受球直前の一人称視点。正面の赤い味方と近づいてくるボールが見え、自分の足や脚は写らない | 中間のみ |

敵陣の左右画像は1672 × 941 px、受球直前画像は1671 × 941 pxのRGB PNGです。ほぼ16対9の横長画像を、縦横比を保って画面中央に最大表示します。ディスプレイと比率が合わない場合は黒い余白を使い、切り抜きや縦横の引き伸ばしを行いません。最初と最終の画像は同じサイズと位置で表示します。

青い守備者は各敵陣画像に1人だけ配置し、身体全体を画面中央線の一方に収めます。赤い味方は両側に配置し、片側だけにパス先があるという別の判断手掛かりを抑えます。左版を基に右版を編集し、全体の左右反転は行っていません。生成画像なので背景や姿勢の画素単位の一致は保証されません。

最初と最終で同じ2枚を再利用する要件に合わせ、敵陣画像にはボールや自分の足を写しません。これにより、受球前から足元にボールがあるという矛盾を避けます。受球直前画像は全試行で同一です。第4版では自陣側の味方がパスを出した後の姿勢と、被験者へ近づくボールを目線の高さから示します。足とボールの接触そのものを描かず、受球後に周囲を確認する視点は最終画像が担います。自陣側へ向くことは前後の流れと教示で伝え、生成画像の背景が敵陣画像の幾何学的に正確な180度反対を再現しているとは扱いません。画面内に正解の矢印、左右文字、色枠、UIは重ねません。

中間画像の500〜1500 msは、最初に見た敵陣情報が見えなくなる実験上の時間です。熟練者が足元をその時間だけ注視するという仮定は置きません。受球直前の静止画像を提示する方法であり、実際のボール飛行中の視線や注視時間をそのまま再現するものではありません。

3枚の静止画の切り替えで場面を表現します。実際の振り向き運動、ボールの飛行軌道、守備者の移動速度、トラップの運動技能は再現も計測もしません。左右は常に、最終画像を見ている被験者から見た画面の左右です。

## 反応規則と条件

| 最終画像の敵位置 | 選択する方向 | ボタン | キー | 使用する指 |
| --- | --- | --- | --- | --- |
| 左 | 右 | 右ボタン | K | 右手の人差し指 |
| 右 | 左 | 左ボタン | F | 左手の人差し指 |

FとKは既存課題の左右キーを引き継ぎますが、敵位置と反応の対応は逆です。以前の課題を行った参加者にも、今回の規則を明示して練習してもらいます。

| 最初の敵位置 | 最終の敵位置 | 条件 | 最初に準備する方向 | 最終の正解 |
| --- | --- | --- | --- | --- |
| 左 | 左 | Stay | 右 | K |
| 右 | 右 | Stay | 左 | F |
| 左 | 右 | Switch | 右 | F |
| 右 | 左 | Switch | 左 | K |

Stay／Switchは同一試行内の最初と最終の配置の関係です。前の試行から押す手が変わったかどうかは、別の変数として記録します。中間画像では反応しません。今回の初版には第3反応やNo-go条件を設けません。

## 1試行の提示順と時間

```text
注視点 → 敵陣を見て方向を準備 → 自陣側のパスを確認 → 受球後に敵陣を再確認し押下
500〜800 ms   500 ms             500〜1500 ms        RT計測開始
                                                        ↓
                                                反応または1500 ms
                                                        ↓
                                                  練習時の結果表示
                                                        ↓
                                                     次の試行
```

| 段階 | 提示 | 設計時間 | 求める行動 |
| --- | --- | --- | --- |
| 試行間隔 | 黒背景の中央に白い注視点 | 一様乱数500〜800 ms | FとKを離し、中央を見る |
| 最初の敵陣確認 | 左／右の敵配置画像 | 500 ms | 敵の反対側へ進む方向を準備する。押さない |
| 受球直前 | 自陣側の味方と近づくボールの共通画像 | ランダムに500〜1500 ms | 準備した方向を保つ。押さない |
| 最終の敵陣確認 | 左／右の敵配置画像 | 最初の押下、または1500 msまで | 最新の敵配置に対応してFかKを1回押す |
| 練習時の結果表示 | 正解、誤反応、早押し、時間切れ | 700 ms | 規則を確認する |

最終画像の表示と反応開始は同時です。別のGO画面や確認画面を挟みません。反応があれば次の画面更新で最終画像を消し、反応がなければ1500 msで終了します。終了後の空白画面で反応を追加受付しません。最初、中間、最終の画像間には黒画面や文字を挟みません。

中間画像の時間は、500〜750、750〜1000、1000〜1250、1250〜1500 msの4区間を条件ごとに同数割り付け、各区間内から一様乱数で抽出します。この方法で全体としてほぼ一様な分布を保ち、Stayだけ中間時間が短いという偏りを抑えます。抽出値を測定したリフレッシュレートの最も近いフレーム数へ丸め、設計値、フレーム数、実際の提示時間をすべて保存します。

被験者には、実際に椅子や頭を180度回してもらいません。画面の切り替えを視線の向きの変更として扱います。身体の向きを変える実験は別の装置構成と測定設計を必要とします。

## 教示

> あなたは赤チームの選手です。赤いユニフォームは味方、青いユニフォームは敵です。
>
> 最初に敵陣の画像が出たら、近くの青い敵を避けて進む方向を準備してください。敵が左なら右へ、敵が右なら左へ進む準備をします。この段階ではボタンを押さないでください。
>
> 次に、自陣側の味方と、こちらへ近づいてくるボールの画像が出ます。これはパスを受ける直前の場面です。この間もボタンを押さず、準備した方向を保ってください。
>
> パスを受けた後として、再び敵陣の画像が出ます。その時点の敵の位置に従って、できるだけ速く正確にボタンを1回押してください。敵が右なら左ボタンF、敵が左なら右ボタンKです。
>
> 敵の位置は変わらないことが多いですが、反対側へ変わることもあります。最初の計画に固執せず、最後の画像に従ってください。
>
> 左手の人差し指をF、右手の人差し指をKに置いてください。最後の画像が出るまでは押さず、各試行の後は両方のキーを離してください。

「最初の画像を記憶する」だけではなく「方向を準備する」と教示します。ただし、教示だけで実際の運動準備が証明されるわけではありません。3枚目だけを見る戦略でも正解できる点は、本課題の構造的な限界です。

## 試行数とランダム化

| モード | 試行数 | Stay | Switch | 構成と用途 |
| --- | --- | --- | --- | --- |
| 練習 | 16 | 8 | 8 | 4つの配置組合せを各4回。規則習得を優先し、毎試行フィードバック |
| デモ | 32 | 24 | 8 | 1ブロック。予備的な動作と課題理解の確認 |
| パイロット | 128 | 96 | 32 | 32試行 × 4ブロック。ブロック間に自由休憩 |

デモとパイロットでは、最初の敵位置2種 × 中間時間区間4種について、1ブロックごとにStayを各3回、Switchを各1回にします。最終の左右および正解キーの左右も同数になります。練習は4つの配置組合せ × 時間区間4種を各1回とします。

ブロック内は保存した乱数シードでシャッフルします。交互順や同じ並びを固定しません。条件の連続回数を無理に制限せず、直前条件や直前の正解方向は保存して分析時に確認します。誤反応、早押し、無反応でも同じ試行を自動的にやり直しません。

Stay 75%は、最初の予告が有効なことを多くして準備を促す設計上の選択です。予告の有効性と反応準備を操作した研究を参考にしていますが、このサッカー画像課題で同じ効果が得られることは未検証です。Switchが少ないことによる驚きや頻度の効果も、RT差からは分離されません。[Wühr and Heuer 2017](https://pmc.ncbi.nlm.nih.gov/articles/PMC5405448/)

練習時はStayとSwitchを等頻度で経験し、デモ／パイロット開始前に「以降は変わらないことが多い」と再教示します。128試行はパイロット用の初期案であり、個人差の信頼性や群間比較の検出力を保証する試行数ではありません。

## 反応時間と異常反応の扱い

RTの単位はmsとし、`rt_ms = response_keydown_time - final_image_onset_time` と定義します。起点は最終画像を画面に送るflipに同期した時刻です。Pythonで画像描画の指示を出した時刻を起点にしません。

最初に発生した新しいFまたはKの押下を採用します。誤ったキーの後に正解へ押し直しても、最初の反応が誤反応です。FとK以外のキーは正解候補にせず、Escapeだけは中断操作として全段階で受け付けます。

- 最終画像より前のF／K押下は、段階と絶対時刻を別のイベント記録に残し、`early_response = true`とします。最終画像へのRTに流用しません。画像系列は予定どおり提示し、試行全体を主解析から除外します。
- 最終画像の出現時にFまたはKが押されたままなら、`held_key_at_target = true`とし、主解析から除外します。キーリピートは新しい押下として採用しません。
- 両キーの押下は取得バッチにかかわらず押下時刻で順序を決めます。最初の押下から反対キーまでの差が1 ms以下で、どちらも受付時間内なら`ambiguous_response = true`とし、有効な単一反応として採点しません。
- 1500 msより前の押下だけを受付対象とします。遅い押下はイベント記録に残しても、時間切れの結果を変更しません。無反応のRTは空欄またはnullとし、0や1500を代入しません。
- 最終画像以後のRTが150 ms未満なら`fast_response = true`とします。これは予備的な解析用フラグで、早押しの証明ではありません。原データは削除しません。

最初の敵陣画像から最終画像の消失までのフレーム間隔を保存し、間隔が測定した通常のリフレッシュ間隔の1.5倍を超えた場合をフレーム遅延として数えます。0.5倍未満の間隔も、垂直同期が機能していない可能性を示す`short_frames`として数えます。画像系列中の遅延または異常に短い間隔、時刻の欠損、時計の同期不良がある試行は`timing_valid = false`とし、主RT解析から除外します。リフレッシュレートを安定して取得できない場合は、研究用の測定開始前に機材を点検します。

各試行では最終反応の一致を表す`response_correct`と、早押し等を含めて有効な試行かを表す`trial_valid`を分けます。`trial_valid`は試行が完了し、早押し、押しっぱなし、曖昧反応、時間切れがなく、`timing_valid`がtrueのときtrueとします。誤反応でも他の条件を満たせば有効な試行ですが、有効正答には入りません。正答率は、まず全完了試行を分母として有効正答数を報告し、早押し、曖昧反応、時間切れ、計測不良も別々に数えます。RT集計は、有効かつ正答で150 ms以上、1500 ms未満の試行を初期の対象とします。

## 保存するデータ

参加者IDには氏名を使わず、英数字・ハイフン・アンダースコアで1〜40文字の仮名IDを用います。固有のセッションIDを付け、1試行1行のUTF-8 CSV、キーイベントのJSONL、フレーム時刻のJSONL、実行設定のJSON、事前生成した試行列のJSON、集計JSONを保存します。各試行終了後に書き込みをflush／fsyncし、Escape中断時にも完了済み試行を残します。中断した未完了試行は`aborted=true`, `completed=false`とし、通常の無反応と区別します。保存場所とファイルの説明はREADMEに記載します。

| 項目群 | 必須の項目 |
| --- | --- |
| 識別 | `participant_id`, `session_id`, `spec_version`, `mode`, `block`, `trial`, `completed`, `aborted` |
| 条件 | `condition`, `initial_opponent_side`, `final_opponent_side`, `prepared_response_side`, `correct_response_side`, `correct_key` |
| 刺激 | `initial_image_id`, `intermediate_image_id`, `final_image_id`, `stimulus_set_id`, 画像のSHA-256 |
| 時間 | `iti_requested_ms`, `initial_requested_ms`, `intermediate_bin`, `intermediate_requested_ms`, `intermediate_frames`, 各画像のonset／offset時刻と実提示時間 |
| 反応 | `response_key`, `response_side`, `response_time_s`, `rt_ms`, `response_correct`, `trial_valid`, `primary_rt_included`, `exclusion_reasons` |
| 状態 | `early_response`, `held_key_at_target`, `ambiguous_response`, `fast_response`, `omission`, `early_response_count` |
| 直前試行 | `previous_condition`, `previous_correct_key`, `previous_actual_key`, `required_response_transition` |
| 実行環境 | `random_seed`, `psychopy_version`, `keyboard_backend`, `refresh_rate_hz`, `screen_size_px`, `dropped_frames`, `timing_valid` |

絶対時刻はセッション内の同じ単調時計を使い、秒単位で保存します。各種時刻とRTのms表記は混同しません。前試行変数はブロック開始時に空欄とし、`required_response_transition`は直前試行の正解キーに対するrepeat／changeで定義します。初回画像から最終画像へのSwitchとは区別します。

## 集計と解釈

主要な記述指標は、参加者ごとのStay正答RT中央値、Switch正答RT中央値、そして `RT差 = Switch中央値 - Stay中央値` です。プログラムは練習・本試行を分けて自動集計します。有効試行内の正答率と、全完了試行に対する有効正答の割合を別々に保存し、それぞれStayからSwitchを引いた差も保存します。速さのために正確さを犠牲にした結果を、更新能力の改善とは解釈しません。

画像の左右、押す手、中間画像の提示時間、直前試行からの反応方向の反復についても集計します。試行単位の検定を行う場合は、参加者内の反復を扱えるモデルに、条件、最終の左右、実中間時間、直前反応方向などを入れる設計が候補になります。画像ペアが1組だけの初版では、画像刺激一般への推論は限定的です。

150 msの閾値は設計案であり、普遍的な生理学的境界ではありません。予備実験で分布を確認し、本実験前に除外規則を固定します。100 ms／200 ms閾値での感度分析を併記する方法も候補です。Switch有効正答が少ない参加者では、数値とともに有効試行数を示し、デモ結果で個人を順位付けしません。

## 本実験へ進む前に解決する点

最優先は、初回画像に基づく準備が起きているかの確認です。教示と75%のStayで準備を促し、予備実験後に参加者が用いた方略を確認します。より強い検証には、初回画像が方向を知らせない対照条件との比較、またはEMGなどによる準備状態の測定が考えられます。これらは追加の条件または装置を必要とし、初版には含めません。

次に、画像反復と反応変更の分離です。今の3枚ではStayが画像反復、Switchが画像変更なので、両者が完全に重なります。拡張時は、左右それぞれに複数の場面を用意して「画像は変わるが反応方向は同じ」試行を追加します。これで画像同一性の利点を検討できますが、敵位置変更と反応方向変更の結び付き自体は残るため、純粋な運動更新の同定にはさらに条件設計が必要です。

敵の反対側を選ぶ規則は、左右の空間情報に対して逆方向へ応答する操作です。反応準備と刺激反応適合性は、それぞれRTに影響し得ます。この規則はサッカー場面として理解しやすい一方、RT全体に逆方向への変換が含まれる点を解釈に残します。[Kato et al. 2005](https://journals.sagepub.com/doi/10.2466/pms.101.3.684-694)

生成刺激の背景、敵の面積、顔、姿勢、左右の距離は完全には一致していません。初版のデモでは画像の内容と規則を確認できますが、本実験用には、背景固定の撮影または統制した3D描画による複数ペアを検討し、左右判断の難易度を事前に測定します。サッカー経験者に受球場面の自然さも確認してもらいます。

最後に、キー押下のRTはサッカーでの全身の動きやボール操作時間ではありません。競技への関連を主張するには、実プレーでの判断・動作指標との関係を別途検証します。

## Python実装

実行ファイルは`soccer_task_psychopy.py`、割付・採点・保存の独立した処理は`soccer_task_core.py`です。既存の `../plug-soccer-nft/nft_button_press_task_psychopy.py` を構成の参考にし、今回の新しいフォルダ内にプログラムとデータを置きました。

3枚の`ImageStim`を開始前に読み込み、GPUへの転送も済ませ、試行途中で画像ファイルをロードしません。キーボードと`logging.defaultClock`に同じセッション時計を渡し、時計を試行中にリセットせず、最終画像の最初の`flip()`の返り値をonsetとして保存します。RTは、その共通時計上の押下時刻からonsetを引いて1000倍します。これにより、flip直前の押下が後から取得されても負の相対時刻として区別できます。画像送出のflip時刻は画面の物理的な発光時刻と完全に同じではないので、研究用の厳密な絶対遅延は実機で確認します。キー入力には非同期の押下タイムスタンプを取得できる`psychopy.hardware.keyboard.Keyboard`を使い、実際に選ばれたbackendを記録します。PTBまたはIOHubを必須とし、取得時刻しか持たないevent backendへのフォールバックは受け入れません。[PsychoPy Window](https://psychopy.org/api/visual/window.html), [PsychoPy Keyboard](https://psychopy.org/api/hardware/keyboard.html)

ウィンドウ表示は視覚確認用とし、`timing_valid=false`で主RT解析から除外します。`--smoke-test`の合成反応も独立した`test_output`に保存し、主解析から除外します。通常はフルスクリーンで安定したリフレッシュレートを測定できた場合に開始し、各試行のフレーム遅延も個別に判定します。提示終了後に取得したイベントでも、実際の押下時刻が表示中かつ締切前なら採用できます。表示終了後に実際に押したキーを受付することはありません。

既存版では反応時計のリセットが最初のflipより前に行われ、最終刺激後の空白中も反応を収集します。新実装では上記のRT起点と1500 msの窓に合わせます。既存コードの`nogo`は赤刺激なしでHを押す条件なので、反応を抑制するNo-goとは区別します。

各試行を保存する処理は最終画像の消失後の黒画面で行い、その後に次の注視点を500〜800 ms提示します。保存処理による試行間の黒画面時間は機材で変動し、注視点の予定時間とは別です。3枚の刺激間にはこの保存処理や黒画面を挟みません。Retina画面では物理フレームバッファと論理ピクセルを区別し、画像全体が画面内に収まるサイズを計算します。

実装時の受け入れ条件は、4つの配置組合せで正解対応が一致すること、各ブロックの条件・左右・中間時間区間の割付が一致すること、早押しと押しっぱなしを最終反応に流用しないこと、反応の訂正や時間切れ後の押下で結果を上書きしないこと、中断時に保存が残ることです。画像・時計・キー入力・フレームの動作は実験を行う機材で確認します。

実装の自動テスト、実際の画像表示、PTBによるF／K入力とRT保存、Escape中断を確認しました。安定した全画面の表示周期と絶対遅延の校正は未確保です。詳細は`design/IMPLEMENTATION_QA.md`に記載しています。
