styler~今年の汚れ、今年のうちに~

これはR Advent Calendar 2019 24日目の記事です。

(ネタ記事なのでヒマなときに読んでください。)

今年も早いものであと一週間となりました。



学校も仕事も忙しい季節ですが、今年の汚れは今年のうちに落としましょうね(ブーメラン)


リビング、部屋、キッチン、トイレ、お風呂、クローゼット、

そして、Rスクリプト



ふだんからきれいに書いてる人がほとんどだと思いますが、
改行位置やインデントなどPythonほど厳しくないので、
気を付けないとすぐ汚くなってしまいますよね。



そんなあなたにぴったりのRパッケージがこちら

github.com

使い方はこちら

styler.r-lib.org



デフォルトの設定でも十分きれいに整形できますが、 {の前で改行するか、インデントを右揃えにするか、
算術演算子前後にスペースを入れるかなど
細かくカスタマイズすることも出来ます。


パッケージはGitHubからもCRANからもインストールできますが、
開発が盛んなのでCRAN側の方が安全かと思います。



基本的な機能

よく使うであろう関数はこちら

  • style_text()
    指定した文字列を整形する
    f:id:tsuyu_pon:20191223231432p:plain
  • style_file()
    指定した.R .Rmd .Rnw .Rprofile を整形する
    f:id:tsuyu_pon:20191223231705p:plain
  • style_dir()
    ディレクトリ内のすべての.R .Rmdファイルを整形する(指定ディレクトリ直下だけでなく、孫ディレクトリなども含む)
    f:id:tsuyu_pon:20191223233313p:plain
  • style_pkg()
    Rパッケージのソースファイルを整形する
    f:id:tsuyu_pon:20191223233008p:plain



このほかに上記の関数を応用したR Studioアドインがあります。

  • Set style
    あらかじめ作成した整形定義関数をセットする
    f:id:tsuyu_pon:20191223230955p:plain
  • Style selection
    選択した文字列を整形する
  • Style active file
    アクティブファイルを整形する
  • Style active package
    自作パッケージを作成してるときに使うとディレクトリ内にあるファイルが整形される

※スクリプトは上書きされるので開いていないファイルを
試しに整形する際はバックアップをとっておくことをお勧めします。



ショートカットキー設定

R Studioアドインに登録されているということはショートカットキー設定が出来ます。

f:id:tsuyu_pon:20191224002339g:plain ※RStudioデフォルトの機能Ctrl+i(Reindent Lines)を上書きしています。
 それが嫌な方は別のショートカットキーを設定してください。

設定できましたら、あとは簡単。ワンタッチ。

整形したい行を選択してCtrl+iを押せばキレイになります。

f:id:tsuyu_pon:20191224084726g:plain



カスタマイズ

先ほどSet styleというアドインもショートカットキー設定しましたが、
これを使って自分でカスタマイズした整形機能を設定してみます。

santa <- "
#            / ̄ \
#     __ 0⌒>   ヽ
#    /   ∩⊂ニニニニニニ⊃∩
#  /     | ノ    ヽ
# |     /  ●  ●   |   メリークリスマース!
# |     |   ( _●_) ミ   |
# |    彡、   |∪| 、`\
# |   / __  ヽノ /´>  )
#  \  (___)    / (_/
#    \   |        /
#      ̄ ̄|  /\   \
#       | /     )    )
#       |_)    (     \
#            \  _)
"

Xmas <- function(pd_flat) {
  op <- pd_flat$token %in% "'{'"
  pd_flat$text[op] <- paste("{", santa)
  pd_flat$lag_newlines[op] <- 1L
  pd_flat
}

present <- styler::create_style_guide(token = tibble::lst(Xmas))

これを.Rprofileに書き込んでR起動時に毎回読み込むようにします。

そしたら、起動後にCtrl+Shift+iを押して、presentを指定

=>そしてカッコ{を含む行を選択して、Ctrl+i!!

f:id:tsuyu_pon:20191224155500g:plain

これであなたのプログラムにもクマサンタが現れます!!!!!!(ダレトク)



まとめ

  • {styler}のアドインをショートカットキー設定しておけば、簡単にきれいなコードになります。

  • styler::create_style_guideは正しく使えば、「functionの中にちゃんと何をする関数か書きなさい。」といったおれおれstyleを社内に展開することができます。

ぜひ一度手元でお試しください!



最後のは私からのささやかなクリスマスプレゼントムダ知識です。

{という煙突を探してはプレゼントを入れてあげるというスタイルです。

それでは、

.。゚+..。゚+.。゚+..。゚+.。゚+..。゚+.。゚+..。゚+
.。゚+..。゚+.メリークリスマス.。゚+..。゚+
.。゚+..。゚+.。゚+..。゚+.。゚+..。゚+.。゚+..。゚+