Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@snishym

jsPsychによる心理学実験作成チュートリアルまとめ

2021/03/15 補足

2021/03/15 時点での jspsych の最新バージョンは v6.3.0 です。本チュートリアルのコードはv6.1.0が最新だった 2020 年 4 月頃に作成し,それから更新しておりません。チュートリアル内で紹介されているコードの大体は互換性があります(=バージョンに関係なくそのまま利用できる)が,現在のところ,次の 3 点については互換性がないことを把握しております(コード自体は未修正)。

  1. v6.3.0では,survey-textなどsurvey-系のプラグインで取得したデータを取り出す際に,JSON.parseを使う必要がなくなった(第 6 回に関連)。
  2. v6.3.0では,ある試行で得られた反応を取り出す際に,どのプラグインでもresponseで参照できるようになった(いろんな回に関連)。
  3. v6.3.0では,関数内でjsPsych.timelineVariables()を使用する時に,引数にtrueと指定する必要がなくなった(特に第 4 回)。

2 に関して,例えば,チュートリアルの中で一番よく使っているhtml-keyboard-responseで得られたキー反応を参照するために,v6.2.0までは変数名.key_pressで取得していましたが,v6.3.0(以降)では変数名.responseに変わります。

また時間ができたら対応したいと思います。ひとまずアナウンスだけになりますが,ご了承ください。jsPsych の更新履歴は公式 github のリリース情報から確認できます。

2020/12 頃 補足

このチュートリアルのつぎのステップとして読むといいかもしれない記事を zenn というサイトで公開しています(zenn の マイページ)。今後は zenn で記事を公開していくつもりなので,そちらもたまに見に来ていただけると幸いです。

はじめに

本シリーズは,サイモン課題の作成を通して,jsPsychで心理学実験を行うために最低限必要なスキルを身につけることを目標としています。

具体的には,以下の4つです。

  1. 参加者情報の入力(第6回
  2. 課題の教示(第7回
  3. 刺激のランダム提示(第1回第2回第3回第4回
  4. データの保存(第5回

想定しているターゲットは,どの言語のプログラミング経験もない人です。javascript(や,HTML, css)の基本を知っている必要はありません。シリーズでは, jsPsychで心理学実験を作成するのに必要なテクニックをjavascriptの基本的な構文も織り交ぜながら順番に説明していきます。もちろん,javascriptは知っているがjsPsychはこれからという人にも有用な資料になっているはずです。

なお,このチュートリアルは私が以前作成した「PsychoPy Coderによる心理学実験作成チュートリアル」をjsPsych用に書き換えたものです。

jsPsychとは

jsPsychは,javascriptというプログラミング言語で書かれた心理学実験・調査作成ツール(ライブラリ・プラグイン)です。そして,javascriptはGoogle ChromeやFirefox, Safariといったウェブブラウザ上で動作するプログラミング言語です。したがって,jsPsychもウェブブラウザ上で動作します。つまり,ウェブブラウザ上で心理学実験を動作させることができます。ウェブブラウザは,インターネットを介して世界の誰かの記事・ブログを読むためのものです。それらウェブページと同様に,jsPsychで作成した実験をウェブ上にアップロードしておけば,世界のどこかの誰かさんがインターネットを介して自分の作成した心理学実験に参加することができます。つまり,「オンライン実験」を実施することができます。もちろん,jsPsychで作成した実験をPCにダウンロードしておけば,インターネットがなくてもそのPC上で実験を動作させることができるので,jsPsychでも実験室実験を実施することができます。

オンライン実験作成がjsPsychの主な特徴になると思うのですが,他にも同様のツールは結構あるようです(Anwyl-Irvineら(2020)のTable 1)。その中でも私がjsPsychを使おうと思った理由は以下の3つです。

  1. 無料で使える1
  2. スクリプトを書いて作成する
  3. 日本語の資料がある

2つ目の点が個人的には結構大事でした。無料で使えて,日本語の資料があるツールとしては,PsychoPy Builderやlab.jsが挙げられます。これらのツールはjsPsychと違って,基本的にGUIでマウスでポチポチ実験を作成することができるツールです。GUIのツールは、最初の垣根は低いのですが、工夫し始めると一気に手順がややこしくなったり、コードを書いたりする必要が出てきたりするという印象があります。コードを書くとなった場合にはツールのベースにあるプログラミング言語(PsychoPyであればpython, lab.jsであればjavascript)について結局勉強する必要があります。

だったら,初めからコードでの実験の作り方を覚えたほうが長期的にはいいんじゃないかと思います。コーディングは最初の垣根がGUIより高いかもしれませんが、慣れてしまえば、GUIよりも楽に自由に実験を組めるようになります。その知識は他のプログラミング言語を勉強するときにも応用できるので、その際の学習コストも低くなります。私の場合は,PsychoPyを使ってコードを書いて心理学実験を作ってきたので,jsPsychにはすぐに慣れることができました。

とはいえ,この辺は作成する予定の実験の複雑さに左右されます。GUIツールでも全然事足りる場合はあるので,全く心理実験を作ったことがないという方は,まずはGUIツールでの作成から始めてみるのがいいと思います。

参考資料

本チュートリアルの作成に際し,以下の資料を参考にいたしました。作成者のみなさまには感謝申し上げます。

黒木先生のサイトについては掲載のコードを見る限り,現在のバージョンと互換性がなさそうなので,注意が必要かもしれません。高橋先生のキソジオンラインは,jsPsychの解説資料ではありませんが,jsPsychで作成された心理学実験のコードがたくさんアップされています。jsPsychがある程度読み書きできるようになったら,とても参考になると思います。国里先生のページではRstudioという開発環境上でjsPsychベースの心理実験を作成する方法が紹介されています。Rstudioに馴染みのある方はここから始めてみてもいいかもしれません。小林先生のページにはこれら3つのサイトとは少し種類の違う実験課題のコードが掲載・解説されています。

おわりに

本記事は,本シリーズのまとめページとして概要を説明しました。正直に言うと,サイモン課題は,GUIツールで簡単に作成できる課題です(PsychoPy Builderでの作成lab.jsでの作成)。

それでも,本シリーズが,なにかのきっかけにjsPsychで書きたい・書かないといけないという方のお役に立てれば大変幸いです。


  1. ただし,オンライン実験を実施するためにはアップロードしておくサーバーが必要で,多くの場合,レンタルサーバーを借りることになるので,その実施には謝礼とは別にお金がかかります。 

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
snishym
心理学専攻の大学院生です。記憶の研究をしています。Python, R, JavaScript をよく触ります。最近Goをはじめました。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?