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

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

お知らせ

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

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

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

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

配属情報

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

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

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

面談には予約が必要です. 前日(月曜の予約は金曜)の正午までに鵜川の居室(A417)前に貼ってある予約表に学籍番号と名前を記入してください.

面談をスムーズに行うために,アンケート を印刷し,記入して面談に持参してください.

研究室の特色

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

難しそうに感じるかもしれませんが,そう心配する必要はありません. 研究を始める前にプログラミングの練習などを通してプログラミングスキルを磨いていきます. プログラミングが得意な頼りになる先輩たちもいます. 夏休みには自由な課題でソフトウェアを作ります. これまでの学生さんは,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, 広くは表計算ソフトのセルに記入する式などもドメイン特化言語です. ドメイン特化言語は,目的としている用途に特化しているため,その目的 に限っては非常に使いやすくなっており,汎用言語と比べて簡潔な記述 ができます.

先輩の研究テーマ

JavaScript

バグ発見機

その他

連絡先

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