久野先生へのインタビュー 後編
1984.3 東京工業大学理工学研究科情報科学専攻博士後期課程 単位取得退学 1984.4 東京工業大学理学部情報科学科 助手 1986.3 理学博士(東京工業大学) 1989.4 筑波大学大学院経営システム科学専攻 講師 1990.8 同 助教授 2000.12 同 教授 2016.4 電気通信大学情報理工学研究科 教授, 筑波大学 名誉教授 2022.4 電気通信大学情報理工学研究科 特命教授
久野先生は、2016年に本学教授として就任され、一年次必修科目「コンピュータリテラシ/基礎プログラミングおよび演習」のカリキュラム作成に尽力されました。長年、プログラミング、ユーザーインターフェース、情報教育の分野をご専門とされ、情報の教科書なども執筆されています。詳しくは先生の個人サイトをご覧ください。

Chapter6
コンピュータリテラシ/基礎プログラミング
コンピュータリテラシー、基礎プログラミング演習のカリキュラムを作るにあたって意識された点を教えてください。
二つの科目とも、それ以前に私が教えたことなどを元にしていますが、ある程度分かっている人も、分かっていない人も受講します。だから、どちらにとっても楽しめること、少なくとも理不尽ではないことを目指しています。それは、難しいことです。1年間の必修科目で、長い時間座っているのに退屈だったら、大学に行くのが嫌になってしまいます。そうではなくて、易しい問題もあるけれど、少し考えさせる問題は考えたら面白いとか、あるいは全然知らなかったけれど、やってみたら面白かった、というように様々な人が、楽しくなる科目を大学の1年生では学んでほしいと思っています。そういうものを目指している、と言えばいいかなと思います。
現在の電通大の入試科目にプログラミングがあるわけではないので、新入生のプログラミン能力には幅があると思うのですが、プログラミングが得意な学生はコンリテ/基礎プロの授業の中でどういうことをしていけばいいと思われますか。
それは好きなことなので、自分の興味のあることを勝手にやって、それで単位の条件を満たして単位を取ればいいんじゃないですか。だから、そういう意味では「好きにやってください」という感じですね。どちらかというと、できない人に何とか面白くプログラミングをやってもらう、ということに重点を置いています。ただ、それだと上のレベルの学生はつまらないかもしれない。だから、上の学生は自分の興味があることを深掘りして、それで単位を取ればいいんじゃないかな、と考えています。
先生としては、プログラミングが初めての学生を離陸ファーストの教材で救えたと思いますか。
僕は、それがいいと思ったんだけども、ただ基礎プログラミング演習でそれができているかは難しいですね。なぜなら、最初の簡単な部分でも全然自分では書かないで、写すとか適当に済ませている人もいるわけじゃないですか。写したら絶対に書けるようにならないじゃないですか。そういう人に、もう少し訴えかける方法、今日していただいているインタビューでは、そういうものがあるだろうと思われていたかもしれないんだけども、そういう風な妙案が本当は必要なんだなという風に思いますね。
先生といえば、X(旧Twitter)の方で積極的にアカウントを動かされて授業に関する情報を発信されて、学生と交流されているというのが結構僕らの世代でも有名だったりするんですが、その理由などをお聞かせください。
私が、東工大の助手になってから、ネットニュースが結構取り上げられまして、ネットニュースは今はもっとSNSが多く、スタッフになった時もネットニュースでいろんな人とやり取りをして議論を重ねるとか、そういうコミュニティの面白さにハマったんですね。だから、面白かったからその続きをやったら、僕らも面白いし学生さんも見た人は面白そうだと思ってくれるんじゃないかと。その中で、学生さんがみんなやっていることで言えばX(旧Twitter)がやっぱり一番簡単だと思うから、X(旧Twitter)をやったりというものはあります。ただ、学校の先生がX(旧Twitter)に入ってくることに反発があるという人もいるので、それは申し訳ないとは思うんですけど。反応してくれる人もいるので、なんとかやっていくという感じですね。
基礎プログラミング演習の特色としては、半期でRubyとC言語の2つ行うというのが結構特殊かなと思うのですが、この意図についてお聞かせください。
まず、プログラミングを初めて習うときに型があるのはちょっと大変だから、Rubyのようなスクリプト言語は絶対いいと思いました。でも、型も必要なときもあるだろうから、終わりの方では型も学ぶと。そういう風に、2つっていうのはしょうがないことだと思ってますね。
Cについては、電通大では他のカリキュラムでC言語を中心とした科目が結構多いので、Cがないといろいろ不便であるってことでCをやってるんで、もし、可能ならJavaとかでやってみたかったんですけども、電通大の場合は他の科目との関係でCという感じですね。
もう一つ、コンピュータリテラシの独創的な点として、アセンブリ言語を自分で入力して、小さなコンピューターのシミュレーターを実行する、という回があります。現代において、コンピューターサイエンスを専攻する学生はアセンブリ言語を実際に使用する機会は少ないんじゃないかと思うんですけれども、このカリキュラムを用意した理由について、お聞かせください。
アセンブリ言語を学ぶことが大事というよりは、コンピューターの原理を理解することが大切です。コンピューターってこんな単純なことしかできないんだけど、それがものすごいいろんなことができる。そういうことが、プログラミングを学ぶ理由じゃないですか。その過程で、アセンブリ言語を学んだり、じゃあコンピューターってロジカルにこういう風に動くんだな、と理解したりすることは大切です。しかし、「コンピューターとはこういうもの」という説明の後、急にC言語などのプログラムを学ぶとなると、その間の過程が抜けていくのは良くないというか。コンピューターの中がこういう風になっている、というお話はあっても、それがどういう風に具体的に動くのかが分からなければ意味がありません。少し大変かもしれないけども、1回だけでも実際に動かしてみて、「こういうものなんだ」と実感することは、良い経験になると思ったから、カリキュラムに取り入れています。
では、そういうカリキュラムを独創的に用意されて、その影響というか結果どうだったかっていうのは先生はどう評価されていますか?
1回やってみて良かったかどうかなのですが、授業の評価では「これは良かった」「面白かった」という声は多くありました。しかし、最後まで行った学生にとって本当に良かったかどうかは、私のところではわかりません。そういう意味では、ぜひ皆さんのほうで調べていただけると面白いと思うんですけど、僕も実際のところどうだったか気になりますね。
先生にとってはRubyは結構重要な言語というか、入門として適切という認識ですか?
スクリプト言語の中では一番自分が書きやすいし、良いと思ってます。ただ必要があればPythonでもPerlでもなんでも書きますけども、この2つに比べて言えば、Rubyは非常によいと思っています。
コンピュータリテラシー/基礎プログラミング演習での試験は、短冊型のプログラミング試験がよく出題されていますが、この形式になった理由をお聞かせください。
コンピュータリテラシーの場合は、一部が短冊型なんですけども、とにかくこの2科目は全学の人が受けるので、すごい人数が多いですから、CBT/自動でテストをして自動で採点するというふうにしないと、自分たちの首を絞めるというか大変なんですね。だから、自動採点をするようにしてたけど、センター試験みたいな穴埋めを作るのも大変なんですね。短冊型はいわゆる普通のプログラムで、こういうプログラムを書けっていう文章と短冊があればできるので、簡単にできる。それから、穴埋めっていうのは、プログラム書かなくても、こういうふうな穴は大体こういうふうに埋めるんだというふうに解けてしまうことがあるんだけど、短冊型は普通のプログラムが書けない人にはなかなか難しいですよね。だから、そういう意味で、短冊型もいいなと思って、採用した。短冊型そのものは、その前から研究としてやっていたんだけど、大規模に採用してもらったのは、この2つの授業が初めてですね。
じゃあ、先生の研究の集大成というか。
はい。その前に、様々な情報教育の中で、プログラムの問題だとか、部分的には最初は自動採点ができなくて、手動で採点ってやってたんですけど、それは大変だから、自動採点しようとなった時に、短冊型を作ったらいいんじゃないかなと思って作ったんですね。そうしたら、それと同じような短冊型はアメリカでも先行研究があったので、深堀りしてだんだん仕上がって現在の形になった感じです。
情報教育の自動採点とCBTのテストの実施っていうのは、共通テストとかでも結構議論がある内容だと思うのですが、先生はどう思われますか?
自動採点、CBTができれば絶対楽なのですが、今は機材とかが問題なんですね。ただ、電通大も一部の試験ではCBTがだんだん増えてくると思います。短冊型は別にどうとでもできるけれども。自動採点でない場合は別に記入欄に記入してもいいわけで、そういうくらいできるんですね。
-短冊型とは別に、競技プログラミングみたいに正解不正解を自動判定するっていう手もあったと思うんですけど、これについてはどう思われますか?
それは途中まで研究していたのですが、今は病気になり、その部分は止まっています。あくまでも正解・不正解の自動判定というよりは、「あなたのプログラムはこういうところに気が利いている」ということを、ある程度自動的にアドバイスしてくれた方が良いのではないか、というような研究もしていました。それは一回だけ発表し、一応それで表彰も受けました。
基礎プログラミングの最後の授業で総合実習として映像を作るという授業がありますが、あれは先生としてはどういう意図で組み込まれた授業でしたか?
自分の思ったものを作る、それを一番はっきりと分かる形で表現できるのが画像であり、動画です。「これは俺の作った画像だ、これは俺の作った動画だ」と実感できるのは、自分で考えたものでなければなりません。そういう意味で、題材として扱いやすいという点が一つ。もう一つは、動画も絵も原理はシンプルです。二次元配列に色を入れれば絵になり、それを時間経過に合わせてたくさん用意すれば動画になります。だから、そうした環境で覚えてもらえば、比較的すぐに制作できるようになります。学ぶのは簡単で、自分が得意なものを形にできるのです。そういう点で、離陸ファーストに非常に良い題材だと思うからやってたんです。
最後の総合実習の回は、チームでの演習になりますが、これにも意図などはありますでしょうか。
それはもちろん。皆さんが仕事でソフトを作ると、一人で出来る仕事なんですけども、少し大きくなると、複数の人がチームでやることになりますね。そういうチームでやるということは絶対必要なので、1年生の早い段階ではあるんだけど、何人かで分担してやるというものを、一回経験してほしいと。そういう経験を持って、先に進んでほしいと思ったから、絶対入れようと思ってたんですね。もちろん、そういうのをやると、全然仕事しないで、レポート出すとかそういう人はいっぱい出てしまうことがあるんですけども、でもそれも、15回の1回ぐらいはそういうことになってもいいんじゃないかと。
先生はほとんどもう、基礎プログラミングとかコンピュータリテラシーには関わられてないって聞いてるのですが、今の先生から見て、コンピュータリテラシー/基礎プログラミングに何か手を加えるとしたらなにかあるでしょうか
LLMのための対応をどうするかっていうのが重要なことで、それは非常に難しいものだけど、やらなきゃいけないかなと思います。ただ、それは僕も今のところアイデアがないので、思ってるだけ。もう1つは、あまりやる気がない人にも、これは面白いんだということは納得してもらうのに、もっと広報するという、広報の努力がちょっと足りなかったなと思っていますね。その2つですかね。
では最後に、コンピュータリテラシー、基礎プログラミング演習を受けている学生に向けたメッセージをお願いします。
この2つの科目が必修なわけで、どうせ受けるなら楽しさとか、コンピュータとかプログラミングとかを身につけていけるといろいろ便利というか、楽しさとか面白さとか、そういうものを思うので、その分大変かもしれないけども、せっかく来たんだから自分の時間を投資してやっておいた方が人生にとって役に立つと思う。ぜひやって欲しいですね。