PsychoPy Builderで作る心理学実験 6th Edition¶
はじめに
本書はPsychoPy Builderに関する日本語の情報が少なかった2014年1月頃、PsychoPy 1.79.01に準拠して執筆を始めました。同年9月に第1版を公開した後、PscyhoPyのバージョンアップにあわせて改訂を重ねてきましたが、コンポーネントの追加や廃止、出力するコードの仕様変更、JavaScriptへの対応など、既存の文章に追記するだけでは対応が難しくなってきていました。 そこで今回、章立ての変更を含めた、これまでより大きな改訂をおこなうことにしました。 主な変更点を以下に挙げます。便宜上構成の変更、書式等の変更、その他の変更としていますが、複数のカテゴリにまたがる内容もあってあまりうまく分類できていません。重要な変更を強調表示してあります。
- 構成の変更
出力されたPythonのコードの構造を前提とした内容(旧版第12章「実験の流れを制御しよう―強化スケジュール」)を削除した。
psyexpファイルを直接編集する内容(旧版13.3節「テキストエディタを用いて多数のコンポーネントを追加しよう」、旧版13.9.1節「XML形式による実験の表現」)を削除した。
ベンチマークウィザードは事実上放置されているので、ベンチマークウィザードに関する記述を削除した(第1章)。
Buttonコンポーネントが実用的になったため、Buttonコンポーネントを活用するようにした。
Button, Slider, Formコンポーネントは利用場面が多いうえに、Mouseコンポーネントを利用せずにマウスを活用できるため、Mouseコンポーネントより先に解説することにした(Button, Slider, Formコンポーネントは8章、Mouseコンポーネントは9章)。
Button, Slider, Formコンポーネントの解説を「以前の章で作成した実験に組み込む」という構成とした。具体的には、第6章の実験にSliderコンポーネントとFormコンポーネント、第7章の実験にButtonコンポーネントを組み込むこととした。
staircaseとinterleaved staircases(旧版第11章)はもともと独立した章とするにはボリュームが少なかったため、廃止して第3章のトピックスへ移動した。
旧版9.2節「クリックした視覚刺激オブジェクトを記録しよう」の内容は新しい第9章(旧版の第8章に相当)のトピックスへ移動した。
視覚刺激コンポーネントの [ドラッグ可能] について新しい9章のトピックスで簡単に解説した。
新たな第12章として「正答率や経過時間で終了する課題を作成しよう」を追加し、廃止された旧版第12章で扱っていたループの中断について現在のBuilderの仕様に合わせた方法で解説した。また、新たな内容としてルーチンのテンプレート化についての解説もこの章に追加した。
プラグイン/パッケージマネージャに関する解説を附録に追加した。
TextBoxコンポーネントやFormコンポーネントで日本語テキストを入力させたい場合の解決方法のひとつとして、JavaScriptで出力した実験をローカルブラウザで実行する方法の解説を附録に追加した。
実験記録ファイルから分析に必要な情報を取り出すスクリプトの例を附録に追加した。
第2章でPilotモードを導入し、Pilotモードでウィンドウモードを強制する際のウィンドウサイズの変更法を解説した。
多重ループによるブロック化の解説にCounterbalanceコンポーネントを導入した(第4章)。
Variableコンポーネントの解説を独自変数の出力についての解説の補足とした(第7章)。
コンポーネントのコピー&ペーストを積極的に活用するように、実験作成手順の解説を見直した。
プロパティに値が正しく入力されているか確認するために「実験内を検索...」を活用するようにした(第7章, 第11章)。
[位置揃え]を積極的に活用するようにした。これにより第7章の錯視図形の作図が簡単になった。
各章の実験作成手順を解説する際に、その実験用のフォルダを作成する指示を追加した。これに伴い、同一のフォルダに複数のpsyexpファイルを作る指示を削除した。
実験が正常に終了しなかったときにiohubが問題を生じることがあるため、各章の実験作成手順を解説する際に、入力のバックエンドをPsychtoolboxに設定する指示を追加した(PsychoPy 2025.1.0では標準でPsychtoolboxになるように変更された)。
- 書式等の変更
実験作成手順を箇条書きしている部分について、各プロパティに入力する値を地の文と異なる書式(Sphinxのインラインリテラル)にした。
実験作成手順を箇条書きしている部分について、2024.2.5のウィンドウレイアウトに準拠してプロパティのタブ名を明示するとともに、プロパティ設定ダイアログ等に表示される順序に記述するようにした。具体的には、2024.2.5では [サイズ [w, h] $] と [位置 [x, y] $] では [サイズ [w, h] $] の方がダイアログ上で先に表示されるので、この両者を編集する場合は [サイズ [w, h] $] を先に書くようにした。
カラーピッカーの出力に合わせて、色のRGB成分表記は( )や[ ]で囲まない形式とした。これに関連してRGB成分表記および$記号に関する記述を見直した。
[位置 [x, y] $] など初期値がシーケンスであるプロパティについて、最近のバージョンのBuilderはタプルに変更されているので本書の記述でもタプルに変更した(図は更新していないので図の中でリストとなっている場合がある)。
- その他変更
第1章のインストール方法を2024.2.5に合わせて更新した。特にWindows版Standaloneインストーラーでインストールした場合のUIの日本語化の問題について解説し、Portable PsychoPyについても言及した。
「繰り返し毎に更新」の設定を忘れた時のBuilderの挙動が変化したことに対応した。
expInfoで数値と解釈できる文字列が入力された時の挙動が変化したことに対応した。
内部変数theseKeysの挙動が変化した(ルーチン開始後直後にtheseKeysが未定義となる)ことに対応した。
Polygonコンポーネントで直線を描画する際、 [サイズ [w, h] $] の第2要素の扱いが変化したことに対応した。
Microphoneコンポーネントでルーチン内に終了が空欄のコンポーネントがあるときのエラーが解消されたことに対応した。
Movieコンポーネント、Cameraコンポーネントの仕様変更に対応した。
第5版でheightに単位を変更した際の修正漏れを修正した。
第5版でnorm単位に関する記述を削除した際の修正漏れを修正した。
教示文などで長すぎて画面に入りきらないものを修正した。
Imageコンポーネントなどでサブフォルダに配置したファイルを参照する際に、プロパティに式を入力してサブフォルダ名を結合するのではなく、条件ファイルに完全な相対パスを書くようにした(オンライン実験化する際にBuilderがリソースを検出できる可能性が高まる)。
key名を表示するデモ(第3章)はPilotモードで実行するようにした。
改訂にあたって、第5章の扱い(順序変更、内容変更、削除)に悩みましたが、この章に手を入れると6章以降の記述を全面的に見直す必要があるため、今回はほぼそのまま残す事にしました。2025年度の授業期間が始まるまでに改訂を終える予定で作業を始めたものの、なかなか作業が進まず予定を1ヵ月近く過ぎてしまいました。後半は授業準備の合間の細切れな時間で作業したため、修正できていない見落としがたくさんあるかもしれません。誤字や内容の誤りの指摘、その他内容についての要望などございましたら、十河までご連絡いただけましたら幸いです。
2025年4月24日 十河 宏行
- 1. PsychoPyの準備
- 2. 刺激の位置や提示時間の指定方法を覚えよう
- 3. 最初の実験を作ってみよう―サイモン効果
- 3.1. 実験の手続きを決めよう
- 3.2. 実験のためのフォルダを準備してpsyexpファイルを保存しよう
- 3.3. 視覚刺激を配置しよう
- 3.4. キーボードで反応を検出しよう
- 3.5. 条件ファイルを作成しよう
- 3.6. 繰り返しを設定しよう
- 3.7. パラメータを利用して刺激を変化させよう
- 3.8. 実験記録ファイルの内容を確認しよう
- 3.9. 反応の正誤を記録しよう
- 3.10. ルーチンを追加して教示などを表示しよう
- 3.11. 練習問題:練習試行を追加しよう
- 3.12. この章のトピックス
- 3.12.1. 自分のキーボードで使えるキー名を確かめる
- 3.12.2. Builderで使用できない名前を判別する
- 3.12.3. 無作為化と疑似乱数
- 3.12.4. Loopのプロパティ設定ダイアログの [使用する行 $] について
- 3.12.5. $を含む文字列を提示する
- 3.12.6. PsychoPyの時間計測の精度について (上級)
- 3.12.7. コンポーネントの開始・終了時刻をデータファイルに出力しないようにする
- 3.12.8. 「CSV形式のデータを保存(summaries)」・「xlsx形式のデータを保存」で作成される記録ファイルの形式
- 3.12.9. 独自のルーチンテンプレートを登録する方法 (上級)
- 3.12.10. staircaseとinterleaved staircasesによる階段法の手続き (上級)
- 4. 繰り返し方法を工夫しよう―傾きの対比と同化
- 5. Pythonコードを書いてみよう―視覚の空間周波数特性
- 6. 反応にフィードバックしよう―概念識別
- 7. キーボードで刺激を調整しよう―ミューラー・リヤー錯視
- 8. グラフィカルインターフェースを活用しよう
- 9. マウスをさらに活用しよう―鏡映描写課題
- 9.1. この章の実験の概要
- 9.2. Mouseコンポーネント
- 9.3. 実験の作成
- 9.4. psychopy.event.Mouseクラスのメソッドを利用してマウスの状態を取得しよう
- 9.5. リストの要素にアクセスしてマウスカーソルと上下反対にプローブを移動させよう
- 9.6. 刺激の重なりを判定しよう
- 9.7. カーソルの位置を設定し、カーソルの表示ON/OFFを制御しよう
- 9.8. for文を用いて複数の対象に作業を繰り返そう
- 9.9. ルーチンに含まれる全コンポーネントのリストから必要なものを判別して処理しよう
- 9.10. リストにデータを追加してマウスの軌跡を保存しよう
- 9.11. 軌跡データを間引きしよう
- 9.12. ゴール地点でクリックして終了するようにしてみよう
- 9.13. 練習問題:反転方向切り替え機能とフィードバック機能を追加しよう
- 9.14. この章のトピックス
- 10. 音声と動画を活用しよう
- 11. 無作為化しよう―視覚探索
- 12. 正答率や経過時間で終了する課題を作成しよう
- 13. 付録