2014 Fiscal Year Research-status Report
Project/Area Number |
26330089
|
Research Institution | Shibaura Institute of Technology |
Principal Investigator |
福田 浩章 芝浦工業大学, 工学部, 准教授 (30383946)
|
Project Period (FY) |
2014-04-01 – 2017-03-31
|
Keywords | アスペクト指向 / モジュール / ステートフルアスペクト |
Outline of Annual Research Achievements |
今年度は当初の計画通り,アスペクトを実行時に織り込む機構を実現するべく,参考となるAspectScriptの実装を調べることから研究を始めた.AspectScriptの開発者であり,本研究を共同で進める予定のPaul Legerの助けもあり,アスペクトの実行時織込み方法は当初の予定よりも早く実現の目処がたち,本研究の対象言語であるActionScript3を用いてアスペクトの織込みを実現する ライブラリのプロトタイプシステムを完成させた.実現した織り込み方法では、関数の呼び出しをクロージャで内包し,関数呼出し,および実行をすべて観測することによって実行時にアスペクトを織り込むことを可能にしている.今年度は本来の目的であるステートフルアスペクトの履歴にマッチする意味論,およびアドバイス織り込みの意味論を動的に切り替える機構と並行し,実現した織り込み機構を拡張することで,近年軽量言語を用いたweb開発で問題となるcallback地獄を解決する手法を考案し,実現した.この手法によって,本来コールバック関数を渡り歩いて記述せざるを得ない非同期処理を,同期処理と同じように記述することが可能になった.この成果を国際会議に投稿し,発表を行うと共に、国内ワークショップにおいてポスター発表を行った. また,実現した織り込み方法を拡張し,アスペクトの評価部分にMacherCellsのアイデアを応用することで、本研究の目的であるステートフルアスペクトの履歴にマッチする意味論,およびアドバイス織り込みの意味論を動的に切り替える機構のプロトタイプも実現でき,ここまでの成果をジャーナル論文としてまとめ,投稿した。
|
Current Status of Research Progress |
Current Status of Research Progress
1: Research has progressed more than it was originally planned.
Reason
計画時には,アスペクトを動的に織り込む機構に関してはどう実現してよいかわからなかったため,その調査に時間がかかるだろうと予想していた.しかし,既にJavaScriptで動的織り込み機構を実現しているAspectScriptの開発者であり,本研究の協力研究者であるPaul Legerの助けもあり,動的織り込み機構の実現には結果的に時間がかからなかった.ただし,本研究の対象であるActionScriptとJavaScriptは言語仕様が多少異なるため,織り込み場所(ジョインポイント)の指定を行うポイントカットの記述は文字列を利用してクラスとメソッドを指定することしか出来なかった. しかし,この制約は本研究の本質的な部分には影響は少なく,当初予定していたよりも早くこの機構がすぐに実現できたことにより,動的にアスペクトを適用する方法についても苦労することなく実現することができた..その結果,意味論を変更する上で重要であるアスペクト適用ルールの動的な拡張方法についてPaulと十分に議論する事ができ,実現に至り,ここまでの成果をジャーナル論文としてまとめることができた. また,この動的織り込み機構を実現する過程において,実行スレッドを1つしか持たないActionScriptのような言語において問題となるCallback地獄を解決する方式を考案することができ,織り込み機構を応用してそのプロトタイプシステムを実現した.この方式では,従来Callbackの連鎖で記述せざるを得ない非同期処理を,同期的に記述することを可能にしており,この成果をカンファレンス論文にまとめて投稿し,発表した. 以上のことから,本来の達成目標だけでなく,コア技術を応用して当初予想していなかった研究成果も収めることができた.
|
Strategy for Future Research Activity |
昨年度実現したWeb開発にCallbackの問題を解決する機構は,実現のアプローチとプロトタイプシステムの発表に留まっており,実システムへの適用や,パフォーマンスを測定するといった評価はできていない.そこで今年度は,この機構の具体的な評価を行い,ジャーナル論文としてまとめることを第一の目標とする.また,この機構は関数の呼び出しや実行だけでなく,ifやwhileといった 構造もクロージャとして内包することによって,プログラムを即座に実行するのではなく,任意の場所で擬似的に停止,および再開を可能にしている.そして,停止や再開の処理をアスペクトで定義し,プログラムの実行を制御することによってプログラマに非同期処理を意識させないという特徴を持つ.しかしながら,現在の実装ではforやwhileのブロックの中で実行を停止できない.具体的には,繰り返しの実行で停止させると繰り返しの終了条件を満たさずに無限ループに陥ってしまう. これは,現在の実装では繰り返しや処理をジョインポイントとして扱っていないためであり,これらをジョインポイントとすることで回避可能であるという見通しが立っている.また,繰り返しをジョインポイントとして扱うという提案にはLoop Join Point Modelという研究が存在し発表されているが,その機構ではJava言語を対象としており,本研究で扱うファーストクラスファンクションや,クロージャの機構を考慮していないことや,繰り返し処理中でのbreakやcontinueの扱いが限られることから,このモデルをそのまま適用することはできない. そこで,繰り返し処理に対する新たなジョインポイントモデル(Body Loop Join Point)を提案する. Body Loop Join Pointの意味を定義し,FOALに向けて論文を執筆し投稿する予定である.
|
Causes of Carryover |
The 30th ACM/SIGAPP Symposium On Applied Computingへ論文を投稿し,採択通知を受けたが,このカンファレンスは2015年4月13から行われるために年度をまたぐ必要があった.
|
Expenditure Plan for Carryover Budget |
繰り越した資金とカンファレンスの参加,およびそれに伴う旅費等はほぼ相殺されるため,2015年度は当初の計画通り,物品費,および国際会議への参加するための旅費として使用する予定である.
|