PythonとKivyを使った実験プログラム開発その2:統合開発環境 PyCharm とネットによるプログラミング行動の強化随伴性

スクリーンショット 2019-05-12 14.34.24.jpg

 PythonとKivyで実験制御プログラムを開発していくときに便利なのがIDE(Integrated Development Environment)と呼ばれる統合開発環境システムです。
 開発するプロジェクトごとにプログラミング言語やそのバージョン,組み込むモジュールなどを設定した仮想環境を構築でき,言語ごとのコーディングルール(予約語や字下げなど)も表示に反映されるエディターも完備されているパッケージです。
 「python(もしくはお使いになるプログラミング言語) IDE」で検索すれば無料,有料版ともに色々なシステムの情報が得られることでしょう。自分はPyCharmのCommunity Editionを使っています。こんな優れものが無料で使えるということに驚きますし,cを秀丸で書いていた自分にとっては時代の流れを感じます。
 RをRStudioで使うと10倍楽になるとすれば,PythonのプログラムをIDEありで書くと100倍楽になる感じです。
 IDEをインストールし,まだインストールしていなければPythonとKivyをインストールすれば,プログラム開発準備が整います。
 そしてここからさらに時代の流れを感じることになります。学習方法に関してです。昔は,プログラミング言語の教科書や解説書が必須でした。オームやオライリーにはほんとうにお世話になったものです。
 今回,PythonとKivyと学ぶにあたっても,Amazonで教科書を大人買いしたのですが,結局,プログラミングを始めると,本にあたることはほとんどありませんでした。なぜなら,ほとんどすべての情報はネットのどこかにあるからです。たとえば「python 文字列 削除」で検索すれば,コーディングに必要なルールや,何よりサンプルが大量に見つかります。それをコピペして試し,期待通りに動作すれば,自分の用途にあわせて使うし,期待通りに動かなければ他のサンプルを試したり,コードの一部を変更してみます。動くようになるまで繰り返していくうちに,文法やモジュールに関するルールも学べ,コーディング(プログラミング行動)もシェイピングされていきます。
 ちなみに,昨年(2018年)のゼミ合宿では,R, RStudio, tidyr, ggplotを使ってビッグデータを解析する実習をしたのですが,宿のネット環境が悪く,課題は遅々として進みませんでした(学生さんたちには申し訳なかったです)。
 そうです。時代の大きな流れの一つは,今やプログラミングはネット上の情報を検索し,活用しながら進める行動だということなのです。
 そうした学習を支援するシステムもあります。たとえばQiitaは「プログラミングに関する知識を記録・共有するためのサービス」で,ユーザーが様々な言語やモジュール,システムなどに関する情報を提供し,公開しています。

 プログラミング教育が来年から小学校で必修化されます。教材や指導方法などに関し,すでに色々な試みが始まっているようですが,的はずれな議論が多いと感じています。とにかく,少なくとも一斉授業や講義などで教えようとしないで欲しいと思います。
 プログラミングは言語行動です。基本的にはコンピュータに対して命令するマンドとマンドを詳細に作用させるオートクリティックから成り立ちます。英語など,第二言語を習得しようとしたら,その言語が話されている場所で暮らすのが手っ取り早いわけですが,これはその言語で話す行動を強化する言語共同体があり,随伴性があるからです。この点,プログラミングは言語共同体がすでにそこに存在します。コンピュータに対して正しく命令すればその通りに動きますが,間違えれば動きません。しかも,上述のように,正しい命令の見本(モデリング)はいくらでも手に入ります。言い換えれば,プログラミングは留学せずに第二言語を学べるようなものなのです。
 同じことは実は他の教科にも言えるのですが,たとえば,数学における言語行動はタクトもしくはイントラバーバルが多く,強化するには教育的強化,すなわち教え手による付加的随伴性が必要です。化学や物理学などの自然科学は,あるいは一部の社会科学は,実験や調査という方法論を学べば,タクトやイントラバーバルが仮説とデータとの一致といった事実で強化されるようになるので(つまりこれが研究行動),教え手が不在でも学習が進むようになるのですが,そこに至るまでの下位行動の教授にはやはり教え手が必要です。
 これに対し,プログラミングはコンピュータが強化随伴性を提供してくれます。それも,学び手の個々の行動に応じ,即時に提供してくれます。だから,他の教科と同じような意味での教え手は必要ないのです。母語の学習に専門の教師が必要ないのと同じです。留学して外国語環境にさらされてしまえば,外国語教師は必要ないのと同じです。

 プログラミングは,まずプログラミングの言語(文法など)を完全に習得してからでないと学べないというのも間違った思い込みではないかと考えています。日本語を母語とする我々も,日本語の文法を学んでから話し始めたわけではありません。せっかく海外に留学したのに,ネイティブと話をする自信がないからといって図書館やカフェで英文法の本を読み続けることはナンセンスですよね。それに,英会話なら,発音や語を間違えたら,レストランで注文を間違えたり,友だちを怒らせたりするといったリスクもありますが,プログラミングにはそれもありません。間違えてもエラーがでるくらいです。昔は無限ループやメモリ浸食でPCがフリーズすることもありましたが,昨今のシステムは頑健ですから,そんな心配もいりません。完全に安全な空間でいくらでも誤反応でき,正反応率を高める材料があちこちにあるのです。
 長くなりましたが,まとめます。
 PythonとKivyを使って実験プログラムを開発してみようと思ったら,

  1. まず, PyCharm などのIDEをインストールし,開発環境を整えましょう。
  2. プログラミングはまったくの初体験なら,初心者向けの本をざっと読みましょう(でも,それは,書いてあることを「理解」するためではなく,今後,ネット検索するときのキーワードを知るためと割り切りましょう)。たぶん,いくらわかりやすい教科書でも,読むだけでは本当の意味で"わかる"ようにはならないので。
  3. なんでもいいので,簡単なプログラム(動いたら楽しそうなもの,コードが数行の短いもの)をネットで探し,それをそのまま自分の環境で実行してみましょう。
  4. 動いたら,おめでとうございます! 他のサンプルで遊んでみましょう。
  5. 動かなかったら,コードのどこかをいじって試してみてもいいし,それはさっさとあきらめて他のサンプルを試してみてもいいでしょう。
  6. 自分の環境で動くサンプルをみつけたら,そのコードのどこかをいじってカスタマイズしてみましょう(たとえば,色を変えたり,大きさを変えたり,位置を変えたりなど)。このとき,一度にどこか一箇所だけを変えるようにしましょう。複数を一度に変えると動かなくなったとき,どこに問題があったのかわかりにくくなるからです(シングルケースデザイン法の考え方と同じですね)。
  7. エラーがでたら,そのエラーでgoogle検索してみましょう。あなたがぶちあたる問題のほとんどは他の誰かもぶちあたり,そして誰かが解決策を見つけているものです。

 自分の開発環境を動画で公開しています。参考までに。

アーカイブ

法政心理ネット