プログラミング学習とゲームとギャンブル、ドーパミンの関係
本題の前に
この記事は「paiza Advent Calendar 2020」の最終日25日目の記事です。
今回はpaiza株式会社代表の片山がお送りいたします。
24日目の記事は「この日までにイタリア行きたかった - 蒼樹の徒然日記」です。イタリアに留学がコロナのせいで日本からのオンラインイタリア留学になったというのはかわいそすぎる・。
この記事の概要
paizaでは、プログラミングをベースとしたゲームや漫画など、プログラミングエンターテイメントコンテンツをこれまで色々提供してきているのですが、なぜやっているのかについて、ゲームやギャンブル、ドーパミンなどとの関係性も絡めて少し書いてみようと思います。
背景
これらのプログラミングエンターテイメントコンテンツを提供しているのは「ゲームは遊びでありつつ、学びの要素があると昔から感じており、プログラミングの学びにゲーム要素を取り入れてみたらよいのではないか」という発想からです。
自分はゲームが昔から割と好きで、最初に買ってもらったゲームハードは1981年6月(当時6歳)に任天堂から発売されたゲームウォッチのパラシュートです。それ以降もぴゅう太、MSX、ファミリーコンピューター、MSX2、MSX2+、スーパーファミコン、MSX turboR、FM77、PC8801、PC9801、PS、ドリキャス、etc…といった感じに様々なハードでゲームやプログラミングに親しんできました。
そのなかで、ゲームは遊びでありつつ、学びの要素があると感じていました。例えば信長の野望や三国志のゲームで歴史を覚えたり、ドラクエⅢで転職の概念を知ったり、最近で言うとフォートナイトのスクワッドでは仲間と協力することで一人でできないことができるようなることを体感できるなど、ゲームと学びは相性が良いように感じていました。
一方プログラミング学習も、何か自分でコードを書いて実行すると、その瞬間に結果が返ってくるインタラクティブ性や、思った通りにコードが動いた時の万能感はゲーム的な中毒性を持っていると感じていました。
プログラミングゲームを作れないだろうか?
そういった経験から、ゲームの間口の広さと、プログラミングのゲーム性を合わせることでより多くの方に、プログラミングに楽しく触れて、身につけてもらう機会を提供できないだろかと考えるようになりました。
また、すでにITエンジニアとして就業中の方でもコンピューターサイエンスの基礎となる「アルゴリズムはよくわからない」という方結構多いので、そういった方にもゲームを用いてアルゴリズムに楽しく触れる機会を作れないだろうか、と考えていました。
競技プログラミングもゲーム性がある世界ではあるのですが、ガチすぎて初学者や一般のITエンジニアにはハードルが高いという課題があります。ゲームの持つ楽しい雰囲気をまとわせ、徐々にプログラミングの持つゲーム性のほうにシフトしていけるようなものが作れれば、プログラミングに向いている才能の発掘につながったり、多くの方がプログラミングがどのようなものか知れたり、基礎レベルを身につける機会を作れるのではないかと考えました。
ゲームの中毒性とは何なのか?
それらを実現するうえで考えるべきことは、まずゲームのメカニズムを知ること、そしてプログラミングのゲーム性とのバランスをどのようにのように取ると良いか、です。
ゲームの持つ中毒性とは何なのでしょうか? 中毒性とは、言い方を変えると依存性とも言えます。人間は「すぐに気分を良くしてくれるもの」に手を出してしまう依存的習性を持っています。
これはそもそも人間の脳が、即座に手に入る短期的な報酬を求めるように進化してきていることに由来すると考えられます。私たち祖先は高エネルギーの果実をその場でむさぼり食べたり、性的刺激にすぐに反応しなければ生き残ってこれなかったからです。
逆説的にはそういう行動をとった個体が生き残り、繁栄し、その子孫が我々である訳なので、それらの生き残ることに最適だった習性が残っているとも言えます。
そしてそのような行動欲求はドーパミンにより生み出されてるといわれています。
ドーパミンは報酬を探し出そうとする欲望を生み出す
ではドーパミンとは何なのでしょうか?
ドーパミンは神経伝達物質、つまり化学的なメッセンジャーで、快楽の経験に影響を与えるだけでなく、脳内に新たな報酬経路をマッピングする能力を持っているといわれています。
ドーパミンの主たる機能は「欲しい」などの行動欲求・衝動を刺激する事です。私たちのまわりで起こるさまざまな出来事がいいことであれ、いやで危険なことであれ、とにかく自分にとって意味があって、何らかの行動を引き起こすような場合には必ずドーパミンニューロンが活動していると考えられます。
つまり、私たちは周囲の環境に適応し、学習しながら、良いことを求め、危険を回避しという生活するすべを会得していきます。ドーパミンはそのような学習の強化因子として働いているわけです。
また、ドーパミンに誘発された快楽を経験すればするほど、私たちはその経験を繰り返したくなる、とも言われています。
快楽物質のドーパミンやエンドルフィンと依存症の精神病理:快感記憶の固着による依存性
最初の体験やコンタクトによって、ドーパミンが分泌される報酬系の『快感記憶』が形成されて固着すると、(もう一度その快感を味わえる体験をしたいという欲求を自分の意思では制御できない)依存症になってしまうリスクが高まる。
シナプス間隙を挟んだ“情報伝達する神経細胞”と“情報を受容する神経細胞”の間で、情報伝達する回数が一定の閾値を超えると快感記憶が固着してその記憶がずっと残り続けることが、1966年にノルウェーの神経科医テリエ・レモによって発見されている。快感記憶によって長い時間にわたって持続する神経活動の興奮と抑制を、テリエ・レモは『長期増強・長期抑制』といった概念で説明した。
何かに応募すれば、それがどのような結果になるかドキドキワクワクしますよね。この感覚がドーパミンを分泌させます。ワクワクするものを増やせば、ドーパミンもより多く分泌されます
つまりドーパミンは周囲の環境に適応し学習するための神経伝達物質であると同時に、その性質上依存症を引き起こす要因でもあるといえます。いっけん問題が多いようにも感じられますが、学ぼうという意欲にもドーパミンは関係していると考えられます。例えばGoogleの社員はラーニング・モンスターといわれるように、学習に快楽を感じている人たちは自分の周りを見またしても一定量いるように感じます。
学習は新しい知見を得る楽しさや、新しい領域を知ることで既存知識との結びつき新しい発想に到達するスパークするような瞬間があります。学習は一種の快楽性、依存性があるのではないかと感じています。
つまりドーパミンの持つ習性は使い方次第といえるのではないかと思います。
効率的な学習とは何か?
それではドーパミンの持つ特性を生かした効率的な学習するためにはどうするのが良いのでしょうか?
東京大学の発表した論文に次のようなものがあります。
ドーパミンの報酬作用は、行動の直後 0.3秒~2 秒以内の狭い時間枠でのみ、シナプスの結合を強化することが明らかとなった。
イヌに「お手」を新しく教える場合、「お手」ができた時に餌を与えるとイヌはまた「お手」 をして餌をもらおうとする。このように動物が行動を起こした直後に報酬(餌)を与えると、その行動が強化され、繰り返し行動するようになる。
このことは 100 年以上前にソーンダイクやパブロフにより報告された。報酬は行動の直後に与えられると効率的な学習を起こすが、 行動と報酬までの時間が長くなると学習の効率は著しく下がる。また、単に報酬(餌)だけを与えて待っていても「お手」をするようにならない。
このように報酬学習では、行動に対してどのようなタイミング(時間枠)で報酬が与えられるかが学習の効率を決定する。
行動の直前や 5 秒ほど後にドーパミン刺激をしてもシナプス結合強化は見られなかった。さまざまな時間枠でドーパミン刺激を与えたところ、行動後の 0.3 ? 2 秒の間に与えられた時にのみシナプス強化結合が見られ、ドーパミンがシナプス結合を増強する時間枠が世界で初めて明らかになった。
こちらの研究結果をベースに考えてみると、行動したことによる報酬を素早く出すことが学習には効果的といえそうです。これは感覚的も理解しやすいのではないでしょうか。
プログラミングは考え込むより、いろいろ実際に試す人の方が学習速度が速いですが、これはコードを書いて実行をすれば即座に結果が得らるためでしょう。行動の直後に結果が得られ、ドーパミンの報酬作用が強く効くことが影響していると考えられます。
その他参考文献
依存症ビジネス――「廃人」製造社会の真実
https://www.amazon.co.jp/dp/4478022925
「ドーパミン」とは一体どんなものなのでしょうか?
http://www.ninchisho.jp/kind/05-02.html
人類の進化の歴史とギャンブルの関係
行動の直後に結果が得られ場合にドーパミンが出るということはわかりました。それでは具体的にはどういった行動でドーパミンが出るのでしょうか?
食物の匂い、あるいは、単にその”見た目”だけでも、報酬と動機づけに関与する脳の領域である「側坐核」内のドーパミン産生量は増加するといわれています。よだれがこみあげるのもその例といわれています。
薬物研究者のハーヴェイ・ミルクマンとスタンリー・サンダーワースという方が作成した、側空核内におけるドーパミン産生量を増加させる行為リストは次のようなものになるそうです。
①犯罪
②摂食
③ギャンブル
④危険な行為
⑤生殖活動
⑥愛する人をハグすること
つまりこれらが何を意味するかというと、種として、個として生存するための基本的な活動を促すためにドーパミンが出て人を行動させている、と考えられます。
時には危険を冒しても、狩りをして肉を得なければならないし、食べられるかわからないものを食べてみる、新天地を目指して拠点を捨てるなど、リスクを冒しても挑戦しないと新たな可能性に気がつけないため、危険な事もいとわない行動をドーパミンが起こさせているのではないでしょうか。
そうのような事をしてきたから人間はこれまで生き延び、これだけ地球のありとあらゆる場所に住むようになったのではないでしょうか。一定のリスクを冒すことができた種が繁栄し、その子孫が我々である訳です。
そのため未知の新しいことにチャレンジしたり、成功する保証のない冒険のようなギャンブル的な危険な行為の際に人は大量ドーパミンが出るのだと考えられます。(もちろん犯罪やギャンブルを推奨したり、肯定する意図でこの記事を書いているわけではありません。)
これらのことを考え合わせると、ソーシャルゲームやガチャが人気なのもうなづけます。これまでの人類の歴史にしおいては、一定の割合の人がリスクを冒し新しい可能性にかけることで生存範囲を広げ繁栄に寄与してきたわけですが、全地球を人類が覆い、文化が発展し規律と統制を取るようになってくるとそれらのリスク志向が邪魔になる場面が増えたわけです。
もちろん起業したりといったリスクの高い行為はいまだに発展のために欠かせない行為ですが、そういった冒険欲をどう解消するかという観点においてソーシャルゲームやギャンブルが一定量必要とされるのではないでしょうか。
プログラミングのゲーム性にたどり着かせる
やや話が広がってきてしまいましたが、話を少しまとめてみましょう。ある種のギャンブル性のあるゲーム要素(ガチャなど)をフックに、環境構築など煩わしいことなく気軽にプログラミングに触れる機会を作る。そしてゲームサイクルの中にプログラミングの成功体験を組み込んでいくことができれば、やがてプログラミングをすること自体が「楽しいこと」に昇華される。それができれば夢中でプログラミング学べるの教材がつくれるのではないか、と考えられるということです。
そして、これまでとりあげてきたことからも、プログラミング自体とてもゲーム性、中毒性の高いものであることが分かります。プログラミング自体をゲーム的に楽しめるようになればしめたものです。プログラミングの情報はネットの世界にいくらでも転がっているため、どんどん学んでいくことができます。
その一方でプログラミングがある程度できるようになった際の課題は「何を作ればいいか」問題です。業務だとプログラミング力やアルゴリズム力を上げるための丁度良いサイズの開発ばかりというわけでもないのです。
つまり、入り口ではプログラミングを始める際のハードルをさげ、プログラミングのゲーム性を楽しめるところまでたどり着かせることができることが重要。その先は程よい粒度のプログラミングの課題があることが重要といえます。
まとめると次のようになります
入り口ではプログラミングを始める際のハードル
①環境構築のハードル
②難しそうという心理的ハードル
③習慣的にプログラミングするハードル
プログラミングを楽しめるようになった際の課題
①何を作るかの丁度良い粒度のお題がない課題
これらをクリアできないだろうかというのをpaizaではずっと考えてきました。
そして作ったモノたち
コードガールコレクション、コードクロニクル、推しと学べるプログラミング
コードガールコレクション
コードクロニクル
推しと学べるプログラミング
paizaラーニングなどでプログラミングを始めたそうに向けて、ガチャをベースとした親しみやすいゲームシステムと、粒度の小さいプログラミングミニゲームを組み合わせ、楽しくプログラミングの筋トレができることを目指して作ったゲームです。
POH(paizaオンラインハッカソン)シリーズ
エンジニアが死滅した世界
ロジックサマナー~閃光の召喚プログラマ
恋するハッカソン~君色に染まるアイドル~
プログラミングで彼女をつくる
ある程度プログラミングができる方を対象に、仕事以外でもプログラミングを学ぶ機会や、アルゴリズムの楽しさに気づける機会の提供を目指して、プログラミングでアイテムを取得し、着せ替えができるなどのゲーム性を組み合わせたもの。
paizaラーニングとレベルアップ問題集
動画と実行環境、練習問題を組み合わせたプログラミング学習サービス。こちらはそこまで強いゲーム性は持たせていませんが、動画による学びやすさと、ドリルのような問題集を数多く用意することで、入り口のハードル及び何を創ったらいいのかという課題に対応した構成にしています。
プログラミングスキルチェック
paizaのスキルチェックは、自分の得意な言語でプログラミング問題を解いてもらい、転職の際に求人企業が求めるスキルレベルと合うかをはかるものです。こちらはゲームや学習サービスではなく、転職のための試験的な位置づけですが、300問以上の問題があるため、力試しや学習の一環として使われる方も多くいます。
もともとpaizaはITエンジニアとして就業中の方向けの転職サービスから初めていて、そこがメイン事業となっているのですが、そこにつながる道の整備も重要と考えて、これらの日本のITエンジニアの技術力の底上げになるようなサービスにも取組んできています。
まとめ
プログラミングはだれでもやればある程度やれるようにはなるとは思いますが、音楽や絵画のように向き不向きはかなりあるタイプのものだと思っています。理系だから、情報系出身だからといって必ずしも得意とも限らず、一方で文系でもすごく得意な人がいます。才能はあるがプログラミングに触れたことがなく、その才能が眠っているということは往々にしてあると考えています。
2030年には79万人のIT人材不足になるといわれている今の時代、プログラミングができる人はとても貴重な存在なので、様々な方にプログラミングに気軽に触れてもらい、楽しいと思ってもらうことは今後の日本にとってとても重要なことだと考えています。そのため色々な方向性のプログラミングゲームを作っています。
才能を発掘するために、プログラミングに気軽に触れられる機会を作りたいと考えています。そして、現職でITエンジニアとして働いている方々に、より活躍できる機会を提供していくことで輝かせ、ITエンジニアを憧れの職業にしていくことが重要だと考えています。日本の未来の作る企業と、優秀なエンジニアのマッチングにより、日本から次世代のGoogleやFacebookを生み出していきたいと考えています。
非常に話が長くなりましたが、そういった背景と狙いがあり、paizaはプログラミングエンターテイメントコンテンツを作っているというわけです。アホなコンテンツが多いので、何も考えてないよう見えて実はいろいろ考えています。
面白そうだなと思った方、paizaではITエンジニアをはじめ様々なポジションで一緒にpaizaを盛り上げていってくれる方を大募集中なので興味がある方はお気軽にTwitter(@rk611)などでお声がけいただければと思います。
それではよいお年を!