設定ファイルのインデントを一つ間違えるだけで、本番環境がクラッシュする可能性がある。このようなエラーはデプロイ前に発見すべきだが、ほとんどのプロジェクトでは体系的な設定検証スキームが欠けている。config-file-validator はボーイング社がオープンソース化したクロスプラットフォーム CLI ツールで、この問題を解決する——単一のツールでプロジェクト内のすべての設定ファイルを統一的に検証する。

プロジェクト概要

属性内容
GitHubBoeing/config-file-validator
Stars501
言語Go
特徴ゼロ依存、15+形式対応、Schema検証
最終更新1日前

解決する問題

現代のプロジェクトでは設定が至る所に散らばっている:

  • package.json で依存関係とスクリプトを定義
  • docker-compose.yml でサービスをオーケストレーション
  • .github/workflows/*.yml で CI/CD を設定
  • terraform/*.tf でインフラを管理
  • .env で環境変数を保存

これらのファイルの構文を手動で確認するのは非効率で見落としがちだ。さらに悪いことに、多くの設定エラーは実行時になって初めて表面化する——例えば YAML のインデントエラーがデプロイフロー全体を失敗させる可能性がある。

config-file-validator の位置づけは「設定ファイルのゲートキーパー」:コードマージ前、デプロイ前に、すべての設定ファイルの構文正確性を自動的にチェックする。

コア機能

📦 単一二進ファイル、ゼロ依存

Node.js や Python、Java ランタイムを必要とする検証ツールとは異なり、config-file-validator は単一の実行ファイル:

# ダウンロードして直接使用、ランタイムインストール不要
curl -L -o validator https://github.com/Boeing/config-file-validator/releases/latest/download/validator-linux-amd64
chmod +x validator
./validator

🗂️ 15+ 形式対応

主要な設定形式をカバー:

形式構文検証Schema検証
JSON
YAML
TOML
XML✅ (XSD)
HCL
INI
ENV
CSV
Properties

🔍 スマートファイル認識

ツールには GitHub Linguist からの一般的な設定ファイルマッピングテーブルが組み込まれており、拡張子なしの設定ファイルも自動認識できる:

  • .babelrc → JSONC として検証
  • Pipfile → TOML として検証
  • pom.xml → XML として検証
  • .gitconfig → INI として検証

追加設定不要、実行するだけで動作する。

🧪 Schema 検証

JSON および YAML ファイルは JSON Schema 検証を設定可能で、SchemaStore とも自動統合:

# tsconfig.json を自動認識し公式 Schema を適用
validator tsconfig.json

# カスタム Schema マッピング
validator --schema-mapping '{"*.config.yaml": "./schemas/config.json"}' .

クイックスタート

インストール

# macOS (Homebrew)
brew tap Boeing/tap
brew install config-file-validator

# Go install
go install github.com/Boeing/config-file-validator/v2@latest

# またはバイナリを直接ダウンロード
# https://github.com/Boeing/config-file-validator/releases

基本的な使い方

# カレントディレクトリのすべての設定ファイルを検証
validator

# 指定ディレクトリを検証
validator ./configs

# 特定のファイルを検証
validator docker-compose.yml k8s/deployment.yaml

# パスを除外
validator --exclude="vendor,node_modules" .

# 再帰的に検証
validator --recursive .

# JSON 形式で出力(CI/CD 向け)
validator --output=json .

# サイレントモード(終了コードのみ返す)
validator --quiet .

CI/CD 統合例

GitHub Actions:

name: Config Validation
on: [push, pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Boeing/config-file-validator-action@v2
        with:
          paths: '.'
          recursive: 'true'

類似ツール比較

ツールStars特徴限界
check-jsonschema800+Python、Schema 検証が強力Python 環境が必要
kubeval3.2kKubernetes 専用Kubernetes のみ検証
prettier50k+主にフォーマット検証ツールではない
config-file-validator501マルチ形式統合検証Schema エコシステムが新しい

対象ユーザー

config-file-validator は以下に最適:

  • マルチ技術スタックプロジェクトを維持するチーム(JSON/YAML/TOML 等を同時使用)
  • CI/CD フローを統一したい DevOps エンジニア
  • ゼロ依存、単一二進ファイルデプロイを追求するシーン
  • コミット前にローカルで設定を迅速に検証したい開発者

あまり向かない場合:

  • 単一技術スタックで既存の成熟した検証スキームがあるプロジェクト
  • 深いカスタム検証ルールが必要なシーン

まとめ

ボーイング社が社内プラクティスをオープンソース化したことは、エンジニアリングチームが設定管理をどれほど重視しているかを示している。501 の stars はまだ成長段階であることを示すが、機能はすでに十分に実用的——特に「1 つのツールですべての設定をカバー」という設計哲学は、多くのプロジェクトの痛点を解決する。

プロジェクト内に様々な形式の設定ファイルが散らばり、検証フローがバラバラになっている場合、このツールをツールチェーンに組み込む価値がある。

属性内容
リポジトリhttps://github.com/Boeing/config-file-validator
ライセンスApache 2.0
言語Go
メンテナーBoeing