reprexパッケージの使い方、あるいは羽鳥に怒られる前に知るべき4つのこと

最近、dplyrパッケージのレポジトリにissueを立てようとすると、「reprexよろしく!」と言われます。言われますというか怒られます。怒られる前に、issue templateに書かれていることに目を通しましょう。

f:id:yutannihilation:20170315212205p:plain

これはdplyrにissueを立てようとしたときのスクショですが、書いてあることを見ていきましょう。

質問はメーリングリストかStackOverflowに!

If you have a question, please don’t use this form, but instead ask on the mailing list https://groups.google.com/forum/#!forum/manipulatr or http://stackoverflow.com.

Issueの使い方はレポジトリごとに違うのでややこしいですが、少なくとも羽鳥は質問目的で立てられるissueにあまり寛容ではありません。質問は、メーリングリストかSOに投稿しましょう。あるいは日本語なら、r-wakalangに気軽に聞いちゃいましょう。

reprexを使う!

Please include a minimal reprex.

reprexとは何か。

ググっても出てきません。reprexとは「reproducible example」の略で、Jennifer Bryan氏が作ったパッケージです(参考:Prepare Reproducible Example Code for Sharing • reprex)。

具体的には、以下のように使います。

reprex({1:10})

すると、少し待たされたあとに、Viwerペインに以下が表示されます。

f:id:yutannihilation:20170315214157p:plain:w450

これをどうしろと…という気分になりますが、どこかでCtrl+V(あるいはCmd+V)してみてください。クリップボードに以下の文字列がコピーされています。

 ``` r
 1:10
 #>  [1]  1  2  3  4  5  6  7  8  9 10
 ```

便利ですね。これをこのままissueにコピペすればいいだけです。StackOverflowに張り付けるときはvenue = "so"を指定しましょう。以下の形のものになります。

<!-- language-all: lang-r -->
<br/>

    1:10
    #>  [1]  1  2  3  4  5  6  7  8  9 10

これはこれでけっこう便利っぽいので使っていきましょう。

session infoは含めない!

Do NOT include session info unless it’s explicitly asked for

これ割と引っかかりやすいんですが、なぜなのか羽鳥はissueの報告にsession infoを含めることを嫌います。含めた方が親切だろう、と思いがちですが、怒られます。気を付けましょう。(これはほんとなぜなのか理解できない…)

パッケージ名は{}で囲わない!

あと、これはissue templateには書かれていませんが、某炎上系アカウントがこんなことをつぶやいていました。

日本語圏では、パッケージ名は{}で囲む、と思ってしまいがちですが、この記法はグローバルでは通じないらしいので注意しましょう。ふつうにdplyr packageとか書きましょう。

まとめ

       _,,;' '" '' ゛''" ゛' ';;,,
      (rヽ,;''"""''゛゛゛'';, ノr)
      ,;'゛ i _  、_ iヽ゛';,    お前それ羽鳥の前でも同じ事言えんの?
      ,;'" ''| ヽ・〉 〈・ノ |゙゛ `';,
      ,;'' "|   ▼   |゙゛ `';,
      ,;''  ヽ_人_ /  ,;'_
     /シ、  ヽ⌒⌒ /   リ \
    |   "r,, `"'''゙´  ,,ミ゛   |
    |      リ、    ,リ    |
    |   i   ゛r、ノ,,r" i   _|
    |   `ー――----┴ ⌒´ )
    (ヽ  ______ ,, _´)
     (_⌒ ______ ,, ィ
      丁           |
       |           |