【入門編】ESLintの『実行結果のJSON出力』を活かす:CIツールとの連携でLintエラーを可視化するダッシュボード構築 – デバッグ・コード品質・テストツール生産性向上バイブル

エンジニアの皆さん、こんにちは。

コードを書いている時、「この警告、直す価値はあるのか?」「チーム全体でコードの品質は向上しているのか?」と立ち止まったことはありませんか?

ESLintをただ「赤線を消すためだけのツール」だと思っているなら、それは宝の持ち腐れです。今回は、ESLintの真の価値である「データの可視化」に焦点を当て、あなたのチームの技術的負債を「数値」として捉え、CI/CDパイプラインを「品質管理ダッシュボード」へと昇華させる戦略を伝授します。

—

1. なぜ「JSON出力」なのか?:静的解析のパラダイムシフト

通常、私たちはターミナルに流れるESLintの結果を眺めて一喜一憂します。しかし、これは「今」のバグにしか反応できない「対症療法」です。

ESLintの `–format json` オプションを使うと、解析結果が構造化データ(JSON)として吐き出されます。これこそが、「品質の時系列解析」への扉です。

  • 推移の可視化: 警告数が週単位で増えているのか、減っているのか。
  • ボトルネックの特定: どのファイル、あるいはどのルールが最も開発速度を削いでいるのか。
  • 自動化された品質ゲート: 特定の閾値を超えたらCIを落とすだけでなく、Slackに「今週は警告が10件増えました」と通知する。

これをマスターすれば、あなたのチームは「感覚」ではなく「事実」に基づいてコード品質をコントロールできるようになります。

—

2. 実践:JSON出力を活用したパイプラインの構築

まずは、開発環境でESLintのJSON出力を確認しましょう。以下のコマンドを実行してください。

–format json で結果をファイルに出力する
–output-file で指定した場所にJSONを保存する
npx eslint . –format json –output-file lint-report.json

この `lint-report.json` には、どのファイルで、どのルールが、何行目に違反しているかが配列で収められています。これが、CIツールが読み解く「設計図」になります。

CIパイプラインへの統合(GitHub Actionsの例)

CI上で結果を保存し、それを分析ツールに渡すワークフローの雛形です。

.github/workflows/lint-check.yml
jobs:
lint:
runs-on: ubuntu-latest
steps:

  • uses: actions/checkout@v3
  • name: Install Dependencies

run: npm ci

  • name: Run ESLint with JSON output

# 失敗しても後続のステップで結果を分析したいので、|| true で終了ステータスを制御する
run: npx eslint . –format json –output-file lint-report.json || true

  • name: Upload Report

# このJSONをアーティファクトとして保存し、後続のダッシュボード作成プロセスへ渡す
uses: actions/upload-artifact@v3
with:
name: eslint-report
path: lint-report.json

—

3. 「現場で震えるほど役立つ」データ解析の考え方

JSONを取得したら、次は解析です。私はよく、このJSONをスクリプトで集計し、「警告ルール別のランキング」を生成しています。

例えば、`no-unused-vars`(使われていない変数)が圧倒的に多いなら、「型定義を見直すべき」という戦略的判断ができますし、`complexity`(循環的複雑度)が高いなら「設計の刷新時期」というサインになります。

簡単な解析スクリプト(Node.js)

// analyze-lint.js
const fs = require(‘fs’);
const report = JSON.parse(fs.readFileSync(‘lint-report.json’, ‘utf8’));

// ルールごとの違反数をカウントする
const stats = report.reduce((acc, file) => {
file.messages.forEach(msg => {
acc[msg.ruleId] = (acc[msg.ruleId] || 0) + 1;
});
return acc;
}, {});

console.table(stats); // ターミナルに美しい表として出力

—

4. チームの文化を変える「品質ダッシュボード」

このデータを「Grafana」や「QuickSight」などのBIツールに流し込むと、驚くような変化が起きます。

1. 視覚的な達成感: 「警告数が減っている」というグラフは、コードレビューよりも強力なモチベーションになります。
2. 経営層への説明責任: 「なぜリファクタリングの時間が必要なのか?」という問いに対し、「品質グラフがレッドゾーンに達しているため」と、即座に根拠を提示できるようになります。

最後に:自動化は手段であり、目的ではない

ESLintとPrettierの導入、そしてJSON解析による可視化。これらはすべて、「コードレビューという人間同士の対話を、より建設的な議論にするため」にあります。

些細な構文の指摘はツールに任せ、人間は「この設計でビジネスの要件を満たせるか?」という高い視座の議論に時間を割く。これこそが、アーキテクトが目指すべき理想の開発環境です。

今日から、あなたのコードを「静的な文字列」としてではなく、「解析可能な資産」として扱ってみてください。その先に、これまでとは全く違うレベルの開発体験が待っています。

何か詰まったら、いつでも聞いてくださいね。あなたのエンジニアリングを全力でサポートします。

タイトルとURLをコピーしました