著者
福室 嶺 千葉 滋
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.9, no.4, pp.16-26, 2016-09-12

本論文では,有効範囲を既知のコールパス上に限定することで安全に利用できるクラス拡張method sealsを提案する.クラス拡張は既存のクラスを拡張するための言語機構であり,RubyやAspectJ,C#など様々な言語に取り入れられている.クラス拡張を用いることで,既存のクラスに対してソースコードを書き換えることなくメソッドの追加や再定義を行える.しかし,クラス拡張はモジュラリティの向上に寄与する一方で,誤動作を引き起こしやすい.これはクラス拡張どうしの衝突や,クラス拡張が想定外の領域で有効になることが主な要因である.こうした問題を解決するために,プログラマのコードに対する理解度に応じてその有効範囲を段階的に拡張できるように設計されたクラス拡張method sealsを提案する.本機構では,プログラマにとって未知のパッケージのコードはブラックボックス内にあると見なし,クラス拡張が無効になる.また,ブラックボックス内から発するコールパス上ではそれ以外のコードも一時的にブラックボックス内にあるものと見なす.これにより,クラス拡張がブラックボックス内のコードに対して予期せぬ影響を与え,ひいてはプログラム全体の誤動作を引き起こすことを防げる.本研究ではRuby処理系上にmethod sealsを実装し,いくつかの条件下でその実行性能を評価した.