WirelessWire News Technology to implement the future

by Category

表現のためのプログラミング、という教え方

2014.10.22

Updated by Ryo Shimizu on October 22, 2014, 07:41 am JST

スクリーンショット 2014-10-22 9.04.00.png
 今年も成蹊大学の経済学部でプログラミングを教えることになりましたが、今年は昨年までとやり方を変えて、ハッカソン形式でプログラムを書いてもらうことにしました。

 つまり、授業の枠を使って、その場で、瞬間的に決められたテーマに沿ったプログラムを書くのです。

 enchantMOONはそうした教材としてうってつけでした。
 こうしたハッカソンをいろいろな大学で繰り返しやってきたのですが、面白いのは、同じテーマで同じ結論に達する人が多いこと。たとえば「秋」を表現しよう、ということになると、落ち葉を表現する人が多く、次に松茸狩りや栗拾いを表現する人があらわれ、それ以外に「台風」とか、「文化祭」とかをイメージする人が多くなります。

 たとえば「何かゲームを作りなさい」といった具体的なことを言われると、なかなかパッとゲームを作ることは難しいのですが、「プログラムで秋を表現してください」とか、「プログラムで青春を表現してください」など、漠然としたテーマを与えると、皆、とつぜんクリエイティブになるのです。

 英語を勉強するのに、文法や語彙だけを機械的に増やして行ってもどうにもなりません。
 実際に会話して、相手の言っていることを理解して、自分の伝えたいことを伝える必要があります。

 そういう会話のなかから感じたもどかしさをエネルギーにすれば、英語を学ぼうという気持ちは自然発生的に産まれます。

 使う必要性も必然性もないのに英文法や単語を丸暗記しても疲れるだけです。
 それは英文の小説を読みたいとか、映画を字幕無しで見たいとか、英語の歌詞を理解したいとか、また逆に英語で歌詞を書きたいとか、そうしたちょっとした欲望でいいのです。

 同じようにプログラミングも、ただ機械的に文法を覚えるとか、与えられた退屈な課題をこなすとかではなかなか上達しませんし、上達しようとも思えません。

 だからプログラミングをまずは表現のための手段として学ぼう、というのが今期で私が試したい教育法なのです。


996081_10152824074090752_1610203816_n.jpg
 もともとクリエイティブな人と、そうでもない人の2者には大きな違いがあります。

 クリエイティブな人は、常に内面に「表現したいこと」を抱えていて、特に誰かに頼まれたり、強要されたりしなくても勝手にクリエイティブなことができます。また、なにかを表現するために必要なスキルがなんであるか自発的に把握し、訓練さえします。

 反面、普通の人は、スキルを持っていても持っていなくても、「表現すること」自体が苦手です。
 たとえば「頭のなかにはイメージがあるのに、うまく言葉にして説明できない」という状態がこれです。

 ただし、「表現したいこと」が具体的にあるわけではないので、日常生活でそういうもどかしさを感じることがなく、授業や会社などで突然クリエイティブであることを求められ、そのとき初めて考えをうまく表現できない自分を自覚して戸惑うのです。

 これまで、「ものをつくる、表現する」という趣味は、専ら自発的にクリエイティブな人々のみが楽しめるものでした。

 しかし実際には表現することで得られる喜びは誰にとっても大きいのです。
 ただ、表現すべきことを自分の中に見つけられていないということがほとんどです。

 すると例えば「今から15分でゲームを作って下さい」と言われると、まず15分という時間の制約に混乱し、次にゲームってどうやって作ればいいの?ということで混乱します。

 ところが「秋を表現してください」と言うと、秋に関するクイズを作ったり、落ち葉拾いゲームを作ったり、文化祭や体育祭の説明をしたり、といった感じで、突然、ゲームだろうがそれ以外の表現だろうが可能になるのです。

 重要なのは時間的制約と、「失敗しても恥ずかしくない」という環境です。
 中学校や高校の美術の時間は、明らかに絵が上手な人と、そうでもない人で結果に差があります。

 絵が上手な人は、クラスに2〜3人で、それ以外の人たちは徹底的に自分のセンスがないことを思い知らされるパターンに陥りがちです。

 私も絵が上手い方ではなかったので中学校の夏休みの宿題で絵画を提出するのが苦痛でした。

 そこであるとき、先生に聞いてみたことがあります。

 「夏休みの宿題は、水彩画でなければダメですか?」と。

 
 すると、たまたま私の担任が美術の先生だったので、

 「アートであればそれはなんでも構わない」

 と答えてくれました。
 そこで私は、絵筆を使わずに、コンピュータに絵を描かせるプログラムを描くことにしました。

 コンピュータに絵を描かせるというのは、話だけ聞くと難しそうですが、実際にはそうでもありません。
 ごく簡単な命令の組み合わせで、色々な絵を描くことが出来ますし、それは人間には決して真似できないほど精緻で徹底しています。

 私の場合、ただ絵を描くだけではつまらなかったので、アニメーションにしたり、描かせる絵が毎回ランダムに変わるようにしたりといった工夫を加えました。

 アートにはルールがありません。
 「こうあるべき」というお仕着せの価値観もありません。
 ただ「表現」でありさえすればいいのです。

 苦痛だった夏休みの絵画の宿題が、とつぜん私にとって楽しいものに変わりました。

 夏休みの宿題として、フロッピーディスクを提出すると、先生は「これはこのまま文化祭に出そう」と言って下さって、僕だけ教室の一角にディスプレイと、当時最先端だったノートパソコン(これは小学校の算数の先生の私物を特別に貸していただいたものでした)をつないで展示しました。

 コンピュータをある目的を達成するための道具として考えるのではなく、自分を表現するための道具として捉え直すと、様々な可能性が見えてきます。

 少し前に話題になったような、ExcelやPowerPointの作図機能だけで美しい絵を描くというのもひとつの表現ですし、ゲームを作ったりというのももちろん大切な表現のひとつです。

 そのための切り口として、特定の目的を与えるのではなく、「自分が考える秋を表現しよう」とか、「自分が考える青春を表現しよう」といった幅広い、漠然とした、どうとでも言えるようなテーマを与えることで、人は突然、その内側に眠るクリエイティビティを引き出されるようなのです。

 なぜなら、誰しも「秋」や「青春」、「恋愛」、「人生」といったものにそれぞれ異なる認識をもっているはずで、それはその人固有のオリジナリティとでも言うべきイメージです。

 そのイメージをなんらかの具象物として表現しようとするとき、否応無しに人はクリエイティブにならざるを得ません。

 そしてそうした獏としたイメージを具象化するとき、実は意外と日本語(母語)で説明するにはスキルが必要と解ります。私のように日常的に文章を書いてる人間でもなければ、突然ある漠然としたテーマを与えられて、それを小論文に纏めるというのは相当な難易度です。

 また、それを絵画にしよう、と言われたら、もっと難しくなります。
 とりあえず「秋」と言われたので思いついた色を作って水彩画を塗りました・・・それはそれでもちろんひとつの表現ですが、そのやり方では幅は出ませんし、結果に対して準備と後片付けが大変すぎます。

 音楽にしよう、と言われたら、もはや文部科学省の管轄範囲外です。
 作詞作曲を即興でできる人は、学年に一人か二人しか居ません。

 ところがそれを手書きとハイパーテキストとプログラムで表現してみようと言ったら、これが全く出来ない人というのはほぼ一人も居なくなります。

 それだけではありません。

 凄くできる人と、ぜんぜん出来ない人の差がおそろしく縮まるのです。

 私が今回驚いたのは、同じテーマのハッカソンを慶応義塾大学の大学院生を対象にやったときと、成蹊大学の二年生を対象にやったときで、作られた作品がほとんど似通っていたことです。

 慶應の稲見教授も私も、「秋」というテーマですぐに「もみじがおちてくる」ということを考え、実装しましたが、成蹊大学の生徒の半数も「もみじがおちてくる」という表現を思いつき、その場でプログラミングしました。

 しかも、出来そのものでいえば、稲見教授の作った「もみじが落ちて来る」プログラムよりも、学生の作ったプログラムの方がより凝っていて、絵的にも奇麗なものが多くなりました。

 これは、稲見教授も私も、根がプログラマなので、すぐにエンジニアリング的に秋を表現しなくてはならない、と考えたのに対し、学生たちは「秋というテーマならば、秋らしいもみじの画像を探さなければならない」と考え、まず秋らしい画像を探すことに時間を割いたからだと思われます。

 成果物が実用ソフトではなく「表現」である以上、学生たちのほうがより正しいやり方で表現を行っていることになります。

 実のところ私は成蹊大のハッカソンで、最初の一回めからプログラムをきちんと書くとは全く期待していませんでした。時間が短すぎますし、操作にも不慣れな中、そうそう簡単に行くものではない、と思っていたのです。慶應大学の場合、大学院ですし、それなりにプログラミングの素養がある人々が集まっていました。それに対し、成蹊大学ではまだプログラミングの基礎の基礎しか教えていなかったのです。

 しかし実に学生の8割がなんらかのプログラムを使って秋を表現してきました。
 いきなり、15分で秋を表現しろと言われて、専門的な教育をまだほとんど受けていないにも関わらず、です。

 プログラムをロジックのための道具として捉えるのではなく、表現のための道具として捉えると、極端に言えば「失敗がなくなる」のかもしれません。

 アートで、色をひとつミスっても、見た目が奇麗ならば「それはそれでアリ」となります。
 同様に表現のためのプログラミングでは、仮にプログラムが当初意図した通りに動いてなかったとしても、「奇麗ならそれはそれでアリ」だとすれば、「失敗」と考えられるような事態は激減します。

 「失敗」と評価されるケースを減らして行けば、プログラミングをやってもなかなかうまくいかない、というストレスさえも大幅に軽減することができます。

 ストレスを減らせば、表現することの喜びの方が大きくなります。
 その結果、彼らはストレスを感じることなくプログラミングで自分の考えを表現できるようになるのではないかと思います。

 毎週少しずつ、表現の幅を広げる道具を紹介しながら、もっと楽しい、新しいプログラミングという表現手段を伝えていけたらなと思います。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。