2010/09/06

良質な R package のコードを読むよ

突然ですが「シリーズ: 良質なR package のコードを読むよ」が俺のなかだけで始まりました。

良質のRコードといえば、Bioconductor (以下、BioC) ですね。ここでは BioC を読んでいきますが、すべての R ユーザに有益なはずです。あまり BioC だと気付かずに使っているパッケージもあるはずよ。R本体のコードを読む訳ではありませんので誤解なきよう。

目次


第1回: Bioconductor のパッケージについて知る
第2回: Bioconductor のソースコードを得る
第3回: Bioconductor にはS4で書かれたコードがどのぐらいあるか
(連載中)

なぜ Bioconductor を読むのか?


BioC は R を開発しているメンバーと重なっているのでコードの質が高い(と期待
コードレビューされているので質が高い(と期待
S4を推奨しているので S4 OOP な R コードが読める

なにをするのか?


BioCのコードを読み進めたときに書いたメモをアップしていきます。メモなのであまり読者を想定していません。よーわからん、という人は元の情報に当たるか、聞いてください。

BioCパッケージについて知る


さて本題です。今回は、R パッケージに求められることや、その構造を知るため、Bioconductor パッケージガイドラインパッケージサブミッションガイドを読みます。

あまり細かいことを書いてもしょうがないので、ざっくりとサマリを書きます。BioCは特にコードの質とドキュメンテーションについてこだわっていることがわかります。

BioCのパッケージは以下の条件を満す必要があります。すべて must です。

1. R CMD build, R CMD check が通ること


Windows, Mac, Linux の3つのプラットフォームでチェックが通る必要があります。

2. 重複がないこと


パッケージ名の重複をチェック
[code]
source("http://bioconductor.org/biocLite.R");
biocLite("mypackage")
[/code]

混乱を避けるためCRANとBioCの両方をパッケージを登録してはいけません。
またすでにあるパッケージやクラスの機能的を積極的に利用し、機能的な重複も避けるようにします。例えば、ExpressionSet や AnnotationDataFrame など。

3. ドキュメンテーション


すべてのメソッドに man page を書く必要があります。動作可能な example を含める必要があります。また、Vignette も含める必要があります。書きかたはこちら。1.4 Writing package vignettes. パッケージの更新情報は inst/NEWS に含めます。

4. NAMESPACE と DESCRIPTION を含める


前者がパッケージの名前空間を宣言するファイルで、後者が作者やライセンス情報などを記載するファイルです。

5. S4 class と method による実装


Google には dis られている S4 ですが、BioC では S4 こそ正義! といっても実際は BioC のなかには S4 じゃないコードもいっぱいあります。

6. 不必要なファイルの排除


Mac でありがちな、.DS_Store とか dot ファイル、.git, .svn などを含めてはいけません。

まとめ


以上、BioC、つまり、Rを作っている人達がどのようなパッケージを良いパッケージと考えているかがわかりました。一言で言うとドキュメンテーションと重複のないS4によるコードを重視しているということですね。個人的にはユニットテストについてルールがないのがどうかな、と思いました。

続きます。