View on GitHub

オンライン音声実験マニュアル

Home

jsPsych でミニマルな実験を作成

知覚実験を行う方法はたくさんあります。実験室で行う実験は、パソコンで実験ソフトを立ち上げ、実験参加者に課題をしてもらうものが多く、整った環境で実験を行えるので良いのですが、昨今のご時世で対面で実施する実験が難しくなりました。オンライン実験を始めたい方もいるかと思いますが、サービスが多種多様でどこを選んだらいいのか迷ってしまいますよね。そこでこのサイトは、無料で実験を作成して、ウェブブラウザーでデータを収集できるjsPsychを紹介します。

jsPsychの紹介

jsPsychは、認知心理学者のJosh de Leeuw氏によって作られたJavaScriptのライブラリーです。JavaScriptはプログラミング言語の一つで、ウェブ関係でよく使われています。jsPsychもこのJavaScriptという言語によって書かれいていて、実験の作成や実行に特化しています。ある言語の複雑な文法がわからなくても、挨拶の慣用表現を覚えておけば簡単な挨拶ができるのと同じように、JavaScriptができなくてもjsPsychの定形表現を応用すれば、実験を作れます。(ただJavaScriptができれば実験の変化型やデバックなども対応できるので、まだJavaScriptに触れたことがない方はjsPsychと一緒に習得することをおすすめします。)

jsPsychを使うには、特別なソフトウェアをインストールする必要はありません。自分の好きなエディタでスクリプトを使っても良いし、すべてウェブページで作っても何も問題なく実験を走らせることができます。

Cognition.runの紹介

上で紹介したjsPsychを使えば、実験の指示や、質問、回答の収集などを効率よく行うことができます。しかし実験を行うにはそれだけではありません。jsPsychで実験のスクリプトを完成したら、それを実験参加者がアクセスできるところ(サーバー)に置く必要があります。自力でサーバーを構築するのは莫大な手間がかかるので、以下では Cognition.run という無料サービスを紹介します[1]。

Cognition.run は、研究者により作られたjsPsychの実験に特化したプラットフォームです。このサイトでタスク(実験)を作って、中にjsPsychのスクリプトを仕込めば、実験ができる状態になります。実験のリンクも自動で生成してくれるうえ、参加者が課題を完成したかどうかや、参加者が入力したデータのダウンロードなどをすべてサイトで確認できるので、とても便利です。なんと言っても無料がうれしいですね[2]!

Cognition.runを使うには、登録が必要です。https://www.cognition.run/ で Create an accountをクリックし、簡単な情報を入れて登録すればアカウントがすぐできます。登録できたら Tasks で自分の実験を管理できます。まず右上の Tasks に入ってみましょう。(注:右上にTasks がないはまずログインしてください。)

まず、New Task をクリックして、実験名(もう作り始めたい場合は minimal-axb を名前としてみてください)を入力するだけでタスクの作成が完了です! タスクに入ったら、Linkと、Design、Data collection、Danger Zone、4つのセッションがあります。以下、それぞれ簡単に紹介します。

Link:こちらはタスクの実行リンクで、実験ができたら参加者に渡すものです。こちらのリンクはタスクの作成とともに生成されたもので、実験の中身が変わっていてもこのリンクは変更されません(Google Formsと同じですね)。

DesignのセッションにはConfiguration、Source code、Informed consent、Collaboratorsがあります。

Configuration では、タスクの名前など基本的な設定を変更することができます。下のAccepting participantのチェックを外すと、参加者が実験のリンクにアクセスできなくなるので、緊急時の対応(参加者にリンクを渡したあとにバグが発見したときの修正など)ができます。また、下の Advanced configurationを開くと、実験の言語(Task language)を選択できます。こちらを調整すると参加者がブラウザーでは指定の文字コードで参加できます。また、便利な機能としてEmail notificationsがあるのですが、チェックを入れたら参加者のデータが入るたびにメールが届くようになります。

Source code は、jsPsychのスクリプトを書く場所です。ここでは外部の画像や音声をアップロードして、実験で使うこともできます。現在、Cognition.runは容量の上限はないようですが、個々のファイルが重すぎたら実験が不安定になる可能性があるので、外部のファイルをアップするときにはサイズにも気をつけましょう。

Cognition.runは前述のようにjsPsychに特化したプラットフォームで、jsPsychのコードだけ書けば動きます(HTMLとjsPsychのライブラリーの読み込みは不要)。また、jsPsychのバージョンを指定することもできます。とても複雑な操作を行う際に、まれにバージョンが変わるとうまく実行できない場合もありますが、このサイトで紹介されるものはすべてのバージョンで動けるものなので、安心してください。

画面の右側はプレビューになっていて、実際に参加者がどう見えているのかを確認できます。スクリプトを修正すると自動で再読み込みするような仕様になっています。こちらの機能も必要に応じてDisable previewでプレビューを閉じることができます。

Informed consent は実験の同意書のことです。ここに同意書の内容などを入れれば、参加者が実験の本体に入る前に同意書が出てきて、「同意して続行」するか「辞退して終了」するいかが選べます。「同意して続行」をクリックしないと実験に参加できません。こちらの画面で出てくるボタンの言語は先程の Task language になるので、もしボタンの言語を変更したければ、先程のConfiguration → Advanced configuration → Task language で調整しましょう。ちなみにInformed consentが空白だと同意画面は出てきません。

Collaborators では共同研究者を追加して一緒に作業することができます。Collaboratorsとして追加できるのは Cognition.run で登録されているメールアドレスのみです。権限は3種類あります。

ミニマルな実験の作成手順

今回の内容を学んだ結果として作成できる実験は https://rqqrtyynpe.cognition.run になります。トライアルは一つしかありませんが、URLにアクセスさせて実験を実施し、回答を取得するという一連の流れは実施できます。以下に実験を作成する手順を共有します。

  1. Tasks / Create new task で適当な名前を付与し(minimal-axbなど)Save(先のステップで作成済みの場合は不要)
  2. Tasks / minimal-axb / から Design > Source code をクリックし、Tasks / minimal-axb / Edit 画面を表示
  3. 実験スクリプトをこちらからコピーし Task Code に貼り付け
  4. 音源ファイル(espo-1.wav, esupo-2.wav, supo-3.wav) をこちら からダウンロードし解凍し、Stimuli にアップロード
  5. jsPsych library version を 6.3.1 に指定
  6. Tasks / minimal-axb / Edit の minimal-axb をクリックしてタスク画面に戻りLinkを取得

これでもう実験の作成は完了です。Linkを共有すれば実験に参加してもらえて、結果はタスク画面の Data collection に溜まっていきます。

試しにURLにアクセスして実験1トライアルを実施し、結果ファイルのcsvを取得してみてください。

以上で最低限の実験が作成できました。ただ、このミニマルな実験にはいろいろな問題があります。例えば、トライアルが増えたらその分のコードを増やさないといけません。また、実験によっては回答があっているか間違っているかのフィードバックもしたいのですが、そのような仕組みも入っていません。

これらの細かい問題は 04_jspsych_intermediateで解決します。その前に、次の 03_jspsych_basic では上のミニマル実験に使われた4つの要素を解説しようと思います。


  1. ちなみに、この Cognition.run がもしサービスを終了した場合(またはインターネットが使えない場合)を備えて、本サイトではオフラインで実行する方法の補足資料も提供します。興味がある方は補足資料をご覧ください。 ↩

  2. Cognition.runは一部有料化になりました。無料版でできることは以下になります。練習(と論文一本程度)には十分かと思いますが、後ほど制限をなくす手法をいくつか紹介します。

    • 4 stored tasks
    • 70 collected runs per task
    • 1MB per stimulus
    • 100 stimuli files per task
    • 0 collaborators per task

    ↩