R のコアチームにバグレポートを送ってみた
「R のデータ構造とメモリ管理」でも述べましたが、R のメモリ関連の関数の出力結果はヘルプを読んでも意味不明なものが多いです。
summaryRprof(memory = “both”) で付与される結果がどういう意味なのか調べていて気付いたのですが、この関数では単位の異なるものを足し合わせて結果を出力しています。Rprof のバグか summaryRprof のバグかは定かではありませんが明らかにバグです。
というわけで初めて R のコアチームにバグレポートを送ってみたのでその手順についてまとめてみました。
バグだと思ったら?
まずはバグであることを確信する必要があります。?bug.report の “When is there a bug?” を要約すると次のとおりです。
対象の関数を熟知しているという前提で
- すぐに処理が終わるはずなのに長時間処理が終わらない場合はバグ
- 正常な使い方でエラーメッセージが出る場合はバグ
- おかしな結果を出力する場合はバグ
- もっと良い実装があるという報告はバグレポートではなく r-devel@r-project.org で議論する
- オンラインヘルプとマニュアルで引数が異なる場合はどちらかのバグ
バグレポートを送る前の確認事項
バグレポートを送る際の注意点については R FAQ に書かれています。要は次の4ステップを踏んだ上でそれでも報告する必要があれば報告してねと書かれています。
- http://bugs.R-project.org/ で既にバグが報告されていないか調べる
- https://svn.r-project.org/R/trunk/doc/NEWS.Rd で次のリリースでバグが修正されそうか調べる
- 可能であれば R alpha and beta releases から最新版を取得して直っていないか調べる
- パッケージのバグなのか R 本体のバグなのか確かめる(パッケージのバグであればそのメンテナーに報告する)
バグレポートの送り方
R で bug.report() を実行するとデフォルトブラウザでバグレポートを送るための Web ページが開きます。このページの「新規登録」をクリックしてレポートを作成します。
バグレポートを送るためにはアカウントが必要なので、持っていない場合は新規作成する必要があります。ここで登録したメールアドレスはバグレポートを登録すると全世界に公開されるので注意した方が良いかもしれません。
レポートを作成する前には、bug 報告ガイドラインに目をとおしてください。
?bug.report の “How to report a bug” には R を起動してからバグが起こるまでに実行したコマンドを記述することを推奨しています。というのも、直前に実行したコマンドが原因だったり、言葉だけだとバグを再現するための重要な情報が抜ける場合があるからです。
あとは自分の実行環境に関する情報を選択し、要約と説明を記述します。
説明には writeLines(utils:::bug.report.info()) の結果も載せると良いかもしれません。
今回の場合、再現手順も何も、実装に明らかなバグがあるので実装の問題点とそれを解決するための方法を記述した上でパッチを添付しました。
bug 15138 – information on memory of summaryRprof(memory = “both”) is incorrect
以上、バグレポートの送り方でした!より多くの人が R の改善に貢献することを願っています!!