LoginSignup
0
0

EditorConfig公式サイトの解説を日本語に訳しました

Last updated at Posted at 2024-05-18

image.png

公式サイトの内容を意訳しました。構成が同じなので、見比べて理解を深めることができると思います。

EditorConfigって何?

EditorConfigは、異なるエディタやIDEを使用する複数の開発者が同じプロジェクトで作業する際に、一貫したコーディングスタイルを維持するのに役立ちます。EditorConfigプロジェクトは、コーディングスタイルを定義する .editorconfigファイル と、その定義を反映してソースコードのスタイルを修正する テキストエディタプラグイン のセットで構成されます。

コーディング規約とは別の話
コーディング規約は、目視前提の論理的なスタイルに関するルールや作法を指します。一方、EditorConfigは、改行コードやインデントに用いるホワイトスペースの数、エンコードなど、見た目では分かりにくい物理的なスタイルを揃えるためのツールであり、開発環境の違いにより発生する意図しない差分を防ぎます。

EditorConfigはシンプルなので、Gitなどのバージョン管理システムと相性がよいです。

EditorConfigファイルの見た目はどんな感じ?

EditorConfigの正式な仕様も参考にしてください。

サンプルファイル

以下は、PythonとJavaScriptファイルの改行スタイルとインデントスタイルを設定する例の.editorconfigファイルです。

# EditorConfigは素晴らしい: https://EditorConfig.org

# 最上位のEditorConfigファイル
root = true

# 各ファイルの末尾に改行を入れるUnixスタイルの改行
[*]
end_of_line = lf
insert_final_newline = true

# 波括弧展開記法を使用して複数のファイルに一致
# デフォルトの文字セットを設定
[*.{js,py}]
charset = utf-8

# 4スペースのインデント
[*.py]
indent_style = space
indent_size = 4

# タブによるインデント(サイズは指定されていない)
[Makefile]
indent_style = tab

# libディレクトリ内のすべてのJSファイルのインデントオーバーライド
[lib/**.js]
indent_style = space
indent_size = 2

# package.jsonまたは.travis.ymlという正確なファイル名に一致
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

より実用的なEditorConfigファイルの例については、Wikiをご覧ください。
EditorConfigファイルを使用するさまざまな公式プロジェクト

.editorconfigファイルはどこに配置するのがよいですか?

エディタでファイルを開くと、EditorConfigプラグインは開いたファイルのディレクトリおよびすべての親ディレクトリ内の.editorconfigという名前のファイルを探します。.editorconfigファイルの検索は、最上位のディレクトリに到達するかroot=trueと指定されたEditorConfigファイルが見つかると停止します。

root=true の指定がないとルートまでたどります。プロジェクトトップに配置する .editorconfig には記述しておくことをおすすめします。

EditorConfigファイルは上から下へと読み取られ、直近のルールが優先されます。該当するEditorConfigセクションのプロパティは読み取られた順に適用されるため、より近いファイルのプロパティが優先されます。

Windowsユーザー向け: Windows Explorerで.editorconfigファイルを作成できない場合は、.editorconfig.(末尾のドットに注意)という名前のファイルを作成してください。自動的に.editorconfigにリネームされます。

ファイル形式の詳細

EditorConfigファイルは、Python ConfigParserライブラリで使用されるINI形式と互換性があります。以下に、その特徴と使用方法を説明します。

セクション名

  • セクション名は[]で囲まれます。
  • ファイルパスのグロブパターンとして記述され、大文字小文字を区別します。
  • パターン形式は.gitignoreに似ています。
  • ファイルパスの区切り文字には前方スラッシュ(/)を使用します。

コメント

  • コメントはシャープ(#)またはセミコロン(;)で始まります。
  • コメントは独立した行に記述します。

EditorConfigファイル自体のエンコードと行区切り

  • UTF-8エンコードで記述します。
  • 行区切りにはCRLFまたはLFを使用します。

ルールの優先順位

  • EditorConfigファイルは上から下へと順に読み取られます。
  • 最後に読み取られたルールが反映されます。

以下に、ファイルパスのグロブパターンと現在サポートされているEditorConfigプロパティについて説明します。

ワイルドカードパターン

セクション名でワイルドカードとして認識される特殊文字は以下の通りです。

ワイルドカード 説明
* パスセパレータ(/)を除く任意の文字列に一致
** パスセパレータ(/)も含めた任意の文字列に一致
下層のディレクトリも含めたマッチング
? 任意の1文字に一致
[name] n,a,m,e の任意の1文字に一致
[!name] n,a,m,e に含まれない任意の1文字に一致
{s1,s2,s3} 指定された文字列のいずれかに一致(カンマで区切られる) (EditorConfig Core 0.11.0以降で利用可能)
{num1..num2} num1とnum2の間の任意の整数に一致
num1とnum2は正または負のいずれか

これらの特殊文字はバックスラッシュでエスケープし、ワイルドカードパターンとして解釈されないようにできます。

複数の拡張子に対応したい場合

  • [*.{css,scss,js,ts}] 正しい書き方
  • [{*.css,*.scss,*.js,*.ts}] これも可
  • [*.css,*.scss,*.js,*.ts] 認識されない書き方

サポートされているプロパティ

主なプロパティを下記に列挙します。Wikiにはプロパティの完全なリストがありますので、興味があればご覧ください。エディタによってはプロパティのサポートが完全でないことがあります。

プロパティ 説明
indent_style ハードタブまたはソフトタブを使用するために tab または space を設定します。
indent_size 各インデントレベルに使用される列数とソフトタブの幅を定義する整数。 tab に設定すると、tab_width(指定されている場合)の値が使用されます。
tab_width タブ文字を表すために使用される列数を定義する整数。これはデフォルトで indent_size の値となり、通常は指定する必要はありません。
end_of_line 改行の表現方法を制御するために lfcr、または crlf を設定します。
charset 文字セットを制御するために latin1utf-8utf-8-bomutf-16be、または utf-16le を設定します。
trim_trailing_whitespace 改行文字の前にある空白文字を削除するために true を設定し、削除しないようにするために false を設定します。
insert_final_newline ファイルを保存する際に末尾に改行を追加するために true を設定し、追加しないようにするために false を設定します。
root 特別なプロパティ。ファイルの最上部にセクション外で指定する必要があります。親ディレクトリの .editorconfig ファイルの検索を停止するために root=true を設定します。

翻訳者注:csvに関しては、charsetutf-8-bom とすると、エクセルで読み書きできるようになります。

プロパティとその値は大文字小文字を区別しません(内部的には小文字に変換します)。

プロパティが指定されていない場合、その部分にはEditorConfigの影響はありません。

任意のプロパティに対して unset という値を設定することで、そのプロパティの効果を削除できます。例えば、indent_size = unset と設定することで indent_size プロパティを未定義にし、エディタのデフォルト設定が使用されるようにできます。

あえて指定しない方がよい場合もあります。以下にその例を示します。

  • tab_width は、 indent_size の値と異ならない限り、指定する必要はありません。
  • indent_styletab に設定されている場合は、 indent_size を指定せずにおくことで、ユーザーが好みのインデント幅でファイルを表示できます。表示に関してはユーザーの好みに任せるのがよいと考えられる場合は、指定しないでおきましょう。
  • end_of_line など、プロジェクトで標準化されていないプロパティは、指定しないほうがよいかもしれません。

このように、状況に応じて特定のプロパティを指定しない方が適切な場合もあります。よく理解し、過剰にならない程度に適切に設定を行うことが重要です。

ネイティブにサポートされているエディタ及びサービス

下記のエディタ及びサービスにはEditorConfigのネイティブサポートが組み込まれており、プラグインなどによって別途に組み込む必要がありません。

プラグインをダウンロードする

エディタ

以下のエディタでEditorConfigを使用するには、プラグインをインストールする必要があります。

ヘッドレスツール

以下のヘッドレスツールでEditorConfigを使用するには、プラグインをインストールする必要があります。

EditorConfigへの貢献

フィードバックをお寄せください

このプロジェクトは他の開発者からのフィードバックを必要としています。このプロジェクトをより良くするためのアイデアをお聞かせください。

プラグインを作成する

EditorConfigプラグインは、EditorConfigのコアライブラリのいずれかを使用して開発できます。 EditorConfigのコアライブラリは、編集されているファイルを入力として受け取り、関連する.editorconfigファイルを検索および解析し、使用するプロパティを返します。 将来の互換性のために、エディタープラグインで未認識のプロパティやプロパティ値を無視してください。新しいプロパティと許可された値が今後追加される予定です。

EditorConfigのコアライブラリは、下記のプログラミング言語に対応しています:

新しいプラグインの作成を計画している場合は、メーリングリストを使用してお知らせください。活動を支援するためプラグイン完成時にリンクを提供します。EditorConfigのコアをライブラリまたはコマンドラインインターフェースとして使用する場合は、CライブラリのドキュメントPythonライブラリのドキュメント、またはJavaライブラリのドキュメントが役立つかもしれません。

詳細については、プラグインの作成方法Wikiページをご覧ください。

主な貢献者

コアライブラリ:

エディタープラグイン:

EditorConfigのロゴはKat OnおよびAmon KeishimaTrey HunnerおよびHong Xu

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0