東京電機大学情報環境学部教授 土肥紳一さんインタビュー

今回は、東京電機大学情報環境学部教授土肥紳一さんにインタビューさせて頂きました。土肥さんが講義されている、コンピュータプログラミングの概要や、受講生についてお話しを伺いました。

東京電機大学土肥教授

先生が教えている授業について、教えて下さい。

私はコンピュータプログラミングという授業を担当しています。新入生が毎年定員240人に対して1割多い、260人前後入ってくるのですが、当然一人じゃその人数はさばけませんので、5クラスに分割してプログラミングの入門教育を始めることになります。

学生には、初めて教わる人と高校でやってきた人がいますが、大学ですから、年明け入試に関しては基本的に点数で切ることになります。年内入試の方は年明けのレベルに及ばないことがありますが、ある得意な分野に関してはすごい才能を持っている子がいます。大変なのは、そういった人たちが4月に入ってきて学び始めるわけです。つまり、母集団がものすごい多様化しているのです。

その多様化している中でプログラミングをどう教えようかと考えたときに、我々が昔教わった方法だと、絶対成り立たないと確信しました。

我々の頃だと、丁度PC8001というパーソナルコンピュータが世の中に出てきて、BASICインタプリタだったので、思ったことを入れればすぐ反応するという面白みがありました。その時に面白いと思えたことは、少し幸せだったかもしれません。

新入生に関して申し上げると、プログラミングをやりこなすためには、「プログラムの入力をどうするの?」とか、「保存はどうするの?」、「それ以前にまずJavaどうやって入れるの?」といった話があります。それから当然コンパイル、実行もあります。そういったことを行う中で、まず敷居が高いのはタイピングです。タイピングが速いか遅いかの差は随分ありますが、「タイピングで1分間に200文字くらい入れられる」というすごい学生がいたからといって、その子がプログラミングが得意かというと全然違うのです。

つまり、タイピングは必要だけれども、プログラミングの能力とは違った部分があり、早く正確に入力できることに関しては評価できますが、プログラムが組めるかというとそうではないのです。

それから普通科の方はやはりタイピングが苦手な方が多いです。”プログラミング=タイピング”だと思われている節があり、まずその誤解を解くところがすごく重要です。なので、最初に気を使うのは、タイピングが遅いからプログラミングができないということではなく、本質的にプログラミングの面白いところが何なのかを理解してもらうまでが大変苦労します。

授業はどのように進めているのでしょうか?

学生さんに最初によく言うのは、プログラミングはとにかく「習うより慣れろ」です。自転車に乗れるようになる為には、最初に自転車に乗るためには補助車をつけ、片方はずし、両方はずし、だんだん乗れるようになります。基本的にそれと同じで、プログラミングも単なる座学ではなくて実技だと指導しています。

授業としては、非常に独創的な授業をしています。プログラムを配ってそれを眺めたり、穴埋め形式の問題を配り、完成させるということはしておらず、毎回白紙の状態からプログラムを入力してもらっています。文章が書けることと、プログラムが書けることは似てるところがあり、最終的には白紙の状態から求められている、プログラムを完成できる力がついてないといけないと思います。その為、中間試験も期末試験も穴埋め問題は出さず、文章問題を出して、それを満足するプログラムファイルを作成し提出してもらい、同僚が作った採点プログラムにかけることで、ちゃんと動くかどうかをチェックする。そんなことをしています。

最初なので、チェック内容の一つに「プログラムの字下げやブロック構造を意識して、きれいに書けているかどうか」という項目があります。左にぴったりくっつけたり、改行がむちゃくちゃなプログラムを見るとうんざりしますよね。まずは正しくプログラムを入力できることが重要で、単なるタイピングにならないように注意し、「どうしてそう書いてあるのか」ということを理解しながら進めていくわけです。このやり方だととにかく時間がかかりますが、慣れてくるとコンパイルエラーが出ても、誤りを自分で直せるようになってきます。そうなると成功機会が増え、自信がついていき、今後面白くなってくる方向に働くのです。そのことをやらないまま、ただ座学だけでトレーニングをした人たちは、多分白紙の状態からプログラムは作れないと思います。

そこの部分を徹底して教育をしていますので、基本的に最初は非常にゆっくり進みます。他の大学の人が見ると、「なんでこんなに進まないの」と思うくらい遅いです。しかし、学生に力がついてきたら、我々も教える速度を上げますが、座学をやる感覚で彼らはついてきます。その瞬間から面白くなるのです。

初学者にとってネックとなるものはありますか?

初学者にとっては繰り返しの概念が非常に難しいようです。難しさを探ると、様々な本で繰り返しを説明する際、一例でfor文がありますが、繰り返しの制御変数を巧妙に細工しながらプログラムを書く書き方と、制御変数は形を決め、その中で必要な数を作り出す考え方が2通りあり、市販の教科書見ると書面を短くしたい関係なのか、前者の制御変数を細工してプログラムを書くケースが非常に多いのです。これは初学者にとって無益千万な話でして、ただでさえ敷居が高く難しい繰り返しをなんでわざわざ難しく教えるのかと思います。

ここの学部ではコンピュータプログラミングA・Bという授業が1年次と2年次でありますが、「繰り返しの構造はこれ以外書くな。」と教えています。分かっていて使うのは構わないのですが、何回繰り返すのかをまず確実に保障し、その中で利用できる変数を活用し、必要な数字を作り出すようにしたほうが良いと思います。

数を数えるときも、コンピュータの世界では0から数えますが、学生たちには0から数える習慣がないので、どうしても1から数えたくなります。しかし、0ベースで変数を初期化し、いくつまで繰り返すかという部分はとにかく触らず、中で必要な数を作り出すような考え方をしなさい、と教えています。一度に色々なことを考えようとする本が多いです。否定はしないですが、初学者にとっては迷惑な話なので、分かるまではこう書くように指導しています。そうすると非常にお行儀よく書いてくれます。

場合によっては制御変数を活用したほうがより簡潔に書けることもあるのですが、”繰り返す”ことと”何を繰り返すのか”ということはちゃんと分離して考えなさいということをかなり強くいっています。初学者はそんなの当たり前だと思って鵜呑みにするからいいのですが、経験者は変なプログラムを書いてしまうのです。

教材はどのようなものを使用されているのですか?

色々悩みました。我々が考えているような教科書がまず無いのです。今はWebベースの教材を使い続けていますが、教え方の順番としては、市販の教科書から見るとかなりイレギュラーになっています。

また、Webベースの教材も公開しています。ただ、教材だけを見ても分からないような、仕掛けになっています。授業に出て、その内容を聞きながら学ぶことによって、分かるようなもので、完璧な教科書にはなっていないのです。

授業で補足されることを前提にしているということでしょうか?

授業では「今日はここまでやるから、これだけ完璧に理解しなさい」と小出しにして使用するので、去年の内容見れば分かると思いますが、予習しにくい構造になっています。とにかく実技を伴いながら学んでいくので、「今日はこれをやるから完璧に理解しなさい。忘れたものだけ復習しなさい。」という形で、1回分の授業内容しか公開しないことになっています。

教室は学生が先生に向かって一方向に座るのではなく、グループ学習のような構造の部屋になっており、スクリーンがいくつか置いてあります。そういった中で先生から「ここを見ろ」と言われても「ここってどこ?」という話になりますよね。学生は最寄のプロジェクターとWebベースのテキストを見比べ、編集、コンパイルといったことをやらなくてはならないので、教材は新しく教わることを一画面に収まるように簡潔に記述しています。後は足りないことを授業中に口頭で説明しながら、進める流れになっています。ですから、初めて教わる人向けになっているのは間違いないです。

入試の経路がいくつかありますが、過去の経験を活かした入試もありますか?

AO入試という一芸秀でた方を受け入れる制度があります。例えば、プログラミングに対して基本情報の資格を持っている方がいれば、それは大きく寄与します。因みに推薦入試は、高等学校に大学の方から「ある基準をクリアする人がいたら、ぜひご推薦ください」と頼むもので、内申だけでも高校が推薦してきます。

東京電機大学には複数のキャンパスがありますが、今までご紹介された授業はプログラミングという授業であればどのキャンパスでも共通しているのですか?

残念ながら学部によって異なりので、あくまで情報環境学部での話になります。ただし、工学部第2部も私が担当しており、2部の電気電子工学科では教科書はあるのですが、情報環境学部と同じ「モチベーションを向上する仕組み」を取り入れています。

モチベーションを向上する仕組みとはなんでしょうか?

受講者のモチベーションを向上することをずっと研究しています。プログラミングの教育に関しては、正しい結果が得られるまでの途中のプロセスが非常に大変で、面白いと感じやり遂げるまでに嫌になってしまうケースが多いです。それを防ぐために、受講者のモチベーションの測定を行っています。測定した結果、何が悪いのか分析するシステムとしてコンピュータプログラミング用の評価尺度を持っています。

モチベーションの測定はセメスター(2学期制)の中の、①授業が始まって2週間くらい、②中間試験の直前、③期末試験の直前、この3ポイントで行っています。測定を行うと、例えば教室のレイアウトを用意し1人1人の位置にその子が今どういうモチベーションなのかを3次元表示することができます。前期中期後期の時間的な変化でこれ並べますと、授業が進むに従って、モチベーションが低下していくのが分かります。その中でも 顕著に下がっている意欲のない学生がどの辺りに固まっているのかが分かり、見に行くと居眠りしていたり、違うことを内職していたり、そういう子も見受けられるわけです。そういった指標を設けて授業そのものを科学的に分析しています。

この学部の授業は基本的に1コマ50分授業がベースになっており、プログラミングの授業は2コマ連続で100分、それを週2回行っていますので、半期で27回授業があります。授業ごとに理解度がどうかを全部チェックする仕組みを持っており、その理解度調査の中で3回分だけ少し項目を増やしてモチベーションを評価しています。

毎回の授業ごとの理解度調査に関しては、次の授業の冒頭でフィードバックを与えることによって、「自分だけ分かっていないと思っていたら実は他の人も分かっていなかった」という学生相互間のフィードバックをかけられるのと、教えてる側もそのことが分かりますので、分かっていない部分がどこかを毎回の授業で報告しています。

質問項目はある項目に関しての”はい”、”いいえ”の2択になっています。我々として知りたいのは分かっているかどうかなので、理解度が80%を下回らないよう努力し、下回った場合は説明や授業内容が良くなかったということで次の授業で少し補足するなど、そういったフィードバックをかけています。

この手法を用いると、先生自身も頑張らなくてはいけないという意欲が働いて、どうすればこの子たちのモチベーションがあげられるのか考えます。一般的には授業が進行するに従い、モチベーションは下がる傾向にあります。維持するのはとても大変で、まかり間違って上がることはほとんど稀なことです。

ですから我々は維持する方法を測定結果から専門家に分析してもらい、客観的に示してもらっています。これを見ながら現場の授業をどうしようか考えるという流れになっています。一方的な授業をするのではなく、彼らの様子をとにかくモニターし科学的に分析しながら、良くなることを戻しているという、そういうことを行っているのがここの学部の授業です。

大学の授業としては、モチベーションを測定した結果、効果があったのでしょうか?

コンピュータプログラミングA・Bと授業があり、Aを教わった時に散々な思いをすると、一般的に次に続くBは取らないのです。なぜなら、私の学部の科目は全部選択科目で必修科目は一つもないのです。その動きを見たのですが、90%以上の学生がBも取っています。長い時間かけて分析した結果、授業は面白いと思っているからこそ取るということが分かっています。

さらに、その後に続く上流工程一歩手前の、オブジェクト指向設計という授業も、クラスが溢れて2クラスに分けたことがあります。プログラミングが面白いと感じる学生を、やっとそこまで輩出できるようになったと感じています。ですから最後に上流工程を教われば、それなりの力を持った学生を輩出できるだろうと思っています。

卒業後はどういった仕事に就く学生が多いのでしょうか?

製造業からサービス業までいろいろありますが、情報処理産業の分野が4割5割で圧倒的に多いです。工学部系だと大手電機メーカということになるかもしれませんし、もちろんうちの学部からも三菱電機や、日本電気、日立などに行ったりもしますが、どちらかというと中小的な情報処理産業に行く学生が多いです。

卒業後の各学生の状況は、一人一人をピンポイントで追いかけるということはできていないですが、OB会で人を集めたり、最近増えてきているのは学部生向けの会社説明会を行う際、会社に就職したOBがリクルーターとして来るということがあります。

先生は就職担当もしているそうですが、学生に対して就職活動するうえで問題と思われる点があれば教えて頂けますか?

単刀直入に言うと、「学生はBtoBの会社を知らない。」その一言につきます。日本の社会構造をどこかで教わっているはずですが、有名な会社がさらに上の会社と関わっているからこそ、成り立っているということを彼らはほとんど知りません。ネームバリューというのは怖いと思います。聞いたことがあるかないかだけが大きな判断基準になっており、その会社がどういう会社と繋がって成り立っているかということを掘下げていくような企業研究がちょっと弱いと思います。

就職担当の立場で言うと、とにかく話をいっぱい聞いてほしいと思います。説明会で空いているブースがあれば、とりあえずそこに座って話を聞いてほしいです。その第一歩が踏み出せず、Webを見ているだけではそこの会社の良さは分からないです。足を運んで話を聞くと、自分のやりたいなと思うことが見つかる場合があるのです。そこの敷居をいかにとっぱらうかが、一番大きな問題だと思います。

よく有名なラーメン屋さんがありたくさん行列を作っていますが、「そんなところに並ぶな。わざわざ行列作るところに並んで、ぱっと切られて、何をやっているんだ。」という話です。
わざわざそういう所に行って、「またダメでした。」となるのは当たり前だと思います。

だからBtoBの会社で日本が成り立っているということを、マスコミを含めてもっと彼らに知らせる必要があると思います。学生たちはネットで企業の情報を調べて絞り込むのは上手ですが、ネットで絞り込む情報というのはほんの一部であり、本当にその会社が何をしているのかということは、会って見に行ってみないと、それこそインターンシップにでも行かないと分からないわけです。看板メニューだけを聞いて、わざわざ並んで切られて帰ってくるというのは、「何てバカなことをしているのだ。」というのが率直な感想です。ですから、それを改善する何かをする必要があるのですが、私の立場で彼らに説明するときは「BtoBのことをもっとよく調べてきなさい。」ということをよく言っています。

最後に、ご覧の皆さんに一言お願いします。

「プログラミングはとても面白い」ということを、結論づけておきたいと思います。例えば、中学生くらいの時にラジオを組み立てたかと思いますが、音が最初に出た瞬間というのはとても感激します。自分で一生懸命作ったものが完成して、音が出たという喜びは最高ですよね。これがプログラミングにもある、というのが私の最後に言いたいことです。プログラムが完成して、思う通り動いたということが、非常に感激が大きいところです。是非、多くの人にそのことを味わってほしいと思います。

おすすめの記事