1. PsychoPyの準備¶
1.1. PsychoPyってなに?¶
PsychoPyとは、パーソナルコンピューター(PC)を使って心理学実験を行うためのツールです。心理学実験では刺激画像をぴったり0.2秒間提示するとか、刺激音声が提示されてからボタンを押すまでの反応時間を記録するとか、数十種類の刺激を無作為な順番で10回ずつ提示するといった作業が求められることがありますが、こういった作業を手作業で行うのは困難です。PsychoPyを使うと、PCを用いて画像刺激や音声刺激を提示したり、反応時間を計測したり、刺激の提示順序を自動的に制御したりすることができます。
PsychoPyでは、Pythonというプログラミング言語を使ってPCに指示を出します。本来PCに指示を出すには機械語と呼ばれる言語を使わないといけないのですが、機械語は一見ただの数値の羅列で普通の人が読んだり書いたりすることはできません。プログラミング言語は、人間の言語(たいてい英語なのですが)にちょっと似た雰囲気で読み書きできる言語で、インタプリタやコンパイラと呼ばれるソフトウェアを使って機械語に翻訳することができます。プログラミング言語や機械語で書かれたPCへの指示をプログラムと呼びますが、Pythonのプログラムはスクリプトと呼ばれることもあります。スクリプトって何?という疑問へのお答えはちょっと難しい話になるので「1.3.1:コンパイラとインタプリタ、そしてスクリプト 」を参照してください。
本題に戻りまして、PsychoPyはPython用のライブラリをまとめたパッケージです。ライブラリとは、PCにいろいろな指示を出すうえでよく使われる手続きなどをまとめたものです。例えば、皆さんが使っているPCのソフトウェアでは「OK」とか「キャンセル」とか書かれたボタンが表示されて、その上にマウスカーソルを動かしてマウスのボタンをクリックするとボタンに応じた動作が行われるでしょう。この時、ソフトウェアを作る人は「マウスカーソルがボタンの上に乗っているか」、「マウスのボタンは押されているか」、「ボタンが押されたらどのような動作を実行するか」といった事をPCに処理させるプログラムを書かないといけません。しかし、これらの処理はどのようなソフトウェアのボタンでも共通しているので、この共通する動作をまとめて「ボタンに関する処理」という名前で呼び出せるようにしておけば、ソフトウェアのプログラムを書くときに「ボタンに関する処理を行う」と書くだけでまとめられた処理を全てPCに行わせることが出来ます。「ボタンに関する処理」の他にもたくさんの共通機能をまとめたものライブラリであり、ライブラリを用いることによって定番の処理を書くことに煩わされずに効率よく自分のプログラムを書くことが出来るのです。Pythonでは、ライブラリの個々のパーツをモジュールと呼び、モジュールの集合体をパッケージと呼んでいます。ライブラリ、モジュール、パッケージ、と耳慣れない用語が続きますが、とりあえずこれらは同じような意味だと思っておいていただいて問題ないと思います。
PsychoPyは心理学実験で使われる定番の処理、すなわち画面に刺激を描いたり、音声を鳴らしたり、反応時間を記録したりするための処理などをまとめたPythonのパッケージです。Pythonのパッケージですから、利用するためにはPythonのプログラムを書けなければいけません。Python以外の言語でプログラムを書いた経験がある人がPythonに乗り換えるのはそれほど難しくありませんが、プログラムを書いた経験がほとんどない人にはなかなか厳しいハードルです。そこで、PsychoPyにはウィンドウ内に刺激提示や反応計測を行うためのアイコンを並べることによってプログラムを書かずに実験を作成するアプリケーションが用意されています。このアプリケーションをPsychoPy Builderと呼びます。PsychoPy Builderはアイコンを並べて作成した実験をPythonのスクリプトに変換してくれます。自分で書いたPythonのプログラムを実行する場合はPsychoPy Coderと呼ばれるアプリケーションを使用します。以下、PsychoPy Builderのことを単にBuilder、PsychoPy CoderのことをCoderと表記します。
本書では、Builderを使って心理学実験を作成する方法を解説します。非常に複雑な手続きの実験を行うにはCoderを使って直接プログラムを書く必要があるかも知れませんが、工夫をすればさまざまな実験をBuilderで行うことが出来ます。
1.2. PsychoPyをインストールしよう¶
PsychoPyをインストールする方法は複数ありますが、初心者向けで最も簡単なのはStandalone インストーラーを用いる方法です。PsychoPyを動かすには数多くのPythonパッケージが必要で、本来であればPsychoPyをインストールする前にPython本体とそれらのパッケージのインストーラーをすべてweb上からダウンロードするなどして集めてひとつひとつインストールしていかなければいけません。Pythonに慣れていない人にとってこれは大変な作業です。Standaloneインストーラーは、これひとつでPython本体とPsychoPyの動作に必要なパッケージをまとめて一度にインストールしてくれるという優れものです。StandaloneインストーラーはGitHubというwebサイトでダウンロードすることができます。URLは以下の通りです。
図1.2 はダウンロードページを開いた様子です。たくさんのファイルが並んでいますが、StandalonePsychoPyという名前のファイルがStandaloneインストーラーです。後に続く数値(例えば3.0.3)がバージョンを示しています。さらに続いてwin32とあるのがWindows版、OSXとあるのがMacOS X版です。Windows版にはPY2とついているものがありますが、これはPythonのバージョンを示すものです。本文書ではPY2がついていない方(図1.2 ではStandalonePsychoPy3-3.0.3-win32.exe)を使用します。Pythonのバージョンについての詳細は「1.3.2:Python2, Python3とPsychoPy 」を参照してください。
PsychoPyのバージョンについては、基本的には新しいものをダウンロードすればいいのですが、最新バージョンはしばしば未解決のバグが含まれていますので判断が難しいところです。大学の実験室などですでにPsychoPyが使われている場合は、とりあえずそれと同じバージョンにしておくのもよい選択でしょう。
Windowsでは、ダウンロードしたファイルをダブルクリックするとインストーラーを起動することができます。インストールには管理者の権限が必要ですので注意してください。Windowsの保護機能によって 図1.3 のような警告が出ることがありますが、「詳細情報」をクリックすると「実行」ボタンが出現して実行することが出来るようになります。
インストールが無事に終了したら、スタート画面を表示してみましょう。PsychoPy3という項目が出来ているはずです(図1.4 )。このアイコンをクリックするとPsychoPyが起動します。
MacOS Xの方は、ダウンロードしたdmgファイルを開くとディスクイメージが開きますので、PsychoPyのアイコンをアプリケーションフォルダにドラッグ&ドロップしてください。これでインストールは終了です。Ubuntuを使用している方はパッケージを利用してインストールできます。詳しくは「1.3.3:LinuxでPsychoPyを使う 」をご覧ください。PsychoPyのパッケージが用意されていないLinux系OSを利用している方や、すでにWindows上でpython.org版のPythonを利用している等の理由でWindowsのStandalone版PsychoPyを使いたくない方は「1.3.4:Standaloneインストーラーを使用しないインストール(上級) 」を参照してください。
さて、PsychoPyを実行すると、図1.5 に示す二つのウィンドウが画面に出現します。図1.5 左のように、ウィンドウ内が三分割されていて右側にアイコンが表示されているウィンドウがBuilderです。もう一方のウィンドウ内が二分割されているウィンドウがCoderです。本書では主にBuilderを使用します。
Builderの画面を閉じてしまったりしてCoderだけしか表示されていない状態になった場合は、Coderウィンドウ上部のメニューの「ビュー」から「Builderを開く」を選択するとBuilderを開くことが出来ます。逆にBuilderからCoderを開きたい場合にはBuilderウィンドウのメニューの「ビュー」から「Coderを開く」を選択します(図1.6 )。
使用しているパソコンが日本語環境のものであれば、メニューなどは自動的に日本語で表示されますが、万一英語で表示されてしまう場合には、ロケールを設定する必要があります。「1.3.5:ロケールの変更 」を見て設定してください。日本語環境のパソコンを使用しているけどあえて英語でメニューなどを表示させたいという場合にもロケールの設定は有効です。
インストールしているPsychoPyより新しいバージョンのPsychoPyが公開されると、PsychoPyを起動してしばらくした後に、図1.7 のようにアップデート通知のダイアログが表示されます。アップデートを行うと作成した実験が実行できなくなったり動作が変わったりすることがありますので、不用意にアップデートしないことをお勧めします。アップデートによる変更が小さい場合(図の左のダイアログ)は、「このバージョンをスキップする」というボタンを押すことによってさらに新しいバージョンが公開されるまで通知ダイアログを表示させないようにすることが出来ます。
アップデートの内容を確認して、アップデートを行うことに決めた場合は、インストール済みのファイルを変更できる権限を持つユーザーでPsychoPyを起動する必要があります。詳しくは「1.3.6:PsychoPyのバージョンアップ 」をご覧ください。
従来のバージョンのPsychoPyでは、初めて起動した時に、使用中のPCの性能を確認する「設定ウィザード」というものが自動的に実行されたのですが、一部のPCで設定ウィザードの実行がうまくいかないためにPsychoPyが強制的に終了されてしまうという問題が生じたため、現在のバージョン(執筆時点で3.0.3)では実行されなくなってしまいました。設定ウィザードは実行しなくても問題ないのですが、自分のPCの性能が十分か確認したい場合は代わりの「ベンチマークウィザード」というものを実行することが出来ます。詳細については「1.3.7:ベンチマークウィザードによるPC性能のチェック 」をご覧ください。
さて、これでBuilderが使用できる状態になりました。さっそく解説を始めたいところですが、その前に二つ確認してください。まず、皆さんがBuilderを使って実験を作成するPCにはMicrosoft Excel (以下Excel)がインストールされていますか? BuilderではExcel 2007以降でサポートされたxlsx形式のExcelファイルを利用して、実験条件の設定を簡単に行うことが出来ます。このテキストでも 第3章 以降でExcelを利用します。
Excelを持っていない場合は、フリーソフトウェアのLibreOffice Calcを利用することも出来ます。LibreOfficeは以下のURLでダウンロードすることが出来ます。
日本語版のwebページをブラウザで開いた様子を 図1.8 に示します。「LibreOfficeをダウンロード」をクリックしてダウンロードページへ移動し、メインインストールパッケージとヘルプパッケージをダウンロードします。ダウンロードが終了したらメインインストールパッケージ、ヘルプパッケージの順にダウンロードしたインストーラーをダブルクリックしてインストールを済ませてください。LibreOffice CalcはExcelと比べてメニューやツールバーのレイアウトが異なるほか、機能面でもいろいろな違いがありますが、本書で解説している用途の範囲では十分にExcelの代わりとして使えます。
Windowsユーザーの方は、もう一つの確認していただくポイントがあります。Excelのファイルをデスクトップに新規作成してみてください。Excelがインストールされていない場合はテキストドキュメントなどでも構いません。ファイル名の最後に.xlsx(テキストドキュメントなら.txt)という文字列が表示されているでしょうか、それとも表示されていないでしょうか(図1.9)。このファイル名の最後についている「ピリオド+英数文字」を拡張子と呼びます。拡張子はファイル名の一部で、ファイルの内容を示す記号として用いられます。Windowsは拡張子に基づいてファイルを編集するアプリケーションを決定するため、拡張子をうっかり変更してしまうとどのアプリケーションで編集すればいいのかわからなくなってしまいます。このようなトラブルを防ぐために、Windowsの標準設定では拡張子を表示されないようになっています。ところが、拡張子が表示されていないと次の章からの解説が非常にわかりにくくなってしまいますので、次の章へ進む前に拡張子が表示されるように設定しておいてください。Windows10の場合は、エクスプローラーのウィンドウの上部の「表示」タブをクリックすると「ファイル名拡張子」という項目がありますので、そこにチェックをつけてください
以上の作業が終了したら、次の章へ進んで実際にBuilderを使ってみましょう。
- チェックリスト
PsychoPyを起動できる。
CoderのウィンドウからBuilderのウィンドウを開くことが出来る。
BuilderのウィンドウからCoderのウィンドウを開くことが出来る。
ExcelまたはLibreOffice Calcのどちらかを起動できる。
ファイルの拡張子を表示できる。
1.3. この章のトピックス¶
1.3.1. コンパイラとインタプリタ、そしてスクリプト¶
プログラミング言語で書かれたプログラムを実行する際に、毎回プログラミング言語を機械語に翻訳しながら実行する方法と、事前に機械語に翻訳したプログラムを作成しておいて、実行時には翻訳済みのプログラムを実行する方法があります。前者の毎回翻訳を行う翻訳プログラムをインタプリタと呼び、後者の事前に翻訳済みプログラムを作成する翻訳プログラムをコンパイラと呼びます。
インタプリタの利点は、プログラムを書いたら直ちにPCに実行させることが出来る点です。少し書いては書き直すといった試行錯誤をする時にはとても楽です。その代り、実行する度にPCは翻訳作業を行いますので、実行速度がやや遅いという欠点があります。コンパイラは逆に、プログラムを書いたらコンパイラを使って翻訳する作業を毎回行う必要があります。また、人間が書いたプログラムのファイルの他に翻訳後のプログラムのファイルが出来るのでファイルの整理が面倒です。その代り、実行する時にはすでに翻訳済みなので高速に実行することが出来ます。
多くのプログラミング言語では、インタプリタとコンパイラのどちらの方法が用いられるかが決まっています。例えばC言語という言語ではコンパイラを使って事前に翻訳済みプログラムを作成することがほとんどです。一方、Pythonは一般にインタプリタを使って実行します。
インタプリタを使う言語のように、人間が書いたプログラムを(コンパイルなどの作業なしに)直接実行できる言語をスクリプト言語と呼ぶことがあります。そして、スクリプト言語で書かれたプログラムをスクリプトと呼びます。この意味ではPythonはスクリプト言語であり、Pythonのプログラムはスクリプトです。
1.3.2. Python2, Python3とPsychoPy¶
Pythonは1994年にバージョン1が公開されて以来、数々のバージョンアップを経てきました。現在の最新バージョンは3(Python3)で、バージョン2(Python2)以前とは後方互換性がありません。「後方互換性がない」とは、Python2で書かれたプログラムのうち、Python3では実行することができないものがあるという意味です。このため、Python3が発表された時に利用者のみんなが直ちにPython3に切り替えることが出来ず、何年もかけてプログラムがPython3で動くように更新する作業が行われてきました。PsychoPyは2017年ごろから本格的にPython3に対応するための更新が始まり、2018年に発表されたバージョン1.90.0で正式にPython2とPython3の両方対応しました。
Python2と3には完全な互換性がないので、PsychoPyを使用するときはPython2と3のどちらを利用するかを選ぶ必要があります。今後、Python2はメンテナンスされなくなりますので、将来的なことを考えるとPython3を選ぶべきだと思われます。一方、実験室で使用している計測機器の中には、Python2でなければ利用できないものがあるかも知れません。そういう場合はPython2を選択することになるでしょう。
なお、互換性がないポイントに配慮すれば、Python2と3のどちらでも動作する実験を作ることは可能です。本文書ではPython3を前提として解説し、Python2で使用する際に注意が必要な点は随時補足することにします。
1.3.3. LinuxでPsychoPyを使う¶
LinuxでPsychoPyを使うことを検討している方向けの発展的な話題です。使用しているLinuxのディストリビューションがDebianやUbuntuであれば、PsychoPyのパッケージが用意されているので、通常のパッケージと同じ手順でインストールすることが出来ます。例えばaptコマンドを使用する場合は、sudoを利用できるユーザーでログインして端末から以下のように入力します。
sudo apt-get install psychopy
PsychoPyのパッケージが用意されていないディストリビューションで利用する場合は、「1.3.4:Standaloneインストーラーを使用しないインストール(上級) 」で述べる方法でPythonのパッケージとしてインストールすることが出来ます。
1.3.4. Standaloneインストーラーを使用しないインストール(上級)¶
すでにPythonを利用している人向けの発展的な話題です。Standaloneインストーラーはとても便利なのですが、Pythonの実行環境を丸ごとインストールするので、Pythonをインストール済みのPCにStandaloneインストーラーでPsychoPyをインストールするとPythonの実行環境がPCの中に二重に存在することになってしまいます。このような事態を避けたい場合は、インストール済みのPythonへパッケージとしてPsychoPyを導入することも出来ます。
例えばパッケージの管理にpipを使用しているのであれば、以下のコマンドを実行すればPsychoPyをパッケージとしてインストールすることが出来ます。
pip install psychopy
ただし、実行に必要なパッケージが一部自動的にはインストールされませんので、PsychoPy公式ページのDependency(下記URL)を確認しながら足りないパッケージをひとつひとつインストールしていく必要があります。
必須パッケージのリストは随時更新されます。2015年9月の時点では以下のパッケージが挙げられています。
- 共通
Python本体(2.6または2.7), avbin, setuptools, numpy, scipy, pyglet (1.1.4), wxpython (2.8), PIL (Python Imaging Library), matplotlib, lxml, openpyxl, pyo
- Windows
pywin32, winioport, inpout32, inpoutx64
- Linux
pyparallel
PsychoPyの機能をすべて利用するためにはここに挙げられていないパッケージも必要であり、実行時のエラーメッセージを確認しながらパッケージを導入するなどしなければいけません。
1.3.5. ロケールの変更¶
Builderのメニュー等の表示に使用される言語を変更したい場合は、ロケールを設定してください。CoderでもBuilderでも、ウィンドウの上部に 図1.10 に示す工具のアイコンのボタンがあります。これをクリックするとPsychoPyの設定ダイアログが開きます。「アプリケーション」というタブに「ロケール」という項目があります。
初期状態ではロケールは空白となっています。この場合、PsychoPyは使用中のパソコンの言語設定を利用して表示に用いる言語を決定しようとします。PsychoPyによって選ばれた言語と異なる言語で表示させたい場合は、ロケールをクリックして表示される言語の一覧から希望のものを選んでください。
1.3.6. PsychoPyのバージョンアップ¶
本文中で述べたとおり、PsychoPyの新しいバージョンが公開されると起動時にアップデート通知ダイアログ( 図1.11 )が表示されます。このダイアログで「はい」ボタンをクリックすると、図1.11 のダイアログが表示されます。「自動更新」を選択すると、PsychoPyはインターネット上から最新バージョンを自動的にダウンロードしてアップデートを試みます。しかし、筆者の経験上、「自動更新」は失敗することがあるので次の「以下のZipファイルを使用」を利用することをお勧めします。「以下のZipファイルを使用」では、ユーザーが自分でPsychoPyの配布サイトから最新版のzipファイルをダウンロードしてアップデートを行います。Standaloneインストーラーではなく、拡張子がzipのアップデートを選択するのがポイントです。Browseボタンを押してダウンロードしたzipファイルを選択すると、アップデートが行われます。古いバージョンのzipファイルをダウンロードして利用することによって、以前のバージョンに戻すことも可能です。ただし、バージョン間でアップデート不能な大きな変更がなかった場合に限ります。
どちらの方法でアップデートを行うにせよ、注意すべき点がひとつあります。WindowsでStandaloneインストーラーを使った場合や、Ubuntuのパッケージを使ってインストールした場合は、管理者の権限があるユーザーでなければアップデートを行えません。Windowsの場合はPsychoPyのアイコンを右クリックして「管理者として実行」してPsychoPyを起動してください。Ubuntuの場合はターミナルを起動してsudo psychopyと入力すると管理者の権限でPsychoPyを起動できます。
図1.7 右に示したダイアログが表示された場合は、この方法でのアップデートが困難なほど大きな変更が行われます。多くの場合、PsychoPy以外のパッケージもバージョンアップが必要だったり、さらに追加のパッケージが必要だったりしますので、配布サイトへアクセスしてStandalone版インストーラーをダウンロードしてインストールするのがお勧めです。
1.3.7. ベンチマークウィザードによるPC性能のチェック¶
BuilderまたはCoderのメニューの「ツール」にある「ベンチマークウィザード」(図1.12 左上)を実行すると、使用中のPCの性能を確認するためのテストプログラムが実行されます。ベンチマークウィザードの実行はPsychoPyを使うにあたって必須ではありませんが、本番の実験を実行するPCでは一度は実行しておいて問題がないことを確かめておきたいところです。
「ツール」の「ベンチマークウィザード」を選択すると、20-30秒ほど時間がかかるが実行してもよいかという確認のダイアログが表示されます。OKをクリックすると、PCの性能を確認するために画面上に様々なパターンが描かれますので、しばらく なにも操作せずに 待ってください。余計な操作をすると正確な結果が得られない可能性があります。終了すると 図1.12 左下のように「全結果を確認するにはOKをクリックします」というダイアログが表示されるので、OKをクリックしてください。ブラウザが起動して、図1.12 右のように結果が表示されます。この例ではDropBoxが動作していると警告されているほか、テスト中に描画タイミングが(標準偏差で)1.5ミリ秒程度ばらついていたことや、スピーカーの出力に0.2秒ほど要したなどが指摘されています。
これらの指摘の意味がわかる人は各自で判断していただければよいと思いますが、意味が分からない人はこのような警告が表示されると不安になると思います。一般にどのくらいの値であれば問題ないという基準を示すのは難しいのですが、多くの実験では1.5ミリ秒程度の描画タイミングのばらつきは問題にならないはずです。スピーカーの出力が0.2秒遅れるのは、視覚刺激と聴覚刺激のずれが問題になる実験をしている人にとってはまずいですが、聴覚刺激を使わない人には問題にならないでしょう。「どのような実験をするか具体的な計画があるわけではないけど、とりあえずPsychoPy Builderの使い方を学んでみたい」という人は、あまり警告を気にせず使ってみるのが良いと思います。具体的な実験計画が出来てきたら、先行研究の手続きや結果をよく読んで、どの程度の精度が必要なのか、自分が使っているPCはその精度を達成できるのかを判断しましょう。