トラディショナルな非同期処理をRxにリファクタリングするツール2Rxの論文.

Web GUIなどで非同期処理は必須だが,非同期処理に関するJava標準ライブラリは使い勝手が良くない. 一方,最近流行のReactive Extensionは非同期処理を宣言的に書くことができ,可読性が高く理解が容易である. そこで,非同期処理を行うライブラリであるSwingWorkerFutureを対象に,これらをリアクティブプログラミング形式に書き換える(リファクタリングする)ツール,2Rxを開発した.

2Rxは対象のライブラリの利用箇所に対して,データ生成箇所をObservable生成に書き換える. また,データ処理も同じようにObservableに関する処理に書き換える. なお,これらの変換には,処理がキャンセルされないなどの前提条件が必要となる.

また,実験も大規模に行っている(3,000以上のリポジトリを対象としている).

アイデアは面白いと思った. 一方,Rxは非同期処理だけでなく並列処理なども可能なので,そこもリファクタリングできるとより感じた. Rx完全に理解したい.