Formatter や Linter などのツールが統合されたツールチェーン Rome を使ってみる


こんにちは、 Gaji-Labo フロントエンドエンジニアの石垣です。

今回は Rome というツールチェーンのJSライブラリを知ったので、詳細をまとめてみたいと思います。

概要

Rome は Formatter や Linter などのツールが統合されたツールチェーンです。

思想としては、ESLint や Prettier など、開発に必要なツールをそれぞれ導入し設定するのではなく1つのツールチェーンに全てをまとめ、単一の設定ファイルで任意の構成にセッティングすることにより快適な開発体験に繋げることを目的としています。

現在は Formatter と Linter の機能のみですが、今年 Compiler 、Bundler 、 Testing の機能も追加されるようです。

使い方

まずは yarn でプロジェクトに導入し、yarn rome init で設定ファイル rome.json を生成します。

yarn add rome --save-dev
yarn rome init

rome.json はデフォルトでは以下のようになっています。

{
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  }
}

初期状態では Linter のみが有効になっており、Formatter は以下のように別途有効にする必要があります。

{
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "tab",
    "lineWidth": 120
  }
}

Linter は推奨設定がデフォルトで有効になっているため、そのまま使用できます。
Formatter は Prettier のようにインデントスタイルやシングルクォートを使うかダブルクォートを使うかどうかを設定できます。
公式サイトに Formatter の設定一覧がありますが、個人的にはバリエーションは Prettier と遜色ないと感じました。

設定した状態で、Linter を使う場合は yarn rome check . を、 Formatter を使う場合は yarn rome format . を叩くことでそれぞれ実行できます。

最後に VSCode で使用するには、 VSCode 用の拡張機能を導入します。
これで Linter のエラーをコード上に表示させることができます。

使ってみた感触

やはり React プロジェクトなどで ESLint と Prettier をそれぞれ管理するのは煩雑ではあります。
Rome であれば一緒くたになっているので導入も管理もしやすく、快適な開発体験に繋がるなと思いました。

ただ、現状は ESLint がチェックしてくれる部分を Rome はチェックしてくれない、というところも存在しています。これは今後 Rome が普及すれば改善されるかと思っています。

Formatter 機能に関しては Prettier と遜色なく、実行速度も速いので代替になりうると感じました。

おわりに

今回は Rome というツールチェーンについてまとめてみました。

今後さらなるアップデートが予定されているため、引き続き注視していきたいと思います。

Gaji-Laboでは、 Next.js 経験が豊富なフロントエンドエンジニアを募集しています

弊社では Next.js の知見で事業作りに貢献したいフロントエンドエンジニアを募集しています。大きな制作会社や事業会社とはひと味もふた味も違う Gaji-Labo を味わいに来ませんか?

Next.js の設計・実装を得意とするフロントエンドエンジニア募集要項

もちろん、一緒にお仕事をしてくださるパートナーさんも随時募集中です。まずはお気軽に声をかけてください。お仕事お問い合わせや採用への応募、共に大歓迎です!

求人応募してみる!


投稿者 Ishigaki Shotaro

未経験から Gaji-Labo に入社。現在は React/TypeScript/Next.js の案件で MUI を使ったコンポーネント組み込みを担当。プロジェクトチームのリードとして共に組み込み作業をしているメンバーの進行管理も行っています。休日はだいたい家で音楽を聴いており、たまにライブに出かけています。