Skip to content
Latchkey

XMLとは? Extensible Markup Languageの解説

XML(Extensible Markup Language)は、構造化データと文書のための冗長でタグベースのフォーマットで、buildツールやテストレポートで今も一般的です。

XMLは、ネストしたタグを使って構造化データを表現する、古いが今も広く使われている方法です。JSONやYAMLより冗長ですが、その長い歴史により、多くの重要なCIアーティファクト - Mavenのbuildファイル、JUnitのテストレポート、コードカバレッジ出力 - がXMLです。読み方を知っておくと、buildツールやテストレポーターがXMLを話すときに役立ちます。

XMLとは

XMLは、開始タグと終了タグとして書かれた名前付き要素でデータを包みます。山括弧のタグの間に値を挟む形です。要素はネストしてツリーを形成し、属性を持つことができ、root要素はちょうど1つあります。JSONと違って、XMLはテキストとマークアップを混在できるため、データだけでなく文書にも適していました。

XMLが冗長な理由

すべての値が対応する開始タグと終了タグで囲まれるため、XMLファイルは同等のJSONやYAMLより大きく、ノイズが多くなります。その冗長さはある種の力 - namespace、schema、属性 - を買いますが、単純な設定については、ほとんどのエコシステムがより軽量なフォーマットに移行しました。

schemaによる検証

XMLは、どの要素と属性がどの順序で許可されるかを定義するschema(XSDまたはDTD)に対して検証できます。これにより、ツールは処理前に不正な設定を拒否でき、これはエンタープライズのbuildシステムがXMLに標準化した理由の一部です。

CIパイプラインにおけるXML

2つのXMLアーティファクトがCIを支配しています。MavenとAntはbuildをpom.xmlとbuild.xmlで定義します。そしてJUnit XMLレポートは事実上標準のテスト結果フォーマットです - 多くの言語のtest runnerがこれを出力するため、CIのダッシュボードは合格と失敗のテストを統一的に表示できます。

JUnit XML in a test job
# A CI step that produces and uploads JUnit XML
steps:
  - run: pytest --junitxml=results.xml
  - uses: actions/upload-artifact@v4
    with:
      name: test-results
      path: results.xml

Latchkeyについての注記

Latchkeyのrunnerで生成されるJUnit XMLレポートとカバレッジXMLは通常のアーティファクトです。すでに使っているのと同じupload-artifactやレポート用のactionでアップロードして利用でき、Latchkey固有の扱いは不要です。

重要なポイント

  • XMLは構造化データを、1つのroot要素を持つ単一のツリーを形成するネストした名前付きタグに格納します。
  • JSONやYAMLより冗長ですが、namespace、属性、schemaによる検証をサポートします。
  • CIでは、pom.xmlのbuildファイルと普遍的なJUnit XMLテストレポート形式として生き続けています。

関連ガイド