2012/04/21

R5 reference class 編: R でいまどきなパッケージ開発 (devtools, testthat, roxygen2)

一週間ほど熱でうなされながら、とある研究に使うために、とあるプログラムのドキュメントをひたすら読んでいました。残念ながら R からアクセスするパッケージがないので自分で書いてみようかと思うのですが、どうせなら R5 reference class を使って実装してみようと、朦朧とする意識のなか考えていました。

その前に、R5のおさらいということで、以前のS4で実装した「R でいまどきなパッケージ開発 (devtools, testthat, roxygen2)」をR5にしてみました。解説を書くほど元気がないので、github にコードは置いてあげたので、興味のあるおにいちゃんは各自コード読んだらいいんだからねっ!

https://github.com/dritoshi/idol

無駄にツンデレいもうと風になったのはおそらく熱のせいですが、雑感を書いておくと、R5のほうが非常に簡潔に書けるので、今後は、R4で書く必要はないわー。このエントリーはS4のままになっていますが、github のコードは、R5になっています。S4, R5それぞれににタグを付けてあるので、どちらも github から入手できます。

https://github.com/dritoshi/idol/tags

devtools の check は通っても run_examples で reference class が見えないとかいうエラーに少しだけ泣かされました。reference class を正しく export してあげると右のアイコンのような笑顔に戻りました。テヘ。

Bioconductor でも R5 なパッケージが少しだけあるので、眺めてみたのですが、R5で実装しつつ、結局ユーザがさわる部分は、reference class のコンストラクタを普通の関数で実装し、ユーザにはこの関数しか見せない、みたいな過保護な実装が推奨されていて、S4を抜き身で submit して怒られた僕としては、いかにも連中らしいな、とほっこりしました(尊敬してます!)。しかし中身は setMethod も併用使いまくりで、なんというか、フランケンなんとかさんの作りたもうたアレやら、白鳥のバタ足やらを彷彿させる感じです。

もう熱もだいぶいいかんじです。では。

参考にしたサイトは以下の README.md にあります。
https://github.com/dritoshi/r5refclasses