config-file-validator:501⭐のクロスプラットフォーム設定検証ツール、ボーイング製
設定ファイルのインデントを一つ間違えるだけで、本番環境がクラッシュする可能性がある。このようなエラーはデプロイ前に発見すべきだが、ほとんどのプロジェクトでは体系的な設定検証スキームが欠けている。config-file-validator はボーイング社がオープンソース化したクロスプラットフォーム CLI ツールで、この問題を解決する——単一のツールでプロジェクト内のすべての設定ファイルを統一的に検証する。
プロジェクト概要
| 属性 | 内容 |
|---|---|
| GitHub | Boeing/config-file-validator |
| Stars | 501 |
| 言語 | 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-jsonschema | 800+ | Python、Schema 検証が強力 | Python 環境が必要 |
| kubeval | 3.2k | Kubernetes 専用 | Kubernetes のみ検証 |
| prettier | 50k+ | 主にフォーマット | 検証ツールではない |
| config-file-validator | 501 | マルチ形式統合検証 | 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 |