プログラミング言語研究室(鵜川研)配属情報

鵜川のホームページに戻る

お知らせ

プログラミング言語研究室について

プログラミング言語研究室では, プログラミングやプログラミング言語に関連する研究を行っています. JavaScriptのプログラムを実行するための処理系を開発したり, プログラムが正しいかどうかをプログラムを実行せずに調べる方法を研究したり, プログラムを安全に実行する仮想環境を開発したりしています. プログラミングが得意な方や, プログラミングが好きでたくさんプログラムを書きたい方におすすめです. ボードゲームが好きであればなお良いです.

一緒に研究室を盛り上げてくれる学生さんや,一緒にわくわくできる研究を してくれる学生さんをお待ちしています.

プログラミング研究室はA棟3の北の端,A361にあります. 近くまで寄らないと明かりがついていることも分かりません. 階段付近からは休業中のように見えても遊びに来てください.

配属情報

情報通信専攻とコンピュータサイエンス専攻を受け入れます.

配属には鵜川と面談してサインをもらう必要があります.

面談可能な日は以下の通りです.

面談には予約が必要です. 前日(月曜の予約は金曜)の13:00までに研究室(A361)前に貼ってある予約表に学籍番号と 名前を記入してください.ついでに研究室を見学して行ってください.詳しい説明が不要な ら「様子が見たいだけです」と言ってください.部屋の中の案内だけしてくれます.

面談は予約した時間にA417にお越しください.A417にいなかったら申し訳ありま せんがA361に行ってみてください.

面談をスムーズに行うために,アンケート を印刷し,記入して面談に持参してください. TeXを使って似せた様式で作成してもかまいません.

研究室の特色

プログラムを書く研究室です.プログラミングは必須です. 卒業研究では必ずある程度の規模のプログラムを書いて実験する必要があります. 何とか仕様を満たして動くだけのプログラムではなく, 美しくて(保守性が高くて)性能のよいプログラムを作れるようになってもらいます.

難しそうに感じるかもしれませんが,そう心配する必要はありません. 研究を始める前にプログラミングの練習などを通してプログラミングスキルを磨いていきます. プログラミングが得意な頼りになる先輩たちもいます. 夏休みには自由な課題でソフトウェアを作ります (2017年度は希望者だけが参加しました.2018年度は未定です.). これまでの学生さんは,Androidアプリやtwitterクライアントなどを作ってくれました.

出張(旅行)のチャンスが多いのもこの研究室の特色です. 研究がある程度進むと,学会発表(=旅行)に行きます. 4年生の夏には旅行に行って卒業研究の中間発表を行うことを推奨しています. また,他大学の先生や研究者といっしょに研究しているプロジェクトがいくつかあります. プロジェクトで活動すると,他大学での研究打ち合わせ(=旅行)やプロジェクトの合宿に参加できる場合があります.旅行(特に温泉)好きにはおすすめです.

研究室のゼミは松崎研究室と共同で開催しています. 宴会やイベントにも近隣研究室と合同開催のものがあります. 詳しくは研究室のホームページのニュースをご覧ください.

どんな研究ができるのか

プログラムを相手にした研究をしています.究極の目標は,安心して使える高性能なソフトウェアを簡単に早く作れるようにすることです.(安心して使える高性能なソフトウェアを簡単に早く作れるようになることではありません念のため.) つまり,信頼性の高い(バグの少ない)プログラムを作る手法の開発や,プログラミングを簡単にする言語やツール,ライブラリなどの開発,ソフトウェアを効率よく実行できるようにする言語処理系の開発を行っています. その他にも,オペレーティングシステムやソフトウェア開発などの研究も可能です.

いくつ研究テーマの例を紹介します. 研究室のホームページの研究紹介にも詳しい説明があります.

組込みシステム向けJavaScript実行系

JavaScriptは,最初はウェブページにちょっとした動きを加えるための 言語でした.しかし,ちょっとした動きに留まらず,gmailなどに代表 されるような,本格的なソフトウェアも記述する能力も供えています. しかも,ウェブページの記述に使うので多くの人が使うことができ, プログラムのことは分からないけどJavaScriptなら書けるという人も たくさんいます.ウェブページ以外のプログラミングにもJavaScript が使えれば,多くの人が自分のアイデアを形にでき,世の中を便利にして くれるかもしれません.

JavaScriptを実行するには,JavaScriptの実行系が必要です.組込み システムをJavaScriptで制御できるよに,組込みシステム向けの JavaScript処理系を開発します.組込みシステムは通常のパソコン と比べて性能が低く,さらに,リアルタイムの動作が必要であったり, 消費電力を抑える必要があったりと制限がある場合があります. Google watchなどのウェアラブルデバイス,数千円で買える マイコンもJavaScriptでプログラムできれば楽しいですね.

ガベージコレクション

鵜川の狭い意味での専門はガベージコレクションです.C言語やアセンブリ 言語では,実行中に作られるデータを保存しておくためのメモリの領域は プログラマが管理する必要があります.しかしJavaやC#,JavaScriptなどの 最近のプログラミング言語では,メモリはプログラミング言語が自動的に 管理します.この機能がガベージコレクションです.ガベージコレクションは プログラマには便利ですが,プログラムの実行が遅くなったり,反応が悪く なったり,スマートフォンのアプリではバッテリを消費する原因にもなります. うまくメモリを管理する方法を考えて,それを組み込んだシステムを作り, 目論み通りに性能が良くなっているか実験します.

この分野で世界的に有名なイギリス,ケント大学の Richard Jones のグループと一緒に,最先端のガベージコレクションの手法を研究をしています. また,前職の電気通信大学岩崎研究室とも共同でAndroidのガベージコレクション を改良する研究もしています.将来的にこれらの研究に参加してくれることを 期待します.

バグ発見器

プログラムに間違い(バグ)があると,場合によっては誤動作します. その結果,ソフトウェアの脆弱性になったり,経済的な損失につながったり, 時として人命が奪われることもあります.バグの厄介なのは, 「場合によっては」誤動作するところです.テストではうまく動作して いたのに,本番で誤動作してしまったという経験はありませんか? 通用は,想定されるあらゆる入力に対する動作をテストすることはでき ませんので,テストしていない入力で誤動作する可能性は残ります.

プログラムを実行して動作を確認するのではなく,ソースコードを解析して バグを探せば,テストをすり抜けてバグが残るということはありません. ソースコードを解析して,バグのようなパターンを探すためのツールを 作ります.

ソフトウェアの検証

ソフトウェアの仕様やプログラムの一部を専用の記法(言語)で記述し,計算機を使って自動的に バグを探す,「モデル検査」という方法を研究しています.専用の言語で記述したプログラム は自動的にオートマトンなどの数学的なモデルに変換され,そのモデル上で起こりうる ことを計算機の力を使って網羅的に探します.探索には膨大な計算が必要になるので 他大学のスーパーコンピュータを借りることもあります.

本研究室ではモデル検査のための言語のライブラリの開発や,それを使ったガベージコレクション のアルゴリズムの検証をしています.

ドメイン特化言語

特定の目的に特化したプログラミング言語をドメイン特化言語と言います. 例えば,JavaScriptも(今となっては汎用言語ですが),ウェブページに動 きを加えるためのドメイン特化言語でした.他にも,データベースから データを検索するためのSQL,CGIを用いたウェブページを作るためのPHP, 広くは表計算ソフトのセルに記入する式などもドメイン特化言語です. ドメイン特化言語は,目的としている用途に特化しているため,その目的 に限っては非常に使いやすくなっており,汎用言語と比べて簡潔な記述 ができます. 簡単な記述でAndroidアプリを作れるドメイン特化言語や,インタプリタの 仕様を記述するためのドメイン特化言語を開発しています.

先輩の研究テーマ

JavaScript

バグ発見機

その他

連絡先

鵜川は居室(A417)か研究室(A361)にいることが多いです.
メール:ugawa.tomoharu@kochi-tech.ac.jp