はじめに
Positronに標準でインストールされている拡張機能がいくつかあるのですが、その一つが「Air - R Language Support」です。
この拡張機能は、Rのコードを自動でフォーマットしてくれるもので、コードの可読性を向上させるのに役立ちます。
例えばどこで改行するのか、インデントはどうするのか、スペースをどこに入れるのかなどは人によってばらばらで、定まったルールがありません。場所によってスペースの有無が異なったり1行が長すぎたりするとコードが読みにくくなります。
Airは一定の規則に則りコードを整形してくれるので、コードの見た目を統一することができます。
これに関しては百聞は一見に如かずということで、早速使い方から実際の例まで見ていきましょう。
Airの使い方
AirはPositronに標準でインストールされているので、特にインストールする必要はありません。ただし、有効化はされていないので、設定から有効化していきましょう。
- Positronの設定を開きます。
- 左下の歯車アイコンから開くか、Ctrl-,Ctrl-,で開きます。
- 画面右上の「設定 (JSON) を開く」から設定ファイルを開きます。
- 設定ファイルに以下のコードを追加します。
- 既に
[ ]
の中に記載があれば、その中に追記してください。
- 既に
[
"[r]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "Posit.air-vscode"
}
]
- 保存します。
これで設定は完了です。.R
ファイル内で、Rのコードは保存するたびに自動で整形されるようになります。
実際の例
ではこのフォーマッタの力はどれほどのものなのか、実際に見ていきましょう。
例えば以下のようなコードがあったとします。
<- function(x,y){
my_function if(x>y){return(x+y)}else{return(x-y)}
}<-my_function(10,5)print(result) result
このコードはインデントがなく、スペースの使い方も一貫していません。また、1行が長すぎて読みにくいです。 このコードを保存すると、Airが自動で整形してくれます。
<- function(x, y) {
my_function if (x > y) {
return(x + y)
else {
} return(x - y)
}
}<- my_function(10, 5)
result print(result)
インデントの追加やスペースの挿入など、コードが格段に読みやすくなりました。
リストなどで中身が多く1行に収まりきらない場合も、適切に改行してくれます。
<- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
my_vector <- data.frame(id = 1:10, value = rnorm(10),
my_data_frame category = sample(letters[1:3], 10, replace = TRUE))
無くはなさそうなコードですが、やや右に比重がかかっている印象ですね。これをフォーマッタにかけると以下のようになります。
<- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
my_vector <- data.frame(
my_data_frame id = 1:10,
value = rnorm(10),
category = sample(letters[1:3], 10, replace = TRUE)
)
data.frame()
の中身が見やすくなりました。
ちなみにmy_vector
の方も、最初に1度だけ改行しておくと、全て改行するスタイルにしてくれます。少し中身を変えて試してみます。
# Before
<- c(
my_vector "Jane Doe","John Smith")
# After
<- c(
my_vector "Jane Doe",
"John Smith"
)
このように最初だけ改行しておけば、1行が短い場合でも残りの要素を改行してくれます。フォーマッタの力を借りるのであれば、スペースも気にせず書き連ね、必要に応じて1か所改行して保存するだけで整形することができ、非常に楽かもしれません。
Quartoにも反映させたい
以上の設定は.R
ファイルに対してのみ有効です。Quartoドキュメント内のRコードチャンクに対しても同じようにフォーマッタを適用したい場合は、以下の設定を追加してください。
[
"[r]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "Posit.air-vscode"
},
// 以下を追記
"[quarto]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "quarto.quarto"
}
]
これでQuartoドキュメント内のRコードチャンクも保存するたびに自動で整形されるようになります。
おわりに
今回はPositronに標準でインストールされている拡張機能「Air」を紹介しました。
個人的にはコードの書き方にはその人の癖が出てそれはそれでよいものだと思っているのですが、とはいえ生成AIが発達してきた昨今ではコードもAIに書いてもらうことが増え、コードの品質の差はなくなってきているのではないかと思いますし、フォーマッタを使用することも今後より一般的になっていくのではないかと考えています。
Airは非常にシンプルで使いやすい拡張機能なので、ぜひ試してみてください。