上田研究室のプロフィール (学部新4年生および新3年生プロジェクト研究用紹介資料)

研究室ホームページ - 研究分野紹介 - 上田研究室Q&A集 - 読み物

2024年 研究室相談会日程

2024年度は, 上田の退職時期の関係から,新4年生はB4配属のみの募集となります.
なお,新3年プロジェクト研究は応募可能(+歓迎)です.

下記の時間帯を予定しています.場所は63号館05-22上田研究室です. 変更の場合には本ページで周知します.
対面とオンライン双方への対応などのために一時的に席をはずすことがありますが, ほどなく戻ってきます.
  • 3月18日(月) 11:00〜13:00, 14:00〜17:00
  • 3月19日(火) 11:00〜13:00, 14:00〜17:00
  • 3月21日(木) 10:30〜12:00

これらの時間帯は,アポなし訪問OKです.気軽に立ち寄ってください. 事前または直前の連絡も歓迎です.連絡先メールアドレスは ueda --at-- ueda.info.waseda.ac.jp(--at-- は @ に変換)です.

研究室紹介スライド+説明文(学科配布のものと同じです)

上田研究室 Q&A集 を作成しました.参考にしてください.

指導教員への質問や相談がありましたら,遠慮なくメールで送ってください.

目次

研究分野

先端的プログラミング言語(設計論+理論基盤+処理系構築)高信頼なソフトウェアの構築・検証技術を開拓しています.コンピュータサイエンスの最もコアな領域に軸足を置き,並列処理や人工知能などの関連分野の新技術を総動員して「21世紀のコンピューティングパラダイム」を確立することを目指しています.

研究内容の詳細

「難しい(と考えられている)機能を実現する」「高性能で」「結果の正しさが保証された」ソフトウェアを明快に構築する技術の研究を行っています.これには思考と記述の道具であるプログラミング言語が大切な役割を果たすという考えのもと,「既存の言語では実現困難なことができる」簡明で高機能なプログラミング言語の設計・処理系構築技術と,それを支えるさまざまなアルゴリズムの開拓を推進しています.我々が対象としているソフトウェア技術や言語は人工知能分野で培われてきた基盤技術(制約処理,探索,自動定理証明等)と大変深い関係にあり,人工知能とプログラミング言語の接点で挑戦的研究を推進し,プログラミングの未来を見据えたさまざまなコンセプト発信を行っている,ということもできます.

多様なソフトウェア分野の中で上田研究室で特に意欲的に取り組んでいる領域は,

  1. 多数のCPUやプロセスが分業・協調動作するソフトウェア
  2. まったく新たな考え方やアルゴリズムを必要としているソフトウェア
  3. 連続変化と離散変化の両方をもつハイブリッドシステムを扱うソフトウェア
  4. 高機能な3D印刷のための先端プログラミング技術
です.1. は並行・並列・分散処理に,2. は知識情報処理に,3. はシミュレーションやアニメーション,さらにはサイバーフィジカルシステム,4. は3Dプリンタによるものつくりに深く関連していますが,いずれも従来の方法論では十分な機能,性能,信頼性を実現するのが困難なことで共通しています.そこで 研究室の最大の世界的貢献分野である宣言型プログラミング言語の設計と実装に関する蓄積を土台に,以下のプロジェクトを柱として,理論と実際のシステムソフトウェア構築の双方に深くまたがる研究開発を学生諸君と共同で推進しています.

  1. 統合プログラミング言語LMNtal.

    ポインタを駆使した複雑な計算から,λ計算,並行並列計算,自己組織化に基づく計算に至る多様な計算パラダイム(「計算とは何か」に関する基本的考え方)を簡潔な形で統合する言語LMNtal (elementalと読みます)とその処理系・検証系(十数万行規模)の開発を進めています.処理系開発には皆さんの先輩が驚くべき才覚とパワーを発揮して,成果はGitHubで公開 されています.ソフトウェア検証から計算の可視化,統合開発環境まで,皆の力を結集して多方面に研究が展開しつつあります.言語自体も,学生のさまざまな提案を取り入れて進化を続けています.

  2. 高性能並列計算とその大規模検証への応用.

    上田研究室では並列処理を「当り前の技術」にすることに強いモチベーションを持っており,強力な計算パワーをソフトウェアやシステムの品質保証に使うための高性能検証 (high-performance verification) の研究を推進しています. たとえば上記のLMNtal言語処理系も,大規模な探索問題や検証問題のための並列検証エンジンが大きな特徴となっています. 2万コアGPUマシンや1TBメモリマシンなど,多様な並列コンピュータを保有しており,各自が占有利用できます.

  3. 制約プログラミングとそれに基づく知識情報処理.

    人工知能における制約充足技術の新たな応用を開拓しています.たとえば,プログラムのバグを自動的に検出し,さらに修正する世界オンリーワンの完全自動デバッガ Kimaがここから生れました.
    最近は 連続値と離散値を厳密かつ統合的に 扱うプログラミング言語HydLaの開拓を推進しています.一人の学生が始めたアニメーション記述の研究が発端ですが,それが物理学や制御工学,数式処理から精度保証数値計算までが関わり合う学際プロジェクトへと広がってきました.HydLaの処理系や統合環境もGitHubで公開しています.
    高機能3D印刷のための言語技術の開拓にも着手しています.

多くのプロジェクトが国の科学研究費等によって長年支えられてきており,成果のほとんどはGitHub等からオープンソースソフトウェアの形で発信しています. 論文成果だけでなくソフトウェア成果を発信しつづけている点は当研究室の重要な特徴です.本格的なソフトウェアはOS等の動作環境の変化に弱いですが,我々のソフトウェアは保守改良に不断の努力を重ねており,20年前の先輩の書いたコンパイラのコードがきちんと動き,実際に活用されています.

当研究室の分野は,アルゴリズムとデータ構造,計算機システム,プログラミング言語など幅広い基礎知識を必要としますが,それは最先端の研究に必要な基礎体力のようなもので,またIT分野の世界有数企業のトップが一番求めている資質でもあります. 我々の分野においてはさらに,頭の柔らかさや遊び心も重要かもしれません.

研究設備

各班が並列計算機やメニーコア計算機をそれぞれ持ち,先輩諸君はその構築と管理を通じて知識や技能を身につけてきました.並列機としては共有メモリEpycサーバ(48-core Epyc,2ノード96CPU, 512GB共有メモリ), Xeonサーバ2機 (8-core Xeon, 4ノード32CPU, 1TB共有メモリおよび10-core Xeon, 4ノード40CPU, 256GB共有メモリ),共有メモリ Opteronサーバ (12-core Opteron,4ノード48CPU, 256GB共有メモリ) をはじめとするさまざまな接続形態をもつマシンを保有しています.

2020年度は RTX 3090を2台搭載した2万コアGPUサーバが導入され,2022年度は A6000を2台搭載した2万コアGPUサーバが追加導入されました. 最近導入した3Dプリンタも大活躍しています.

設備は常時更新を続けており,学生諸君の意見が機種選びに反映されます.

人員構成

2024年度は教授1名,秘書1名,博士課程3名,修士課程8名でスタートする予定です. 一部のゼミには共同研究先の大学および企業(日立,三菱電機等)の研究者も参加します.海外(英国等)の大学との合同ゼミ等も定期的に行っています.

学会発表

日本の関連学会は,情報処理学会,日本ソフトウェア科学会,人工知能学会です.上田はこれらの学会の学会誌・論文誌編集長(「情報処理学会論文誌:プログラミング」および日本ソフトウェア科学会機関誌「コンピュータソフトウェア」)や役員(日本ソフトウェア科学会,人工知能学会)をつとめてきています.

卒業研究でも,新規性の高いものは,査読のある論文誌や会議で発表できます.卒論を発展させた研究が日本ソフトウェア科学会の論文賞を受けたこともあります.研究に国境はないので,海外の人の目にふれるように英語で発表することも非常に重要です.修士課程で第一線の国際会議で発表をする学生もいます.

研究論文ばかりでなく,有用なソフトウェアを日本から発信することも重視しています.また,学外とのさまざまな共同研究プロジェクトがあり,それに関わることによって,外部の研究者や学生と交流をもつ機会があります.

研究室行事

全体ゼミは週2回,4〜5限に開催しています.このほかに研究グループごとの班ゼミを各班週1回開催しています.4年生はまず
英語の原書または重要論文の輪読を行います.その他に自発的な原書勉強会が行われることもあります.

夏合宿では,原書講読,システムソフトウェア読み会,ハッカソン(+レジャー)などが企画されます.過去の題材は本ページ下部を参照してください.言語処理系の開発合宿もプロジェクトごとに開催され,研究基盤の整備,スキル向上,親睦に役立っています. (今年度はできませんでしたが) 充実した調理器具で 本格的料理を作る宴会(作って食べることはプログラミングに通じます)が月1回のペースで開催され,懇親を深めるのに役立っています.

就職先

大手電機やNTT系を中心とする大企業への就職が長らく中心でしたが,最近は多様化しており,ITベンチャー企業から始めて数年ごとにステップアップしてゆく学生も着実に増えてきています. 研究開発職を志す人の割合が比較的高いのが特徴で,実際に多くのOBが,NTT, 日立,三菱電機,富士通,NECなどの研究所で活躍しています.

就職してテーマが変わる人ももちろん多いですが,コンピュータサイエンスの基礎系の学識は多くの場面で長期間役立ちます.学生時代と就職してからで,驚くほど研究内容に変化がない人もいます.

指導教員からのコメント

研究室のモットーは「物事の本質がわかり」「変化に強い」研究者・技術者を輩出することで,
  1. コンピュータサイエンスの諸分野のクロスオーバー,
  2. 乖離しがちな理論研究と実践研究との統合,
  3. 10年くらいでは古くならないコンセプトや基本原理の追求と確立
を特に重視しています.「本物」にふれて力をつけることを重視しており,分野を代表する原書,並列マシンの実機,大規模ソースコードなどと格闘します.アイデアは論文にするだけでなく,実際にシステムを構築・公開して人に使ってもらうこと,すなわち「理論とものつくりの融合」を心がけています.
  • 優れたアイデアの芽は日常の議論や雑談の中から多く生まれます.そしてそれを結実させるには「没頭する」ことが肝要です.地頭を鍛える最善の方法は研究室によく来てその環境を最大限利用することで,そうした人は例外なく良い成果を残しています.
  • 情報系を専攻する学生には,(i) コンピュータが大好きであることと,(ii) コンピュータサイエンスに,先進技術の単なる集合体ではなく,数学や物理学と比肩しうる強固な学問としてに取り組むというと決意を持つことを期待しています.
  • 指導教員が,コンピュータサイエンスや情報技術をどのようにとらえ,どのようなビジョンで研究に取り組んでいるかを知ることが有益だと思います.ここにある読み物のいくつかを読んでみて下さい.教員の学外活動も参考になるかもしれません.
  • 興味をせばめることなく,自分の本当の興味分野の周辺にも関心を持つことを勧めます.他人より広い視点でものを見る能力が独創的な研究につながります.ソフトウェア系の研究室ですが一方では3D印刷技術とソフトウェア科学・工学の融合研究が始まり,他方では数学の自主ゼミが開催されます.これも知的なバランスや広がりに有益と考えています.
  • 社会に出たOBから後輩へのアドバイスでもありますが,配属されてから卒業(大学院修了)までの間が,定年後を除けば,一番自由な研究ができる時期です.このチャンスを有効に活用してくれるよう期待します.

過去の4年輪読ゼミの題材

和訳がない原書の講読が中心です.丹念に読んで学生諸君が発見した誤りを原著者に伝えて感謝されたことや,改訂版の謝辞に掲載されたことも少なくありません.

過去の夏合宿の題材

1年ごとに,数千行以上のシステムソフトのソース読み会と,本や論文の読み会を交互に行なってきました.2001年度に初めて開催したプログラム書き会が好評だったのでそれからはプログラム書き会が主流となっています(「ハッカソン」という言葉が流行するずっと前からハッカソンが定例行事だったことになります).
最近のお題は実験的かつ挑戦的で,研究や授業の立ち上げともつながっています.
  • 1995年度: GNUSソース(Emacs Lisp)読み会(銚子)
  • 1996年度: M.K.McKusick et al. The Design and Implementation of the 4.4BSD Operating System, Addison-Wesley, 1996 読み会(西伊豆・井田)
  • 1997年度: KLIC (KL1-to-C compiler + runtime) ソース(C + KL1)読み会(河口湖)
  • 1998年度: B.C.Smith, Reflection and Semantics in Lisp, POPL'84 論文読み会(清里)
  • 1999年度: J. Lions, 岩本信一訳,Lions' Commentary on UNIX ,アスキー出版局,1998 (解説つきソース,C + PDP11アセンブラ)読み会,および富士通沼津工場見学会(沼津)
  • 2000年度: S. Abiteboul, P. Buneman, D.Suciu: Data on the Web: From Relations to Semistructured Data and XML, Morgan Kaufmann, 2000 読み会(奥多摩)
  • 2001年度: みんなでSchemeプログラムを書く会(水上)
  • 2002年度:ACMプログラミングコンテスト問題を好きな言語で解いてみる会(秩父)
  • 2003年度:好評につき再度,ACMプログラミングコンテスト問題を好きな言語で解く会(河口湖)
    • 正答者の使用言語: C, C#, Java, KL1 (KLIC), Perl, Prolog, Ruby.
  • 2004年度:“Hybrid CC 祭り”− ソース(C言語)解読+使う会(伊東)
  • 2005年度:皆で実機ロボットの制御プログラムを書く会(越後中里)
  • 2006年度:モデル検査(検証)ツール SPIN を皆で使う会(北志賀)
  • 2007年度:SATソルバをエンジンとしていろいろな問題を解く会(武尊)
  • 2008年度:Beautiful LMNtal Code − LMNtalまたはLMNtalモデル検査器でいろいろな問題を解く会(伊豆稲取)
  • 2009年度:各班の開発ソフトウェアを並列化・マルチスレッド化する会(越後中里)
  • 2010年度: D.Kroening and O.Strichman: Decision Procedure, 2008 を一気に読破する会(伊豆・河津)
  • 2011年度:皆で新型実機ロボットの画像認識+制御プログラムを書く会(白馬)
  • 2012年度:皆でCUDAプログラムを書く会(伊豆・稲取)
  • 2013年度:特製・プログラミング競技会(鬼怒川温泉)
  • 2014年度:Robert Love: Linux Kernel Development (Third Ed.) 読み会+Linuxカーネルプログラミング演習(安房小湊)
  • 2015年度:PrologでDSL (Domain-Specific Languages) を実装する会(蓼科)
  • 2016年度:ロボットビジョンロボットでの球技に挑戦する会(伊豆長岡)
  • 2017年度:AI Planningツールを用いたプログラミングコンテスト(白馬)
  • 2018年度:C++を用いた並列プログラミングコンテスト(水上)
  • 2019年度:Erlang/KLICを用いた並列プログラミングコンテスト(西伊豆堂ヶ島)
  • 2020年度:3グループに分かれてオンラインハッカソン(オンライン)
  • 2021年度:WebHydLaを完全に理解する会(オンライン)
  • 2022年度:CUDAプログラムを書いて2万コアGPUマシンで走らせる会(白馬)
  • 2023年度:Rustを用いたマルチスレッドwebサーバ構築ハッカソン(裏磐梯)
Last update: March 19, 2024
ueda --at-- ueda.info.waseda.ac.jp