森畑研究室
東京大学教養学部 学際科学科 総合情報学コース
東京大学大学院総合文化研究科 広域科学専攻 広域システム科学系

研究目標:プログラミングに産業革命を
 私たちは、あらゆるところにある情報機器と、それを支える情報技術の恩恵を受けて暮らしています。しかし、それを駆動するためのプログラムの作成は、専門的な修練を積んだ人による手作業に頼っています。プログラミングが本物の「産業」として成り立つためには、マニュアル通りにやれば誰でもできるような生産技術が必要です。
 本研究室では、誰でもできるプログラミングを目指して、プログラミングの基礎理論、およびその応用について研究しています。
本研究室のアプローチ
 産業革命を支えたのは、紡績機の発明・改善でした。機械化によって生産性が飛躍的に向上し、熟練の職人でなくても作業できるようになりました。プログラミングにも、このような産業機械、またそれの基盤となる機構が必要です。これを目指し、本研究室では以下の3点を中心に研究を行っています。  本研究室の目標はあなたのプログラミング技術を高めることではないことに注意してください。むしろ、プログラミング技術が低くてもプログラムを作れるようになる・プログラミングのメリットを享受できるようになるような状況を目指しています。

参考:
森畑による講演動画(2022年)
森畑による古い講演動画(2013年)
よくある質問
統合開発環境(IDE)やフレームワーク(例えばNoCode)の研究ですか?
 少し違います。本研究室の主なターゲットはコーディング(プログラムを文字で書き下すこと)ではなくプログラミング(所望の機能を実現するプログラムの構造を特定すること)です。コーディングの改善は、現状行われている作業の効率化・自動化することです。しかし、多くの場合、産業機械は手作業の延長線上にはありません。シャトルや糸車の改善ではなく、新しい紡績機構から産業機械は生まれます。しかも、産業機械を前提にすると、人間の行う作業は根本的に変わってしまいます。
 プログラミングでも同様のことがあるはずです。プログラミングの変化はコーディングの改善の延長線上にはなく、しかもプログラミングが変わればコーディングも変わるでしょう。この発想に基づき、本研究室は、今目の前にあるプログラミング・コーディングの課題を解決するよりも、将来的に大きなインパクトをもたらしうる成果を目指しています。
AIよる自動プログラミングについてはどう考えますか?
 動向を注視しています。現時点で有力な手法は機械学習によるものですが、プログラミング研究の専門家の目から見るといくつかの欠点があります。まず、それっぽいプログラムの作成は得意ですが、論理的な正確さはまだ怪しいところがあります。その結果、「一見正しそうだが、よくよく見ると想像もしないようなところが間違っている」という、困ったプログラムがしばしば得られます。また、データの学習に基づくため、よく使われている言語の定型的なプログラムには強いのですが、比較的マイナーな言語や、ちょっと変わったプログラムは苦手です。これは「目的ごとに特化したプログラミング言語を使うことで、簡潔でわかりやすいプログラムにしよう」という現代の流れには逆行しています。このような欠点を補完するような方法を模索しています。
ソフトウェア開発の研究もしていますか?
 本研究室の中心的なテーマは「プログラミング」です。つまり、(往々にして巨大な)ソフトウェアの開発というプロジェクト全体についての研究よりは、ソフトウェアを構成する(往々にしてそれほど大きくない)各部品の開発を主に扱っています。連携して研究を行っている中丸智貴助教の研究テーマも参考にしてください。
所属学生の研究成果
対外発表
修士論文
卒業論文
本研究室に向いている人・あまり向いていない人
 本研究室には、現状のプログラミング・プログラミング言語に疑問・不満のある人が向いています。逆に、現状のプログラミングに不満のない人、自由にプログラミングができている人はあまり向いていないかもしれません。
 プログラミングの研究をする以上、現状を知るという意味で、プログラミング言語等について一定の知識が必要です。しかし、高いプログラミングスキルや個々のプログラミング言語についての詳しい知識などは、あればそれに越したことはありませんが、必須ではありません。
 プログラミングに関する技術をソリッドに組み立てるためには、最終的には数学が必要になります。どの程度の数学が必要かは研究テーマやアプローチによりますが、数学アレルギーの人にはあまりお勧めできません。逆に、数学は好きだが純粋数学よりも数学の応用を探求したい、という人は楽しめる可能性があります。
研究テーマ例とそれに関連する文献
以下に典型的な研究テーマ例を挙げますが、これらに限らず、プログラミング・プログラミング言語にまつわる研究テーマであれば広く扱っています。
プログラムの自動並列化 p
プログラム変換 p
プログラム自動合成 p
宣言的プログラミング p
プログラム運算 p
研究室に参加したい方へ
<研究室に参加したい方へ (How to Join Our Laboratory)>
関連研究室・研究者

<back>
Akimasa Morihata, 2024