教育ICTリサーチ ブログ

学校/教育をFuture Readyにするお手伝いをするために、授業(授業者+学習者)を価値の中心に置いた情報発信をしていきます。

山本貴光先生の「プログラミングは最初に“何を作りたいか”」という話に賛成

山本貴光先生がTBSラジオに出演

 こんにちは、研究員の為田です。僕がフェローとして参加しているLudix Lab公開研究会:「「意味ある遊び」を生み出すルールとデザイン」で講師として来ていただいた山本貴光先生が、4月15日にTBSラジオのSession-22にゲストで出演されて、「コンピュータープログラムの考え方をイチからレクチャー!」というテーマでお話されていました。Podcastで1ヶ月間は公開なはずなので、5月半ばまでは聴けると思います。
http://www.tbsradio.jp/ss954/2015/04/20150415session.htmlwww.tbsradio.jp

 柔らかい話し方で、ユーモアも交えながら話される山本先生の話はとてもおもしろかったです。『世界が変わるプログラム入門』の出版に合わせての出演でした。

 要点メモを以下に貼ります。山本先生は、プログラミングとゲーム制作のところを軸にお話をされています。僕はそれを「じゃあ、学校でプログラミング教育をやるとかって、どうなのかな…」という問題意識で聴いていました。そのあたりのコメントもはさみつつ、メモしておきたいと思います。

プログラミングは「文法を教えるだけ」ではダメ

 山本先生は、高校生をはじめ、若者たちにプログラミングを教えています。現場での体験から話がスタートします。

  • ここ数年、高校生らを相手にプログラミングの仕方、ゲームの作り方を教えている。
  • 普通に教えると、プログラミングの文法を学ぶ、ということになる。まずこれを覚えて、次にこれを覚えて…と英語の文法を覚えるみたいになる。
  • でも、「文法を覚えただけでは、ゲームは作れない。どうすればいいでしょう?」と質問を受ける。
  • 「やればいいじゃん」と答えてきたけど、気づいた。プログラムは、文法が分かるだけではゲームを作れるようにはならない。それは、文法だけ覚えても英語を話せるようにならないのと同じ。
  • もっと大切なことがあるとわかって、それを授業で教えるようになった。そのことがあって、「この本を読んだら大丈夫だ」という本を作った。

 これ、そう思います。実は、企業研修などでもまったく同じだと思うのです。画面に文字を表示させるときは「printf」ね、とか。それだけ知ってても別に意味ないしね…。

 では、山本先生はどうやって教えるか、というと、そもそも、「何をしたいのか」を考える。そのために、「コンピュータって何ができるのか」を考えるところから始めるそうです。

  • コンピュータが高性能化して、ほとんどブラックボックス。中身も複雑。OSも複雑。中身まで知らなくてもいい。昔のPCはもっとおもちゃみたいだったから、触っていれば仕組みがわかった。
  • 命令を受け付ける画面が1つだけあって、そこに命令をだせば、コンピュータがやってくれる。
  • いまはそうではない。不具合があると、もうわからない。でも、仕組みがわかれば、今の複雑な構造も単純な仕組みの延長にある。
  • 「コンピュータでできないことって何がある?」と訊くと、実は何ができて何ができないのか、への答えは簡単なようで難しい。
  • プログラムするということは、コンピュータに何かさせること。コンピュータに何ができるのかがわかっていないと、プログラムはできない。まずは「コンピュータは何ができるのか」を教えないといけない。
  • カタカナ語は危ないから気をつけろ」と学生には言っている。何だかわからないけど、何となく使っているものがカタカナ語。よく考えたら、よくわからないカタカナ語は多い。コンピュータも、プログラムも、カタカナ語。プログラムという言葉を分解すると、プロ+グラム。プロは「あらかじめ、事前に」。グラムは「何かを描く、書かれたもの」と言う意味。つまり、プログラムは「あらかじめ書いておいたもの」という意味。
  • プログラムは、必要になる前に、コンピュータにあらかじめ与えておくもの、ということ。画面を真っ暗にして、ユーザーが何かしたら、何かを出してください、というように、あらかじめ書いておくこと。「プログラムは設計図」という説明とはちょっと違う、というのは、こうした話で理解できる。
  • 何のために、どんなプログラムを作るのか、という発想が大事になる。プログラムを作りたい人、勉強したい人は、「何を作りたいか」というのが先になければいけない。何を作りたいかがなければ、上達もしない。

 「何を作りたいか」というのを先に見せる、というのが非常に大事だと思います。いま、プログラム教育は非常に多くコースがありますが、ここを上手にやっているのがLife is Tech!などなのかな、と。iPhoneをすでに使っていて、「こんなアプリを作りたい!」というのがあって、そこを目指して、「どんな文法がいるんだっけ?」とメンターと一緒に作っていく、という形だと思います。

全体を自分でプログラムしてみることが大事

 ゲーム制作の世界は分業が進んでいるので、プログラマとして飯を食う、という人をがっつり国策として育てたいのであれば、話は別かもしれませんが、そうでなければ「全部を隅から隅まで自分でやってみるべきだ」と山本先生は言います。

  • 今はゲームを作る業界も分業が進んでいる。プランナーが考えたゲームを、プログラマがプログラムする、というふうになっている。そうすると、目的がないけど、プログラムを習得したい、というふうなのも成立はする。
  • プログラムを最初に学ぶときには、こうした分業ではなく、「これ作りたい!」というふうな思いがあることで、調べ物をしたり、試行錯誤をしたり、というのができる。最初のきっかけと動機が大きなエネルギーになります。本の中でも、嘘でも仮でもいいから、まずは目標を立てればいいぜ、というのを書いている。
  • 全体一本を自分で作る、というよりは、パーツを上手くつくろう、というふうになってきている。将来的には、そういうやり方もいいし、仕事としてもそういうやり方はある。でも、オススメなのは、最初から最後まで、隅から隅まで、小さくても、自分で作る、というのがいい。
  • ゲームを面白くしようと思ったら、オーケストラでいろいろな楽器で曲を演奏するときの、指揮者みたいな視点がゲームを作るときには大切。一部だけでなく、全体を見ています、という感覚があった方がいい。ゲームが巨大化しているので、難しくはあるのだけど。
  • コーエイの無双のときには、新しいキャラを育てる育成モードのところを、プランナーとして手がけていた。育成モードを作るだけではなくて、作ったキャラが本編で活躍するので、本編のこともわかっていなければならないので、やはり部分と全体の話になる。

 こうした全体を一人で全部、というのは、当然企画から一人でやって、「こんなのを作りたい」という一人ひとりの思いがバラバラで、それを実現するために必要なプログラミングの文法もバラバラで…というのを、学校で教えたりするのはやっぱり大変だろうな、と思ったりしました。
 公教育でプログラミングを教えるのであれば、どうしても文法中心にならざるをえないのではないかな、と。このあたり、山本先生がおっしゃっている「英語と同じで文法だけでは英語は話せるようにならない」というのと関連して、英語をどれだけの時間かけて教えているのか、というのを考えると、公教育でのプログラミングって大変じゃないかな…と思ってしまう。

今後、どんな人材がゲーム業界にいるのか?

 最後に、これからどんな人材が必要でしょう?という話になりました。

  • 今後は、すごいスペシャリストがいっぱい出てくるというのがまず大事だと思う。それと同時に、指揮者みたいな、監督が出来る人が出てきてもほしい。
  • ポイントとしては、ゲームの世界に、ちょっとゲームの外側にあるものを持ち込んでくれる人がいればいいと思う。今は、ゲームはゲームから作っている状態。続編とか、アプリ版とか。でも、まだゲームになっていない題材などがあるはずで、それをどうゲームに持ってくるか、というのが大事。
  • 片足がゲームの中にあり、もう片足はゲームの外に、というのがいいと思う。

 山本先生がされたのは、ゲーム業界の話ではありましたが、他のキャリアでも同じようなものではないかな、と思いました。例えば、学校の先生も、片足は学校の先生、もう片足は学校の外に、という先生が増えてきているように思います。SNSなどがあって、そうして外にどんどん出て行くことも簡単になっていると思います。
 僕も、そうしてあちこちに片足突っ込みたいな、と思います。(まあ、片足っていうと2ヶ所しかだめだけど…)

おまけ

 最後に紹介されている、山本先生編の『サイエンス・ブック・トラベル 世界を見晴らす100冊』、もおもしろそうだなあ。

 ぜひ、全編聴いても20分ちょっとですから、聴いてみてください