研究課題/領域番号 |
26330089
|
研究機関 | 芝浦工業大学 |
研究代表者 |
福田 浩章 芝浦工業大学, 工学部, 准教授 (30383946)
|
研究期間 (年度) |
2014-04-01 – 2017-03-31
|
キーワード | ステートフルアスペクト / アスペクト指向 / 非同期処理 |
研究実績の概要 |
まず,昨年度末に投稿していた,本研究課題の主目的であるプログラムの実行履歴にマッチするステートフルアスペクトの意味論,およびアドバイス織り込みの意味論を動的に変更する機構をまとめた論文がSCP(Science of Computer Programming)に採択された.本論文では,実行履歴のパターンをファーストクラス(パターンオブジェクト)として扱い,Open Implementationのガイドラインに従って,アスペクトの織り込み機構とパターンオブジェクトとのインタフェースを厳密に定義することでアドバイス織り込みの意味論を実行時に変更することが可能であることを示した.本論文ではJavaScriptとクロージャ機構を用いてパターンオブジェクトを実現しているが,本論文での提案や結論は,パターンをオブジェクトとして表現可能な言語であれば,特定の言語に依存せず適応可能である. また,昨年度は,本研究の織り込み機構とアスペクトを利用し,同期/非同期処理の違いを隠蔽する機構の提案,およびプロトタイプの実現を行ったが,今年度はこの機構を拡張して一般の開発者が利用可能なライブラリ(SyncAS)とし,定量的な評価を行ってIJSEKE(International Journal of Software Engineering and Knowledge Engineering)に投稿し,採択された.SyncASの実装にはActionScriptを使用しているが,クロージャサポートする言語(JavaScriptやDartなど)であれば同様の機構を実現することができる. 一方,SyncASでは利用者に同期/非同期の違いを意識せずに記述することを可能にしているが,try-catchやreturnなど,制御がプログラムの実行がジャンプする場合,およびwhileやforとなどのループの中でSyncASの機構を適用することができないという問題点も判明した.これらの点はこれからの課題である.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
1: 当初の計画以上に進展している
理由
昨年度に引き続き,当初予定したステートフルアスペクトプログラムの実行履歴にマッチするステートフルアスペクトの意味論,およびアドバイス織り込みの意味論を動的に変更する機構は実現でき,その成果として論文にまとめ掲載された.そのため,現在は本課題のアスペクト織り込み機構実装の際に着目した,アスペクトを利用してシングルスレッド環境下での非同期処理記述を隠蔽する機構の研究に取り組んでいる.本機構実現のための技術検証,プロトタイプ作成は昨年度に行い,今年度は非同期処理記述の複雑さをプログラマから隠蔽するため,本機構を用いたライブラリ(SyncAS)の実装を行い,性能評価をして論文にまとめ論文誌に掲載された. また,並行して非同期処理を多用したオープンソースのソフトウェアに対してSyncASを適用し,実用的なアプリケーション開発にSyncASが適用可能であることを示した.そして,その成果を国際会議に投稿し発表を行った.さらに,非同期処理に関するアプローチの中で代表的な,C#のasync/await, JavaScriptでのPromiseパターンとSyncASを,書きやすさ,オーバーヘッド,モジュール性の観点から評価した.その結果,モジュール性という観点からはSyncASが最も優れているということが分かった.しかしながら,Promiseや現在のSyncASではループ処理やtry-catchの中で適用できないということもわかり,今後の課題となっている.
|
今後の研究の推進方策 |
一昨年度から昨年度に実現したSyncASはtry-catchやループの中,およびreturnなどプログラムの実行がジャンプする場合にうまく動作しない.また,昨年度当初はループを新たなジョインポイントとし,ループ処理の問題を解決しようとしていたが,その場合try-catchやreturnの問題は依然として解決しない. そこで,これらの問題を解決するために継続(Continuation)を利用し,Continuationを取り出すことのできるCall/CCとアスペクトを組み合わせることによってこれらの問題を解決する.Continuationは現在実行中の計算に続くすべての計算を指し,Call/CCは次の計算を取り出すことができる機構である.この機構とアスペクトを組み合わせ,非同期処理呼び出し直後の計算を取り出して変数に束縛し,非同期処理結果が実行された後に束縛した計算を再開する.その結果,returnやtry-catchといったプログラムの実行がジャンプする場合でも,全てはContinuationとして扱われるためSyncASでの問題を解決できると考えている. この機構にはCall/CCの利用が必須であるが,現在SyncASの実装はActionScriptで行っておりActionScriptにはCall/CCの機構が存在しない.そこで,本機構を実現するためCall/CCが利用できるJavaScript実行環境,Rhinoを利用し,Call/CCを用いたプロトタイプシステムの実装を予定している.
|