PythonとKivyを使った実験プログラム開発その1(シリーズになる予感 ^^)


51MwqsE6OAL._SX342_BO1,204,203,200_.jpg
 法政心理では卒論や修論の実験用にSuperLabのライセンスを購入し,実験実習のカリキュラムにも組み込んでいます。コード書かなくてもいいし,慣れていて,刺激を呈示して再認させるような簡単な実験なら,ものの1時間もあれば完成させられるところがメリットです。

 ただ,けっこう高価なので,ここ1-2年,無料のPsychoPy Builder(Peirce et al., 2019)に切り替えられないかどうか検討を重ねてきました。PsychoPyがちょうどver2からver3への大幅リニューアルを迎えていて,テストはver2で実施していました。PsychoPy Builderのver2については,愛媛大学の十河先生が日本語のマニュアルをwebで公開して下さっていて(PsychoPy Builderで作る心理学実験),Coderについては解説書も出版されています(十河, 2017)。ぐぐるとわかりますが,他にもこれを使っている心理学研究室も多く,日本語の情報は豊富です。無料なので,学生が自分のPCにインストールして使えるところも大きなメリットです。今回,この記事を書くのにあらためてアクセスしたら,十河先生のマニュアルがv3に対応していました(素晴らしい!)。

 ver2に関しては,結論として,シンプルな実験であれば,SuperLabと同等に使えるし,拡張性はむしろPsychoPyに分がある,でも安定性としてはSuperLabが勝るということになりました。

 自分もPsychoPyを使っていくつか実験プログラムを書きました。音声ファイル,画像ファイルなどを使い,コードもけっこう書いていくと,原因を特定しにくいエラーが生じることがあります。その多くは,PsychoPyが使うPygameなどのモジュールのバージョンやOSとそのバージョンの組合せに起因していると考えられるのですが,原因を特定したとしても解決策がなかったり,そもそも原因を特定することが難しかったり,どうやらモジュール以外の問題もありそうだったりしました。PsychoPy Builder は基本的にコードレスで部品をグラフィカルに組み立て,それをpythonのコードに書き直してくれる仕組みです。でも,そのコーディングのどこかにバグがあると,結局,pythonのコードを読まなくてはならず,かつ,それは自分で書いたコードではないので,デバックはかなり困難となるのです。

 幸いにも予算が確保できたため,心理学科ではSuperLabを継続して使うことになりました。

 ただ,SuperLabでは実施できる実験に限界があります。行動分析学でいうと,単純な見本合わせ訓練くらいなら可能ですが,強化スケジュールを組み込んだり,セッション内で条件移行しようとすると,もうお手上げです。ちなみに,行動分析学の実験はVisualBasicで書く人も多いです。学会から教科書もでています(中鹿ら, 2011)。ただ,VisualBasicは有料で,かつ(私の嫌いな)MS社のやっていることがよくわからず,現時点でどういうライセンス形態がどのように使えるのか不明です。

 というわけで,自分や自分のゼミ生の実験に使えるシステムを引き続き探索してきました。個人的には,大昔のHyperCard,その次のRealBasicを継承しているxojoに気持ちが動いていました。WindowsでもMacでも使え,iOSやhtml5にも展開できます。コンパイルしなければ無料だし(そうコンパイルできるのです),企業が開発しているのでお金さえ払えば丁寧なサポートも受けられます(実際,1年間契約してみましたがサポートは親切丁寧で確実でした)。いくつかプログラムも組んでみましたが,動作も安定しています。日本語マニュアルもあります。

 でも,いかんせんユーザーが少なすぎで,ぐぐっても一般ユーザーによる情報提供がほとんど見つかりません。いずれ書きますが,自分がプログラミングを勉強していた数十年前とはプログラミング事情が様変わりしていて,今では学習材料はほぼネットで入手可能だし,入手すべきです。また,xojoの言語体系はかなり特殊で,現在主流となっている,python,ruby,Swiftなどとは,随分と距離があります。学生さんにとってみると,ここに学習リソースを投入しても,他の言語を学習することになったさいには,転移による利が見込めそうにないです。

 本学科でPsychoPyの講習会を開催して下さった大正大学の井関先生が,ちょっと複雑な実験になったら,無理にPsychoPy Builder を使わず,Coderを使って書いちゃった方が結局楽ですよとおっしゃっていたこともあり,コードを書くことにしました。

 かつ,PsychoPy v2の開発が終わり,v3の安定まではしばらくかかりそうで,また,安定するといっても,結局は,上記と同じ問題を抱えそうだったので,PsychoPy Coderには頼らず,pythonでそのままコードを書くことにしました。

 そこで,色々物色していて見つけたのが,Kivyというモジュールです。主に画面レイアウトに重宝します。マニュアルの大部分が有志のユーザーによって翻訳されていて(Kivyマニュアル),小樽商科大学の原口先生がわかりやすい解説書(「Kivyプログラミング--Pythonで作るマルチタッチアプリ--」)を出しておられるだけではなく,ユーザーによる情報も比較的豊富です(「比較的」というのはPsychoPyやxojoに比べてです。昨今の標準からするとKivyの日本語情報は「少ない」と言われています)。

 画面の定義にはKivyを使い,制御の本体はpythonで書くことで,簡単な実験制御なら(学習コストを無視すれば)わりとすぐに書けますし,複雑なプログラムでも問題なく書けます。なにしろ,すべて無料です。

 「学習コストを無視すれば」と書きましたが,言語としてpythonを学んでおいて不利になることはないと思います。モダンな言語の一つですし,ユーザー数が多く,情報も豊富で,使えるモジュールも多いです。流行の機械学習なんかも,使おうと思えばすぐに使えてしまいます。

 導入の手前で終わってしまいました。今日はここまで。

引用文献

  • 中鹿直樹・桑原正修・佐伯大輔 (2011). はじめての行動分析学実験--Visual Basicでまなぶ実験プログラミング-- ナカニシヤ出版
  • Peirce, J. W., Gray, J. R., Simpson, S., MacAskill, M. R., Höchenberger, R., Sogo, H., Kastman, E., Lindeløv, J. (2019). PsychoPy2: experiments in behavior made easy. Behavior Research Methods. 10.3758/s13428-018-01193-y
  • 十河宏行 (2017). 心理学実験プログラミング--Python/PsychoPyによる実験作成・データ処理-- 朝倉書店

アーカイブ

法政心理ネット