「対話型環境を持つ分散型スクリプト言語の設計と実装」(2014年度 修士論文)

修論タイトル

「対話型環境を持つ分散型スクリプト言語の設計と実装」 (2014年度 修士論文)

氏名

工藤 朋哉 <kudo@spa.is.uec.ac.jp>

概要

コンピュータの進化に従い、CPUのコア数は増加し、コンピュータは様々な並列処理により性能向上を図るようになった。 またビッグデータの普及などに後押しされ、1台のコンピュータだけではなく複数のコンピュータを用いて処理を行う分散処理も一般的になってきている。 しかし並列分散プログラミングは逐次プログラミングと比較して複雑である。 同期の問題、並列処理に適したアルゴリズムの選択、非決定性によるテストの難しさなど、考慮すべき点が多い。

の問題を解消するため、従来より並列分散プログラミングを使いやすくするためにさまざまな研究が行われている。 しかしその対象はCなどの低レベル言語向けのものが多くを占め、Rubyのような軽量スクリプト言語が取り扱われることは少ない。 低レベルな言語は高速であるが、開発が難しく、生産性が低くなる傾向がある。 級言語は低級言語と比較して絶対的な速度では劣るものの、習得のしやすさ、生産性の高さなどメリットもあり、それは並列分散プログラミングにおいても同じである。 本研究では逐次型の軽量スクリプト言語であるRubyに、高度に抽象化された並列分散処理の仕組みと、並列処理に適したデバッグ手法を提案し、実装した。 Rubyはクラス定義、ガベージコレクション、強力な正規表現、マルチスレッド、例外処理、イテレータ、クロージャ、Mixin、演算子オーバーロードなどを持つ、非常に多機能な軽量スクリプト言語である。 可読性の高い構文を持ち、整数や文字列なども含め全てのデータ型がオブジェクトであるという純粋なオブジェクト指向言語である。

既存の逐次プログラミング言語に並列分散処理の仕組みを加えた研究の一つとして、Racketを対象にしたKevin TewらのPlacesがある。 RacketはSchemeから派生したプログラミング言語であり、関数型に分類される言語である。 本研究はPlacesを参考に、placeのセマンティクスを取り入れ並列処理の抽象化を実現した。 その上で並列分散プログラミングにおけるデバッグの難しさを解消するため、並列分散プログラミングに適した対話型環境を設計、実装した。

文中では、実際に対話型環境を使用したデバッグ例を具体的に示すことで、本研究のデバッグ手法の有効性を示した。 また考察では主に処理系を実装した上での問題点と今後の課題を示し、RubyとRacketという2つの言語の性質の違いを示した。


[修論pdf]

[プログラムソース]

[研究一覧へ]