AirbnbのESLint設定でコード品質を向上させる方法と導入手順

Published on: | Last updated:

最近、ESLintの設定について考えてた。チームでコード書くなら、やっぱり必須だし。知ってる?昔から鉄板だったAirbnbのルール。すごく人気だったよね。僕もずっと使ってたし。

でも、あれ、もう3年以上更新されてないんだよね…。正直、これが結構な問題で。特に、最新のESLint v9で導入された新しい設定方式、フラットコンフィグに対応してないのが致命的。

じゃあどうするかって話。そこで出てくるのが、今日の本題。eslint-config-airbnb-extended。まあ、名前の通り、Airbnb設定の拡張版みたいなやつ。

で、これ何がいいの?

一言で言うと、「現代版のAirbnbルール」かな。古い.eslintrcファイルを使うやり方から完全に脱却して、ESLint v9以降の標準になった「フラットコンフィグ」(eslint.config.mjs)に特化して作られてる。ここが一番大きい。

つまり、もう古いやり方に悩まされなくていい。しかも、JavaScriptだけじゃなくて、TypeScriptにも標準で対応してる。これもかなり助かるポイント。

基本的な思想はAirbnbのスタイルガイドを引き継いでるから、あの厳格で一貫性のある感じはそのまま。その上で、現代的な開発に必要なものが色々追加されてる感じ。

どうやって始める?【クイックスタート】

セットアップは、びっくりするくらい簡単。昔みたいに一つずつプラグイン入れたり、設定ファイルとにらめっこしたり…みたいなのは、もうしなくていい。

ターミナルで、プロジェクトのルートディレクトリに移動して、これを実行するだけ。

npx create-airbnb-x-config

そうすると、対話式のツールが立ち上がって、いくつか質問される。

  • 使ってるパッケージマネージャー(npm/yarn/pnpm)はどれ?とか。これは自動で検出してくれる。
  • 必要なパッケージを全部インストールしてくれる。
  • 最終的に、コピペするだけのeslint.config.mjsの中身を提示してくれる。

マジでこれだけで終わる。初めて導入する人には、絶対この方法がおすすめ。手動でやりたい人向けの方法もドキュメントにはあるけど、まあ、最初はこれで十分じゃないかな。

設定ファイルの移行イメージ:古い方式から新しいフラットコンフィグへ
設定ファイルの移行イメージ:古い方式から新しいフラットコンフィグへ

主な機能とか、何ができるのか

このパッケージがやってくれること、ざっとまとめるとこんな感じ。

  • ReactとJSXのサポート: eslint-plugin-reactとかeslint-plugin-jsx-a11yを使って、Reactコンポーネントの書き方をチェックしてくれる。アクセシビリティのルールも入ってるのが良い。
  • React Hooksのルール: Hooksのよくある間違いを防いでくれるやつ。eslint-plugin-react-hooksのおかげで、依存配列の漏れとかを指摘してくれる。これは本当に助かる。
  • Prettierとの連携: ここも大事。コードフォーマッターのPrettierと喧嘩しないように、eslint-config-prettierがちゃんと設定されてる。フォーマットはPrettier、コードの品質はESLint、っていう役割分担が綺麗にできる。
  • インポート文の整理: eslint-import-xが、ごちゃごちゃしがちなimport文を綺麗に整理してくれる。特にTypeScriptのパスエイリアス(@/components/...みたいなやつ)にも対応してるのが便利。
  • Node.jsのベストプラクティス: バックエンドのコード品質を上げるためのルールも含まれてる。eslint-plugin-nが入ってる。

要するに、フロントエンドからバックエンドまで、現代的なJavaScript/TypeScript開発で「これ、欲しかったんだよね」っていうのが大体入ってる全部盛りセット、みたいな感じかな。

もっと厳しくできる?「Strictモード」の話

で、ここからがもっと面白いところ。この設定には、デフォルトではオフになってる「厳格な(Strict)ルールセット」が用意されてる。

正直、これを有効にすると、最初はLinterにめちゃくちゃ怒られる。でも、コードの品質をもう一段階上げたいなら、絶対試す価値はある。特にチーム開発では、この「厳しさ」が後々のコードレビューのコストを劇的に下げてくれる。

日本の大きなテック企業の社内コーディング規約とかって、こういう細かい部分まで結構厳しく決められてたりするよね。それに近いレベルの統制を、OSSの力で手軽に導入できる感じ。一方で、海外のドキュメント、例えばESLint公式なんかは「ルールは自分で選ぶもの」という思想が強いけど、このパッケージは「良いとされてる強いルール」をあらかじめセットで提供してくれるのが親切。

具体的にどんなルールがあるのか、ちょっと見てみようか。

コード比較:Strictルール適用前(左)と適用後(右)
コード比較:Strictルール適用前(左)と適用後(右)
ルールセット 何をしてくれるか(僕なりの解釈)
インポート文 (importsStrict)

import文の順番を強制的に揃える。最初は「そこまで?」って思うけど、ファイルの上部がいつも同じ構造になるのは、読みやすさに直結する。特に`type`インポートを分離してくれるのが地味に嬉しい。

React (react.strict)

これも便利。propsをアルファベット順にソートしたりとか。あと、TypeScript使ってるなら不要な`prop-types`を無効にしてくれたり。mapで展開する要素に`key`がない、みたいなありがちなミスもちゃんと怒ってくれる。

TypeScript (typescriptEslintStrict)

これが一番「痛い」けど、一番効果があるやつかも。`any`型を禁止したり、`@ts-ignore`じゃなくて理由を書く`@ts-expect-error`を推奨したり。安易な「!」(non-null assertion)も禁止。代わりに`?.`とか`??`を使えってこと。バグを未然に防ぐための、愛のある厳しさだね。

これらの厳格ルール、最初は本当に「うるさいな…」って感じると思う。僕もそうだった。でも、慣れてくると、これがないコードベースが怖く感じるようになる。なんていうか、コードの「安全装置」みたいなものだから。

コード品質の抽象的イメージ:混沌から秩序へ
コード品質の抽象的イメージ:混沌から秩序へ

まとめというか、今の所の感想

長々と書いたけど、要するに、

「ESLint v9以降を使うなら、もう古いAirbnb設定に固執する理由はない。eslint-config-airbnb-extendedを使えば、もっと簡単に、もっと強力な静的解析の恩恵を受けられるよ」

ってことかな。特にこれから新しいプロジェクトを始めるとか、既存のプロジェクトのリンター設定を見直したい、って思ってる人には、すごく良い選択肢だと思う。

セットアップは一瞬で終わるし、TypeScriptにも対応してるし、Prettierとも仲良くしてくれる。で、もし、もっとコード品質にこだわりたいなら、「Strictモード」っていう奥の手もある。

完璧なツールなんてないけど、これはかなり「今の答え」に近いんじゃないかな。個人的にはそう思ってる。


それで、ちょっと聞いてみたいんだけど、もしこういうStrictルールを使ったことがある人がいたら。どのルールが一番「効いた」とか、逆に「これはやりすぎだろ!」って思ったとか、ありますか?もしよかったら、下で教えてくれると嬉しいです。

Related to this topic:

Comments

  1. Guest 2025-11-09 Reply
    最近の話なんだけど、サークルでWebアプリ作ることになってさ、JavaScript書くたびにみんなのコードが見事にバラバラだったんだよね…。いや、本当に、同じファイルなのにスペースとかインデントとか好き放題って感じで。こういうの直すためにはどうしたらいいんだろう?と思って色々ググったら、「AirbnbのESLint設定が神」ってネットで騒がれてて。「それ絶対良いじゃん」って思ったけど、実際入れ方とか何も分からなくて、とりあえず先輩につかまえて「これどうやるんですか?」みたいな質問責めになっちゃった。 npmパッケージも結構必要らしくて、それインストールするためだけに情報センター行って、Wi-Fi爆速なのありがたかったなあ…ダウンロードばっかして気付いたら小一時間(笑)。あと途中で「どのパッケージ必要なんだっけ?」とかなったり、コマンド間違えて変なエラー出たりして「あ〜またやっちゃった」みたいな。でもまあ、一通り入れてみたら意外と簡単だった気もする。今思い返すと、この地味な手順踏んだからこそレビューでも変な指摘減ったし、「この書き方読みにくい!」とかケンカ腰になる瞬間もほぼ消えたかなー。 先生、もしできればESLint用のライセンスちょっと増やしてもらえるとうれしいです…。まあ無理なら自分たちでも何とか頑張って工夫するつもりだし、とりあえず相談でした!
  2. Guest 2025-09-08 Reply
    グローバルな開発現場では、コードの品質と一貫性が鍵だよね。Airbnbのスタイルガイドって、めっちゃ参考になるし、チームの生産性も上がるから、ぜひ試してみて!
  3. Guest 2025-08-26 Reply
    おお、Airbnbのリントルールって超便利だよね!最近のプロジェクトでめっちゃ助かってて、コード品質が劇的に上がったわ。チームの一貫性マジ大事だし、TypeScriptとの相性も抜群だし…
  4. Guest 2025-08-13 Reply
    うちの息子、プログラミング学んでるんだけど、こういうコーディングルールって大事だよね。最近、彼のコードを見てたら、ちょっと散らかってて。でも、こういうガイドラインって成長に必要だし…
  5. Guest 2025-08-07 Reply
    うーん、このコーディングルールって、子供のプログラミング勉強にも役立つのかな?難しそうだけど、整理整頓するのは大切だよね。
  6. Guest 2025-05-04 Reply
    この内容は興味深いですね!ただ、厳格なルールが逆に開発の柔軟性を損なうことはないでしょうか?チームによってはもっと自由なスタイルを好む場合もあると思うんですが、どう思いますか?
  7. Guest 2025-05-01 Reply
    クリーンなコードを書くことの重要性、特にチームでの作業には欠かせないですよね!eslint-config-airbnb-extendedを使った経験があれば、ぜひシェアしてほしいです。どんな設定が特に役立ちましたか?