メモ:卒業研究について

ここでは、田村研の卒業研究を目指す人に、その内容や方法論を紹介しています。

卒業研究=「研究」+「調査」+「開発」+「実験」

卒業研究というと、「一体何をするんだぁ?」と思う人が多いかもしれません。その中身を非常に簡単に述べれば、上のようになります。このうち、小学校から大学まで学んできたなかで、全く経験がないのが「研究」と「調査」かもしれません。

研究

研究は、一言でいうと「今までにない、新しく自分が考えたことを提案する」ということです。この「新しいこと」は、分野によって少しニュアンスが違います。

  • 工学系:今まで解決されていなかった問題を解決する
  • 理学系、社会科学系:今まで解明されていなかった現象の原因を解き明かす/証明する
  • 人文科学系:今まで発表されなかった新しい仮説・学説を提案する
    (大雑把な説明なので、異議を唱える人がいるかもしれませんが、ご容赦を)

田村研は情報工学の分野に属するので、上記のうち工学系のアプローチをとります。また、学生諸君が自分で問題を発見し、それを解決する方法を自力で提案することが理想なのですが、はじめて研究に携わる場合には上手に問題を発見・設定できない場合もあります。こういった場合は教員と相談しながら対象問題や解決方法を設定します。具体的な研究の分野については後述します。

調査

さて、いきなり「今まで解決されていなかった問題を解決してみよう」と言われても、こうしてよいかわかりません。このため、先人たちがどんな問題を取り上げ、それをどのように解決してきたかを学ぶ必要があります。これを「勉強」と称する人もいますが、田村はちょっと違和感を覚えますね。というのは、皆さんが小学校以来経験してきた「勉強」と、研究のための「調査」は少し違うからです。

小学校以来、皆さんは教科書を読み、理解することで勉強してきました。この教科書にどんな内容を盛り込み、どんな順序で勉強すると良いかということを、誰が決めたんでしょう?日本では、高校までの教科書の内容は文部科学省が決め、「学習指導要領」という冊子にまとめています(大きな書店で扱っていますので、興味のある人、教職を目指す人は読むとよいでしょう)(大学で使われる教科書には、学習指導要領はありません)。学習指導要領の是非を巡る教育学的な議論は多々ありますが、ここでは割愛します。ここでの焦点は、皆さんはこれまで、先人たちが知恵を絞って効率よく勉強できるように体系化された教科書で勉強してきた、ということです。

この教科書をもとにした「勉強」に対し、卒業研究で行う「調査」では、必ずしも予め体系化された概念構造やまとまった読み物があるとは限らないのです。このため、先人たちの研究成果を読み(これを先行研究調査と呼びます)、その断片的な情報をもとに、自分で体系を作り、また「今まで解決されていない問題」を探します。

ですので、「用意され、体系化されたことを効率よく吸収する」ことに慣れ親しんできた方は、卒業研究の「調査」に違和感を覚えると思います(現にそういう学生を多数見てきました)。逆に、教科書を用いた勉強のなかで「なんでこういう内容を勉強しなきゃいけないの?自分でいろいろ考えたいのに」と疑問を持ったことのある方は、こういった「調査」、すなわち自分で体系を作り上げていく事に興味を覚えるかもしれません(田村自身は後者のタイプです)。

では、こういった「調査」は、社会人になってから役に立つんでしょうか?実は、「ある職種には大いに役立つ」のです。ルーティンの仕事をこなす仕事ではなかなか役に立ちませんが、調査や企画といった仕事は多くの企業で行われ、しかも近年重要な位置を占めるようになっています。卒業研究のために調査した知識そのものが社会人になってから直接役立つとは限りませんが、調査の方法論や実際の試行錯誤の経験は、卒業後に無用になることはありません。

開発

田村研は情報工学の分野なので、問題解決の道具としてコンピュータのプログラムを使います。従って、卒業研究の活動のなかで、かなりの時間をプログラミングに費やすことになります。実際の開発に用いるプログラミング言語は何か?これは、研究対象によって異なります。いままで田村研で使ってきたプログラミング言語は:

  • C
  • Java
  • JavaScript
  • PHP

などです。では、これらのプログラミング言語を学ぶ講義や実習を卒業研究に組み込んでいるか、というと、答えは否です。「なんと乱暴な!」と憤る人もいると思いますが、情報理工学科のカリキュラムでは1年次から手続き型プログラミング言語の実習を組み込んでいます。これらの実習を通して、皆さんは手続き型言語の文法、コンパイルや実行の仕組み、デバッグのノウハウなどを学びます。これらの知識やスキルは、特殊な分野の言語でない限り、一回習得していれば、類似の言語にも短期間で応用できます(別言すれば、この応用スキルがITエンジニアのスキルの1つだと考えています)。

実験

プログラミングの授業では、実験を行ったことはないと思います。プログラムを作ったら、それが自分の意図どおりに動くか検証して、それで仕事が終わりになりますよね。IT系の企業に就職してシステム開発を行う場合も同様で、プログラムを作ってデバッグすれば、それで顧客に納品できます。ところが、田村研ではデバッグすれば終わり、ということになりません。なぜでしょうか?田村研の研究対象は、ソフトウェアそのものではなく、ソフトウェアを使って学習する生徒や学生です。ソフトウェアは学習するための道具であって、そ れを使って学習活動が改善されたか否かが問題なのです。ですので、皆さんが作ったプログラムを使って学習の実験を行い、その改善度合いを測定します。

一方、教育工学という分野が立脚している基礎としての認知科学では、必ずしもプログラムを開発する、というプロセスは含まれません。認知科学分野の研究では、<仮説設定>ー<実験設計>ー<実験>ー<集計・仮説の検証>というプロセスを組みます。

そこで、ITを基礎とする教育工学研究では、プログラム開発のプロセスと認知科学研究のプロセスを組み合わせて行う事になります。これを図示すると以下のようになります。