PCIbexでEmpty project から実験を作ると newController is not defined と怒られる場合
大学の授業準備の際にPCIbexを使おうとしたところ、 エラーになって非常に困ったので エラーの概要と解決方法、原因の考察のログを残しておきます。 学期期間中かつToDoが鬼のように溜まっているので 推敲なしの書きなぐりですがご容赦ください。
エラーの概要
今回対象とするのは、 PCIbexのEmpty projectから実験を示した場合に起こるエラーの一つです。
ミニマルな再現のためのケースとして、以下のような容認性判断課題 のControllerを作成しています。
なお全体のスクリプトは以下です。
ただ、このスクリプトを実行させてもIbex部分が実行されることはありません。
Ibex部分しかない場合はTrialがないというエラーになりますが、
ある場合はただただスキップされてしまいます。
このエラーを探るため開発者ツールを見てみると、
newController is not defined
というエラーが出ています。
これがエラーの概要です。
解決方法
解決方法はシンプルです。 左下にModulesがあるので、 そこのPennController.jsを機能するバージョンで置き換えます。
機能するファイルとしては、少なくとも2023/10/13の段階では、 以下のURLにある PennController.js が有効に思えます。
https://github.com/PennController/penncontroller/blob/master/releases/2.0/PennController.js
このURLにアクセスすると、以下のような画面に遷移すると思います。 コードを表示しているペインの右上に Raw, Copy, Download を示す ボタンがあるのが見えると思います。 このダウンロードボタンを押すと、機能するバージョンをダウンロードできます。
ダウンロードしたファイルを、 先ほど言及した左下のModulesにアップロードします。 ダウンロードしたファイルをドラッグ・アンド・ドロップしても良いですし、 アップロードボタンから選択しても良いでしょう。 個人的にはブラウザのダウンロードしたファイルを確認する画面を表示させ、 そこから引っ張ってドロップするのが一番簡単に思えます。
さてドロップしたりアップロードすると、 既存のファイルを置き換えても良いかと問われます。 置き換えることが目的なので、Yesを選択しましょう。 これで作業は終わりです。 もし問われない場合は、ファイル名がPennController.jsになっていない 可能性があるので注意しましょう。 ファイル名はPennController.jsでなければなりません。
これで所望の挙動を得られました。
原因の考察
JavaScriptは詳しくないのでわからないのですが、
上手く行くケースと上手く行かないケースのスクリプトを
ざっと眺めてみたところ、_AddElementType("Controller", ...)
という記述の有無に差があることに気づきました。
上手く行かないケースでは、この記述が無いようです。
恐らくですが、これで”Controller”にまつわる 機能を追加しているのでしょう。 時間ができたらよく調べてみます。