Spectral

Stoplight社が開発するOSSのJSON/YAMLリンター。OpenAPI (v3.1, v3.0, v2.0)、Arazzo v1.0、AsyncAPI v2.xの組み込みサポートを持つ。汎用ルールセットエンジンとして任意のJSON/YAMLに使えるが、OpenAPI/AsyncAPI/JSON Schemaを念頭に設計されている。

仕組み: given / then / severity

ルールは3要素で構成される。

  • givenJSONPath Plusでドキュメント内のチェック対象要素を指定
  • thenfield(対象内のどのフィールドか)・function(assertion内容)・functionOptionsで検証内容を指定
  • severityerror / warn / info / off

組み込みルールセットはextends: ["spectral:oas", "spectral:asyncapi", "spectral:arazzo"]のように参照する。.spectral.ymlをリポジトリルートに置いて設定するのが通例。カスタムルールセットは配列にファイルパス・npmパッケージ・CDN URLを追加でextendsできる(例: OWASP APIセキュリティ観点のルールセット@stoplight/spectral-owasp-ruleset)。

CLI

spectral lint myapifile.yaml --ruleset myruleset.yaml

CI/CD

公式GitHub Action stoplightio/spectral-action が提供されており、リポジトリの.spectral.ymlを尊重してPR上でチェックできる。

Stoplightエコシステムとメンテナンス状況

SmartBearが2023年8月にStoplightを買収し、Spectral・Elements・Prismを自社OSSポートフォリオ(Swagger、SoapUI、Pact)に統合した。買収後はSpectralをSwaggerHubに統合する方向で開発が続いている。公式リポジトリstoplightio/spectral自体は買収後も存続・開発継続している。

他リンターとの関係

Redocly CLIも同種のlint機能を持ち、公式に「Spectralからの移行ガイド」を提供している。両者は競合関係にある。

#openapi #linter #devtools

出典

作成日時: 2026-08-15 16:18 / 更新日時: 2026-08-15 16:32