【書評】PsychoPyでつくる心理学実験

本記事について

朝倉書店様と訳者の先生方より、2020年9月1日出版の、PsychoPyでつくる心理学実験をご恵投いただきました!

www.asakura.co.jp

 

PsychoPyの作者自身が筆者であるため、本当に素晴らしい教科書でした。まずPsychoPyについて簡単に紹介したのち、書評を記します。

※ただ書いてから気づきましたが、書評というより要約みたいになってしまいました。まあいいか。

 

そもそもPsychoPyとは?

University of NottinghamのJonathan Peirce氏が作成された、「心理学、神経科学、言語学のための多彩でダイナミックな実験を作成するための、オープンソース(無料)のソフトウェアパッケージ」です(本書より直接引用)。

端的にいえば、「心理学、神経科学、言語学でよく用いられる実験課題を無料で作成できるソフト」です。Pythonをベースとしているので、名前に「Py」が付いています。

PsychoPyのダウンロードはこちらから

PsychoPyの作者は海外の研究者ですが、愛媛大学・十河宏行先生が日本語化や、日本語ドキュメントの執筆を行ってくださっています。

 

インストール方法や基本的な使用方法は、関西学院大学・小川洋和先生の解説が最も分かりやすいと思います。

 

これまでにも同様の目的を実現する商用ソフトはありました。しかしPsychoPyは、それらと遜色ない、いやむしろ今やそれら以上に充実した機能を備えたソフトであり、しかもタダ。作者自身が実験心理学者であるため、痒い所にちゃんと手が届く仕様。

特徴的なのは、以下の3通りの方法で実験課題を作成できること。

  1. Builder(プログラミングのコードを一切書く必要がないGUIで、マウス操作が主体)
  2. Coder(Pythonのコードを書く)
  3. BuilderとCoderのハイブリッド(大半はBuilderで作成し、一部の機能をCoderで実現する)

 

このうち、Builderの操作が本当に分かりやすく、それでいて多機能なので、学部生向けの実験実習から、プロ研究者の実験まで、幅広く用いることができます。僕も学部生向けの実験実習で長年使用していますが、上記の関西学院大学・小川洋和先生の解説に沿って実演するだけで、30分程度で基本的な機能は習得してもらえます。

 

僕自身でも、長年にわたりBuilderで実験課題を作成してきましたが、最近はちょっと複雑な実験課題を組むことがあるため、柔軟性の高いCoderに移行しています。PsychoPyはPythonベースのソフトと書きましたが、上述のように「パッケージ」なので、心理実験等でよく組み込まれる処理(例:刺激を200msec呈示)を行うためのPythonコードが、関数として多数用意されています。

十河先生が執筆された「心理学実験プログラミング: Python/PsychoPyによる実験作成・データ処理」を丁寧に写経すれば、Python初心者でも十分にCoderで実験課題を作成できます。

www.asakura.co.jp

 

この記事も非常におすすめです。

qiita.com

 

書評

ではここから書評を記します。僕が本書の特長だと思った点は、以下の4点です。

  1. Builder操作に関する解説が主体
  2. いくつかの代表的な実験課題(例:視覚探索課題)を例に挙げながら、機能を解説
  3. 実験心理学の教科書(←これが良い!)
  4. 外部機器との連携

 

1つずつ説明していきます。

 

1. Builder操作に関する解説

上で、「Coderのほうが柔軟性が高いから、僕自身では、最近はCoderを使っている」と書きました。え、じゃあBuilderって、GUIで簡単に操作できるとはいえ、できることが限られるんじゃないの? Coderの解説書の方が需要が高いんじゃないの? と思うかもしれません。

その疑問に対する答えは、「Yes、でもそれでいいっ! それがBEST!」です(リサリサ先生の声で)。

Builderの設計思想は、GUIで任意の実験課題を作れるようにすることではありません。Builderは、GUIで「標準的な実験課題」を作れるように用意されたもの。Builderには多くのメニューが用意されていますが、意図的に機能を網羅していません。なぜなら、多すぎるメニューは利便性を低下させるし、何より初心者を混乱させるからです。幅広いユーザーが、簡便に標準的な実験課題を作れるように調整されたインタフェースが、Builderなのです。

したがって、初心者は難なく使用方法を習得できるし、プロ研究者であっても標準的な実験課題を用いる場合にはBuilderを使って何の問題もありません。むしろ素早く実験を作成できるのだから、その方がいいじゃないか。デバグも楽になるし。

 

あ、熱く語りましたが、これは本書に記載されていることです。僕はここを読んだとき、ハートが震えてヒートが燃えつきました(いや燃えつきたらあかん)。PsychoPyの作者自身が執筆した書籍なので、こういう作者の思いが垣間見えるのがいいですね。

 

ちなみに、後述もしますが、PsychoPyはオンライン実験にも対応しています。PsychoPyで作成した実験課題を専用のサーバにアップロードすることで、インターネットブラウザを介して実験を受けられるようになるということです。本記事の執筆時点(2020/8/18)では、オンライン実験用のプログラムは、原則としてCoderを使用せず、Builderで作成しなければならないと思います。そういう意味でも、Builderで課題を作成する方法の解説には意義があります。

※なお本書では、オンライン実験のための手続きは掲載されていません

 

2. 代表的な実験課題(例:視覚探索課題)を例に挙げながら、機能を解説

PsychoPyが見据えている研究領域(心理学、神経科学、言語学)の特徴は、「こういうデータを測定したかったら、こういう実験がよく用いられるよね」という実験パラダイムが存在することかと思います。

例えば抑制能力(特定の情報処理を我慢して、別の情報処理を行う)を測定したかったら、ストループ課題が例に挙がると思います。ストループ課題とは、「あか」「あお」のように、単語の意味とインクの色が一致する刺激(あか)と、一致しない刺激(あお)を呈示し、インクの色を回答させるという実験です(「あか」でも「あお」でも、インクの色は赤)。

あるいは、特定の情報を探し出す速さを測定したかったら、視覚探索課題が用いられると思います。例えば画面上に多くの「L」が散りばめられており、その中に「T」が1つだけ紛れ込んでいるか否かを判断するという実験です。

本書では、このような実験課題を例に挙げながら、Builderの機能を広く解説しています。汎用的な機能も学びつつ、特定の実験課題を作り上げられるので、一石二鳥ですね。

 

しかも、冒頭で書いたような、「作者自身が実験心理学者であるため、痒い所にちゃんと手が届く仕様」の紹介も随所に存在しています。

実験では、刺激を呈示して、それに対する被験者の反応を測定することが基本ですが、それだけすれば十分というわけではありません。ときに、測定精度を高めるための”工夫”を交えることがあります。

例えば、通常は本番の実験の前に練習を行い、被験者に実験手続きを理解していただくことが必要になります。被験者が実験手続きを理解していなかったら、本番中に測定されるデータ(例:反応の速度)は、どのような情報処理を反映しているのか分かりにくくなるからです(例:反応時間が長くても、それは刺激が処理しにくかったのか、反応方法が分からなかったのか、区別できない)。

そこで、例えば練習試行の最後の5試行ぶんだけ抽出し、反応時間や反応の正確性を確認したいというモチベーションが生まれます。そこで極端に反応が遅かったり、正答率が低かったりしなければ、被験者が実験手続きを理解したと推測することができます(もちろん、これだけで十分という意味ではありませんが)。

じゃあPsychoPyでどう実装するのか。ちゃんと実例が紹介されているんですね、これが。

このように、基本的な機能の紹介にとどまらず、「実践的テクニック」も随所に盛り込まれているのが、素晴らしい点だと思います。

 

3. 実験心理学の教科書

さて、僕が何より感動したのが、この点です。

ここまで、「PsychoPyを使えば簡単に実験課題が作れるよ! 実例も載ってるよ!」と、”楽ができる”ことを推してきました。しかし一般的に、「実験の準備」という手続き自体は、楽ではありません。

実験を実施する前に、丁寧に時間をかけて確認しなければならないこと、調整しなければならないことが、たくさんあります。そのために知らなければならないことが、たくさんあります。

PsychoPyは、「作る」という作業においてユーザーに楽を与えてくれます。しかし、それは諸手続きを軽視してよいことを意味しません。

 

例えば、現在ではPCの液晶ディスプレイを用いて実験刺激の呈示を行うことが多いと思います。一般的には、画面は60Hzで更新されることが多いでしょう(= 1秒間に60回、画面が更新される)。いわゆる、リフレッシュレートというやつです。

画面に、0.2秒だけ刺激を呈示したいとします。これは可能です。1回の更新が1/60秒なのだから、12*1/60 = 0.2であり、12回画面を更新すればよいからです。しかし同様の理屈により、画面に0.22秒だけ正確に刺激を呈示することは困難です。13.2*1/60 = 0.22なので、画面を13.2回更新すればよいわけですが、そんな半端なことはできません。

PsychoPy上で、刺激を0.22秒呈示すると設定することはできます。しかし、それは実際に刺激が0.22秒呈示されていることを意味しません。

というわけで、環境(例:使用するディスプレイ)によって実験手続きに制約が実は存在しているわけです。え...そんなの知らんかった...言うといてや...。安心してください、書いてますよ。

 

そもそも、液晶ディスプレイって実験で使っていいのだろうか。あれ、そういえば昔受けた実験だと、ブラウン管(CRT)モニターを使用していた気がするぞ。そもそも液晶ディスプレイとCRTモニターの違いはどうなっているのだろう? 安心してください、書いてますよ。

 

他にも、気を払わなければならない(かもしれない)ポイントはたくさんあります。刺激の色や輝度を厳密にコントロールしたい場合もあるでしょう。特定の情報を探す速さを測定する視覚探索課題の場合、当たり前ですが、物理的に目立つ刺激は見つけられやすくなります。こういった事情を気にする場合、キャリブレーションやガンマ補正などのキーワードが頭に浮かびます。安心してください、書いてますよ。

 

刺激の呈示ルールはどうすればいいだろう。とりあえずランダムな順序で呈示されるようにしておけばいいかな。でもランダム呈示って本当に万能なのかなあ。安心してください、書いてますよ。

 

被験者が特定の情報を認識できる/できない境界線(閾値)を知りたい。テクニックがあるのかなあ。そういえば階段法とか聞いたことがあるな...。安心してください、書いてますよ。

 

と、このように、実は本書は実験心理学の教科書としても非常に有用です。PsychoPyの作者自身が実験心理学者である強みが、まさにここに表れています。巻末には、三角関数の簡単な紹介も載っていて(刺激を特定の位置に呈示するためには、sinやcosの計算が必要だから)、本当に...痒い所に手が届く...。

 

4. 外部機器との連携

僕自身がこの用途を体験したことがないので、ここはさらっとした紹介になってしまいますが、脳活動関係(fMRIEEG)の測定をする場合や、眼球運動の計測をする場合における、外部機器との連携が求められる発展的な機能も解説されています。これらの測定やデータの解析と相性の良い商用ソフトもありますが、フリーのPsychoPyでも実現できるのは嬉しいところだと思います。

 

結び

ここまでレビューしてきたように、本書は、初心者から熟練者まで、幅広いユーザーが待ち望んでいた「実験心理学の教科書」なのではないかと思います。

PsychoPyの作者自身が執筆した書籍であることによる充実度はもちろんのこと、訳者も全員、実験心理学を専門とし精力的に活躍する研究者であるため、翻訳の精度も高いと思います(まだ隅々まで精読したわけではありませんが、ざっと読んだ限りでは、非常に読みやすいと思いました)。

皆様もぜひ! Enjoy!