近年のソフトウェア開発プロジェクトの複雑化は,ソフトウェアの保守にかかる時間的コストを増大させている.保守作業において最も時間的コストがかかる作業は,既存のソースコードの読解作業であるとされ,コスト削減のためにソースコードの可読性を高めることが重要である.可読性向上の方法の1つとして,ソースコード中の変数や関数の識別子名を日本語で書くことが有用であるとした報告はいくつか存在する.しかし,識別子を日本語入力する際には,文字変換の手間があることや入力補完が効き辛いことが原因で,プログラマに入力の負担が発生してしまう.本研究では,日本語識別子をより扱いやすくすることを目的として,ローマ字入力による日本語識別子の入力補完を可能とするプラグインの作成を行なった.また,作成したプラグインを用いて被験者に日本語識別子の入力を行なってもらい,入力の負担を軽減できたことを示した.
近年,大規模グラフを分散並列処理する需要が高まっている.頂点主体並列グラフ処理モデルとしてPregelが提案されたが,ユーザがメッセージ送受信や頂点の非活性化を手続き的に記述する必要があり,煩雑で分かりにくいという問題点がある.Fregelは,頂点主体並列グラフ処理を行うプログラムを記述するための領域特化言語であり,各頂点の計算を宣言的に関数として定義し,簡潔で見通しの良い記述を可能とした.Fregelのコードは,コンパイラを通してGiraphや Pregel+ 等のコードへと変換されるが,現状のコンパイラでは出力されるコードの最適化が不十分でオーバーヘッドが大きいという問題点がある.本論文では,メッセージに対する操作に最適化が可能な代数的性質があるかを判定し,可能な場合に,メッセージ送信の削減・状態の非活性化等の最適化を施すように,Fregelコンパイラを拡張した.実験の結果,手書きのプログラムと比較し,実行時間が1.3倍未満に収まるようになった.
CoqやAgdaなどの定理証明支援系では,依存型を使ってプログラムの性質を正確に記述することができる.一方,依存型付き言語の多くは,副作用を許さないという制約もつ.これは,副作用の動的な振る舞いによって型が静的に定まらなくなることによるが,副作用の欠如は実用的なプログラムの実装の妨げとなるため,適切な制約を設けながら,依存型付き言語に副作用を導入する試みがなされてきた.本研究では,限定継続命令 shift/resetをもつ依存型付き言語を考える.shift/resetはさまざまな副作用の模倣を可能にするが,その応用例や型システムは単純型付き言語で考えられてきた.本稿では,shift/reset と依存型を組み合わせるために必要な制約を明らかにし,健全な型システムを定義する.また,設計した言語に対するCPS変換を与え,変換が型を保存することを証明する.
帰納的定理は項書き換えシステム(TRS)における重要な特徴付けの一つであり,帰納的妥当性は条件付き項書き換えシステム(CTRS)においても自然に定義される.書き換え帰納法は帰納的定理の証明法であり,従来知られている基本的な書き換え帰納法は,項書き換えシステムにおける等式帰納的定理を対象としている.本論文では,決定的な3型指向式CTRSにおけるホーン節(条件付き等式)帰納的定理の自動証明法を提案する.まず,条件付き項書き換えシステムを扱うために,指向式CTRSからTRSへの変換であるアンラベリング変換を利用する手法を提案し,そのアプローチが適用可能なCTRSのクラスを明らかにする.次に,帰納的定理についても,等式だけでなく,等式のホーン節を扱えるように書き換え帰納法の拡張を行い,提案手法の正当性を証明する.提案手法に基づく帰納的定理自動証明システムの実装および帰納的定理証明の実験結果を報告し,提案手法の有効性を明らかにする.
アプリケーションのパフォーマンス改善において,実行時間を解析するプロファイラは有用と思われる.しかし,既存のプロファイラは特定の実行シナリオのもとプロファイリング時間を事前に設定する必要があり,実行シナリオなしでシステムのボトルネックを見つけることは難しい.また,各メソッドごとの実行時間を表示するインタフェースはソフトウェアの階層構造上における実行モジュールの位置などを把握することが難しい.これらの課題に対処するため,リアルタイムでパフォーマンス分析可能なソフトウェア都市可視化ツールHeijoを提案する.提案するプロファイラでは,アプリケーションの実行は3次元のソフトウェア都市として可視化され,アプリケーションのソフトウェア構造と実行のパフォーマンスが表現される.提案するプロファイラを使用して実際のJavaアプリケーションおよびAndroidアプリケーションのプロファイリングを行い,提案するプロファイラの有用性と実用性を確認した.