Airフォーマッターについて

r
Rの新しいコードフォーマッターであるAirについて
Author

Maple

Published

July 23, 2025

Modified

September 2, 2025

Airとは

Rのフォーマッターです。 フォーマッターとはコードのレイアウトを整えるものです。 あるルールに基づいて、空白やインデント、改行などを整えてくれます。 この時、コードの機能に影響は与えません。 パッケージではなく、Rustという言語で書かれており、サーバー経由で動作し、非常に高速であることが特徴です。

主な機能

  • 自動インデント: デフォルトでスペース2つ。|>(パイプ)や関数呼び出しのネストに応じて適切に字下げします。
  • 行長制御: デフォルト幅は80文字。超過した場合は水平レイアウト(flat)から垂直レイアウト(expanded)に切り替えて折り返します。
  • 自動ブレース(Autobracing): ifforwhile、関数定義などで波かっこ {} の扱いを整えます。
  • コメントや空のブレースの取り扱い: 特定のコメントでフォーマットをスキップしたり、空のブロックを扱う挙動を細かく設定可能です。

インストール

主要なエディタをサポートしており、拡張機能のように簡単にインストール可能です。 公式でサポートしているエディタは以下です。

  • VS Code
  • Positron
  • RStudio
  • Zed
  • Neovim
  • Neovim

ここではPositronとRstudioについてまとめます。

Positron

拡張機能としてインストールします。 しかし、どうやらプリバンドル(pre-bundled, 最初から同梱)されているようで、おそらく最初からインストールされていそうです。

左側の拡張機能アイコンを選択し、検索ボックスに Air と入力します。 Air の拡張機能が表示されるので、インストールされていなければインストールします。 インストールされていれば、右側に歯車アイコンが表示されています。

インストールを確認する

インストールを確認する

ワークスペースの設定

次に、ワークスペースの設定をおこないます。 Ctrl + Shift + P でコマンドパレットを開き(もしくは左下の歯車アイコンをクリックし “Command Palette…” をクリック)、Air: Initialize Workspace Folder と入力します。 コピペせず、手打ちで入力する場合、途中で候補が出ると思います。 これにより、Air の設定ファイルが初期化されます。

Air のワークスペースの初期化

Air のワークスペースの初期化

初期化すると、右下に初期化が完了した旨の通知が表示されます。

Air のワークスペースの初期化完了

Air のワークスペースの初期化完了

左側のエクスプローラー(Explolrer)に .vscode フォルダが作成され、その中に extensions.jsonsetting.json という設定ファイルが作成されています。

Air の設定ファイル

Air の設定ファイル

それぞれのファイルの内容は以下のようになっていると思います。

extensions.json
{
    "recommendations": [
        "Posit.air-vscode"
    ]
}
settings.json
{
    "[r]": {
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "Posit.air-vscode"
    },
    "[quarto]": {
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "quarto.quarto"
    }
}

初期設定では、保存をすると自動でフォーマットされるようになっています。

ユーザーレベル設定とワークスペースレベル設定

VS Code や Positron の設定には、ユーザーレベル(user level setting)とワークスペースレベル(workspace level)の二種類があります。

ユーザーレベルは、Positron共通、つまり全てのプロジェクトに適用される設定です。 ワークスペースレベルは、特定のプロジェクトにのみ適用される設定です。

ワークスペースレベルの設定は、プロジェクトフォルダ内の .vscode フォルダに保存されます。 今回のAir の設定はワークスペースレベルの設定です。 ユーザーレベルでの設定も可能で、一見便利そうですが、公式で非推奨となっています。

これには二つの理由が述べられています。

  1. 古いプロジェクトを開いたときに、自動的にフォーマットされてしまい、予期しない変更不要なフォーマット関連の差分がたくさん発生する可能性があるため。
  2. ワークスペースレベルでの設定をすると、.vscode/settings.json ファイルが生成され、これをバージョン管理システムに組み込めば、共同作業者と簡単に同じ設定が共有できるため。

特に理由がなければ、ワークスペースレベルでの設定がよいと思います。

使用法

基本的には、保存をするときに自動でフォーマットされるため、特に操作は必要ありません。 ほかには、選択範囲をフォーマットやワークスペース全体をフォーマットすることもできます。 以下にコマンドを記します。

  • 選択範囲をフォーマット: (Windows)
    • Ctrl + Shift + P でコマンドパレットを開き、Format Selection と入力し、Enter
    • ショートカットは (WIndows) Ctrl + K の後に Ctrl + F (Mac) Cmd + K の後に Cmd + F
  • ワークスペース全体をフォーマット: (Windows)
    • Ctrl + Shift + P でコマンドパレットを開き、Air: Format Workspace Folder と入力し、Enter

なお、フォーマットの設定を変更したい場合は、後述の air.toml ファイルを作成し、設定を変更します。

設定

設定の際は、air.toml という設定ファイルをプロジェクトフォルダに作成します。

Tombi という拡張機能をインストールすることで、自動補完が効き、簡単に設定が変更できるようになるため、インストールをおすすめします。

Rstudio

インストール

Rstudio の場合は、VSCode や Positron のような拡張機能のマーケットプレイスがないため、少しだけ手間が必要です。

Rstudio のバージョンが 2024.12.0 以降であることを確認してください。

コマンドラインツールから Air をインストールします。

ワークスペースの設定

使用法

コマンドライン

あまり使用する機会はないかもしれませんが、コマンドラインでも使用可能です。(参考:Command line interface

Windows

パワーシェルやコマンドプロンプトで以下のコマンドを実行します。

powershell -ExecutionPolicy Bypass -c "irm https://github.com/posit-dev/air/releases/latest/download/air-installer.ps1 | iex"

その後、再起動します。

インストール場所の確認はWindowsの場合、PowerShellでは以下のコマンドを実行します。

where.exe air

コマンドプロンプトの場合は以下のコマンドです。

where air

デフォルトでは、C:\Users\<ユーザー名>\.local\bin\air.exe にインストールされていると思います。

Warning

Powershell で where air を実行すると、何も出力されないと思います。 どうやら、whereWhere-Object のエイリアス(ショートカットみたいなもの)として登録されているためのようです。 (参考: Stack Overflow - Why doesn’t the ‘where’ command display any output when running in PowerShell?

設定

フォーマットの設定は、air.toml という設定ファイルをプロジェクトフォルダに作成し、ここに記述します。

Configuration

TOML形式

TOML 形式

References

公式からの情報は以下の3つです。 特に、ベータ版ということもあり、GitHubのIssuesでは活発に議論が行われているため、バグかな?思ったらこちらを覗くと自分と似たエラーを報告している人が見つかることも多いです。

ライセンス

Air は MIT ライセンスで配布されています。 本記事はMITライセンスに従って作成しました。 ライセンス文は以下になります。

MIT License

Copyright (c) 2024 Posit Software, PBC

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.