PR

 一橋大学で私が担当している授業紹介の続きです。前回は、計算機概論という授業の目的と、学生さんの作品プログラムを1つ紹介しました。今回は、同じ授業について、他の学生の作品なども含めて詳しく紹介します。

 半年間(実際には4ヵ月程度)で行った授業の前半では、簡単な例題を通して、プログラムがどのように動くかという感覚をつかんでもらいました。また、それを通して自分でプログラムを作るための力を付けました。このような基礎力を数回の授業で身に付けられるのがドリトルのいいところです。授業の後半では、学生たちは自分が作りたい作品を考え、実際にプログラムで実現しました。

バラエティー豊かな応用

 詳しくは後述しますが、前半の授業では、グラフィックス、タイマー、ボタン、衝突検知という4つの機能を学びました。学生たちは、学んだ知識を活用して、さまざまなプログラム作品に挑戦してくれました。ここではその中からいくつかをご紹介します。各プログラムの紹介欄で記載してあるdtlファイルを、前回紹介したオンライン版ドリトルで「読込」ボタンから読み込んで実行してみてください。

1. グラフィックス+タイマーの作品(アニメーション)

雪だるま(snowman36.dtl): 先週ご紹介した雪だるまのアニメーションです。だんだん玉が大きくなっていく様子が楽しいです。
37_1fall.gif
秋(aki.dtl): 落ち葉の季節のアニメーションです。葉っぱが落ちていく様子を最後までご覧ください。
37_2knight.gif
夜(knight.dtl): 夜をテーマにした作品です。出かけたカメが、星を連れて夜空から帰ってきます。


2. ボタンの作品

37_3memory.gif神経衰弱(memory.dtl): 音の神経衰弱ゲームです。これは獨協大学の私の授業「コンピュータ入門」を受講した学生さんが作ってくれました。ボタンをトランプの代わりに使っています。

3. ボタン+衝突の作品

37_4invader.gifインベーダー(invader.dtl): インベーダーゲームです。敵の動きが本物っぽいです。

 学生たちは、授業を通して思い思いのプログラム作品を作ってくれました。これは一生の糧になると思います。大学1、2年生ではまだ将来が見えていませんが、今の世の中、文科系であってもほぼ全員が社会に出てから何らかの形でコンピュータを使って仕事をしていきます。

 コンピュータを使うことは誰でもできることですが、その中でプログラム的なことをできる人はごくわずかです。たとえば営業の仕事をするときでも、表計算ソフトに入れた営業実績をマクロなどを使って自在に集計できるかどうかは仕事の効率を大きく左右します。大量のデータの中から特定の条件でデータを取り出すときにもプログラム的な考え方が必要ですし、Webサイトを作るときも、JavaScriptやFlashのプログラムを理解できると、表現の幅が大きく広がります。

 現在の日本では「ソフトウエアは社外や海外に発注すればよい」という考えが主流ですが、実は「どうすれば使い物になる情報システムを発注できるのか」ということは大きな問題になっています。それは、「作ってほしいシステムを仕様書という文書にして、他人に伝える」ということが容易ではないからです。その意味で、プログラムを作ってもらう立場であっても、プログラムを作った経験は大きな力になります。

 私はプログラミングを「一生残る知識」と考えています。プログラムという言葉を聞いたときに、「ああ、作ったことがある」「楽しかったな」と思えるか、「プログラムって何?」「がんばったけど挫折した」「二度とやりたくない」と思うかは、大きな違いです。特に未経験の人が社会に出てからプログラミングを自力で学ぶのはとても敷居が高いものです。小学校から続く学生時代のどの場面でもいいので、いちどプログラミングを体験しておくと、一生の宝になると思います。文法は、ドリトル/Java/VisualBasicなど言語によって多少違いがありますが、今後も時代に合わせて変化するので、「ある言語だけを書けるようになる」のではなく、「その時々で必要な言語を使っていく」ことが大切です。

 極端な表現をすると、人間は「プログラムを書いたことがある人」と「ない人」に分けられる、または、プログラムを書いた経験の有無で人生が分かれるとも言えるかも知れません。プログラムを書いたことがある人は、人生の中で必要になれば(Excelのマクロなどを含めて)プログラムを使える状態にあるわけですが、一度もプログラムを書いたことがない人は、プログラムを使って何かを問題を解決すること自体、思いが至らないでしょう。

 最後に学生たちの感想を紹介しておきます。ほぼ全員が初心者でしたが、楽しくプログラミングを学べたようです。

 「プログラムを作ると聞いて、私にはそのような経験がなかったので、はじめはそんなに高度なことが自分にできるのだろうかと思っていましたが、実際にやってみると、ドリトルという言語は日本語で親しみやすく、文法もわかりやすくて使いやすかったです。また、自分でアニメーションやゲームなどのプログラムを作り、プログラミングが身近に感じられました。」

 「プログラムを初めて学びましたが、マウスでただ操作するだけのホームページやゲームの裏にはこんなに地味で膨大な作業をしなければならないことに驚きました。ただ、そうやって自分で作っていく中で、自分の思いどおりに動いたり、自分のゲームが作れた喜びは大きいものでした。」

 「javaやc++のようなプログラミング言語を見ても何が書いてあるのかわからず、正直この授業を乗り切っていけるか不安でした。しかし、 dolittleは日本語で命令が書けると知ったことや、毎回の授業でどんどんと新しい命令を書けるようになっていったことで、だんだんとその不安は無くなり、ついには授業に出るのが楽しみになりました。いろいろな紆余曲折を経て、自分の作ったプログラムが思い通りに動くようになると、言葉では言い表せないような感動がありました。」

 この授業を通して知らず知らずのうちにオブジェクト、変数、繰り返し、メソッド定義などを学んだ学生たちは、きっと学生生活や社会に出てから、さまざまな場面でプログラミングを活用して行ってくれると期待しています。

授業内容を少しご紹介

 以下で、授業の前半で扱った内容を詳しく紹介しています。興味のある方は、ドリトルを使って試してみてください。プログラムの中で、太字は本稿公開にあたり、新たに加えた行です。

1. グラフィックス

* タートルオブジェクトを使って絵を描きます。
* カメを動かすと、その足跡に線が残ります。線に名前を付けて操作できます。
* 次のプログラムでは、このような動作を指定しています。実行すると、画面に赤い三角形が描かれます。

  o 1 行目で、タートルオブジェクトを作り、「かめた」という名前にしています。
  o 2行目で、「少し歩いて左斜め後ろを向く」という動作を3回繰り返して、三角形を描いています。
  o 3行目で、描いた線を図形オブジェクトにして色を塗り、「三角」という名前にしています。
  o 4行目で、三角を右斜め上に移動しています。

かめた=タートル!作る。
「かめた!100 歩く 120 左回り」!3回 繰り返す。
三角=かめた!図形にする(赤)塗る。
三角!100 50 移動する。

2. ボタン

* ボタンを使って他のオブジェクトを操作します。
* ボタンを押したときの動作をプログラムとして書くことができます。
* 次のプログラムでは、このような動作を指定しています。実行すると、ボタンを押すたびにタートルが左に回転します。

  o 5行目で、ボタンオブジェクトを作り、「左ボタン」という名前にしています。
  o 6行目で、「かめたを少し左に回す」という動作をボタンに設定しています。

かめた=タートル!作る。
「かめた!100 歩く 120 左回り」!3回 繰り返す。
三角=かめた!図形にする(赤)塗る。
三角!100 50 移動する。
左ボタン=ボタン!『左回転』作る。
左ボタン:動作=「かめた!30 左回り」。

3. タイマー

* 指定されたプログラムを、一定間隔で繰り返し実行します。
* 少しずつ動く動作を実現できるので、アニメーションやゲームなどを作るときに便利です。
* 次のプログラムでは、このような動作を指定しています。

  o 7行目で、タイマーオブジェクトを作り、「時計」という名前にしています。
  o 8行目で、「かめたを少し前進させる」という動作を繰り返し実行していています。標準では0.1秒間隔で10秒間実行されます。

かめた=タートル!作る。
「かめた!100 歩く 120 左回り」!3回 繰り返す。
三角=かめた!図形にする(赤)塗る。
三角!100 50 移動する。
左ボタン=ボタン!『左回転』作る。
左ボタン:動作=「かめた!30 左回り」。
時計=タイマー!作る。
時計!「かめた!10 歩く」実行。

4. 衝突検知

* 他のオブジェクトとぶつかったときの動作を指定します。
* 上のプログラムでは、三角形にぶつかってもカメは通り抜けてしまいましたが、跳ね返るようにすることも可能です。
* 次のプログラムでは、このような動作を指定しています。

  o 9行目で、タートルオブジェクトに「何かにぶつかったら後ろを向く」という動作を設定しています。

かめた=タートル!作る。
「かめた!100 歩く 120 左回り」!3回 繰り返す。
三角=かめた!図形にする(赤)塗る。
三角!100 50 移動する。
左ボタン=ボタン!『左回転』作る。
左ボタン:動作=「かめた!30 左回り」。
時計=タイマー!作る。
時計!「かめた!10 歩く」実行。
かめた:衝突=「!180 左回り」。

 今回は、手元のパソコンで動くソフトウェアの仕組みを学ぶ授業を紹介しました。次回は、オンラインで動くシステムを学ぶ授業を紹介します。

次回に続く)