突然ですが「シリーズ: 良質なR package のコードを読むよ」が俺のなかだけで始まりました。
良質のRコードといえば、Bioconductor (以下、BioC) ですね。ここでは BioC を読んでいきますが、すべての R ユーザに有益なはずです。あまり BioC だと気付かずに使っているパッケージもあるはずよ。R本体のコードを読む訳ではありませんので誤解なきよう。
第1回: Bioconductor のパッケージについて知る
第2回: Bioconductor のソースコードを得る
第3回: Bioconductor にはS4で書かれたコードがどのぐらいあるか
(連載中)
BioC は R を開発しているメンバーと重なっているのでコードの質が高い(と期待
コードレビューされているので質が高い(と期待
S4を推奨しているので S4 OOP な R コードが読める
BioCのコードを読み進めたときに書いたメモをアップしていきます。メモなのであまり読者を想定していません。よーわからん、という人は元の情報に当たるか、聞いてください。
さて本題です。今回は、R パッケージに求められることや、その構造を知るため、Bioconductor パッケージガイドラインとパッケージサブミッションガイドを読みます。
あまり細かいことを書いてもしょうがないので、ざっくりとサマリを書きます。BioCは特にコードの質とドキュメンテーションについてこだわっていることがわかります。
BioCのパッケージは以下の条件を満す必要があります。すべて must です。
Windows, Mac, Linux の3つのプラットフォームでチェックが通る必要があります。
パッケージ名の重複をチェック
[code]
source("http://bioconductor.org/biocLite.R");
biocLite("mypackage")
[/code]
混乱を避けるためCRANとBioCの両方をパッケージを登録してはいけません。
またすでにあるパッケージやクラスの機能的を積極的に利用し、機能的な重複も避けるようにします。例えば、ExpressionSet や AnnotationDataFrame など。
すべてのメソッドに man page を書く必要があります。動作可能な example を含める必要があります。また、Vignette も含める必要があります。書きかたはこちら。1.4 Writing package vignettes. パッケージの更新情報は inst/NEWS に含めます。
前者がパッケージの名前空間を宣言するファイルで、後者が作者やライセンス情報などを記載するファイルです。
Google には dis られている S4 ですが、BioC では S4 こそ正義! といっても実際は BioC のなかには S4 じゃないコードもいっぱいあります。
Mac でありがちな、.DS_Store とか dot ファイル、.git, .svn などを含めてはいけません。
以上、BioC、つまり、Rを作っている人達がどのようなパッケージを良いパッケージと考えているかがわかりました。一言で言うとドキュメンテーションと重複のないS4によるコードを重視しているということですね。個人的にはユニットテストについてルールがないのがどうかな、と思いました。
続きます。
良質の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によるコードを重視しているということですね。個人的にはユニットテストについてルールがないのがどうかな、と思いました。
続きます。
[...] Bioconductor には S4 で書かれたコードがどのぐらいあるのか [...]
返信削除[...] 第1回: Bioconductor のパッケージについて知る 第2回: Bioconductor のソースコードを得る 第3回: Bioconductor には S4 で書かれたコードがどのぐらいあるのか 第4回: R package の構造 ← R package [...]
返信削除