コンテンツにスキップ

Formatter オプションに対する考え方

💡 Biomeは、Prettierのオプションに対する考え方と同様のアプローチを採用しています。formatに関する既存のオプションセットは安定しており、新しいオプションが検討される可能性は低いです。

この文書では、Biomeがどのようにして今日の考え方に至ったのか、その歴史と今後の展望について説明しています。

Biomeは*「opinionated」なformatterです。理想的には、コードをformatする正しい方法は 1 つしかないと想定し、常にそのスタイルを強制することを意味します。プロジェクトに関係なく、セットアップに関係なく、Biomeによってformatされたコードは常に同じように見えるでしょう。別の視点から見ると、Biomeは独自の自動スタイルガイド*であり、他のスタイルガイドを実装するためのツールではありません。

このように強い意見を持つことは強引に思えるかもしれませんが、採用後すぐにその利点が明らかになります。空白がどこにあるべきか、行が分割されるべきか、行がインデントされるべきかなど、これまでの議論が消えてなくなります些細な議論によって、重要なことに集中することが妨げられることはもうありません。コードレビューでは、再formatの要求や繰り返される議論がなくなります。Biomeがきれいで、読みやすく、一貫性のあるコードへformatするという信頼があれば、それだけで十分です。

個々のチームや組織内での利点に加えて、一貫したformatterの採用は、ウェブエコシステム全体に利益をもたらし、プロジェクト間の移動時に熟知を維持しやすくし、新人がパターンをより直感的に学び、認識しやすくすることに役立ちます。

現在のウェブエコシステムでは、Prettierが最も人気のあるformatterです。Biome と同様に「opinionated」であり、オプションの追加に関する厳格な考え方を持っています。Biomeは、Prettierとの互換性を大いに重視しています。そのため、Prettierが実装している多くの意見を採用し、設定もその例外ではありません。

BiomeはPrettierとの高い互換性を誇り、ユーザーの移行プロセスを可能な限り痛みのないものにしていますが、それには同様の注意点も伴っています。

Biomeは、最初はJavaScriptエコシステムで最も一般的で議論の的になっているスタイルガイドラインをターゲットにした設定オプションからスタートしました:インデントスタイル(タブ対スペース)、インデント幅(タブに等しい2スペース、または4スペース?)、セミコロンの強制。これらの点に対するオプションを追加することは、ほとんどの人々のニーズに十分対応すると考えられ、他のオプションを追加することは強く検討されませんでした。

Prettierのオプションに対する考え方に基づき、Biomeは新たなスタートを切るチャンスがあり、Prettierが --bracket-same-line--arrow-parens などの既存のオプションで陥った落とし穴を避けることができました:

…これらのオプションについては、私たちは保持していることを望んでいません。チーム内で多くの議論を引き起こしており、それを申し訳なく思っています。今では削除するのが難しいため、これらのオプションは歴史的な成果物として存在しており、他のオプションを追加するための動機付けにはなりません(「これらのオプションが存在するなら、なぜこのオプションはダメなのか?」といったような)。

しかし、Prettier Challengeが発表された際、Biomeはこのチャレンジを受け入れることにし、Prettierが持つ全ての設定オプションを実装して完全な互換性を達成する必要がありました。

ただ、BiomeはPrettierと同じ考え方を共有しており、これらのオプションは互換性のためのレガシー機能として考えています。これらのオプションは、さらに多くのオプションが追加されることを示すものではなく、将来的な他のオプションの存在を裏付ける根拠として使用されるべきではありません。

Prettierと同様に、Biomeは現在のオプションセットが安定しており、十分であり、追加や変更の余地はないと信じています。追加の設定オプションに関するリクエストは考慮される可能性が低く、議論なしで閉じられることがあります。

それにもかかわらず、Biomeはまだ比較的新しいツールとして確立されつつあり、他では実現不可能と思われる新しいアイデアや進歩への道を切り開く機会がたくさんあります。

Biomeのformatスタイルも比較的安定しており、できる限りPrettierと一致することを目指していますが、いくつかの意図的な逸脱があります。Biomeのスタイルの変更は検討され、実装される可能性がありますが、これらも設定可能なオプションになることはほとんどなく、代わりに将来のBiomeの全バージョンに一律に適用されることになります。