ガイド · 05

SPDX 識別子とファイルヘッダー

SPDX-License-Identifier と SPDX-FileCopyrightText のヘッダーの書き方、廃止された識別子(GPL-2.0→GPL-2.0-only)、パッケージのメタデータの license フィールド、REUSE 仕様をまとめます。

最終確認: 2026-09-23

SPDX とは

SPDX(Software Package Data Exchange)は Linux Foundation 傘下のプロジェクトで、ソフトウェアの構成要素とライセンス情報を機械が読める形で表現するための標準です。2021年に国際標準 ISO/IEC 5962:2021 になりました。その中で最も広く使われているのが SPDX ライセンスリストの短い識別子です。「MIT License」「The MIT license」「MIT ライセンス」のようにばらばらな名前の代わりに、MIT の一つで書こうという約束です。

ファイルヘッダーの2行

ソースファイルの先頭に次の2行をコメントとして入れれば、人もツールもそのファイルの著作権者とライセンスをすぐに把握できます。

// SPDX-FileCopyrightText: 2026 Jane Doe <jane@example.com>
// SPDX-License-Identifier: MIT

生成ツールのファイルヘッダータブは、この2行を7種類のコメント形式で作成します。

廃止された識別子に注意

SPDX ライセンスリスト 3.0(2017年12月)から、GNU ライセンスのバージョン条項を識別子に明示するように変わりました。

廃止された識別子現在の識別子
GPL-2.0GPL-2.0-only
GPL-2.0+GPL-2.0-or-later
GPL-3.0GPL-3.0-only
LGPL-2.1LGPL-2.1-only
AGPL-3.0AGPL-3.0-only

単に GPL-3.0 と書くと、「only」なのか「or later」なのかがわからないからです。2つの方式の違いは only vs or-later にまとめました。

パッケージのメタデータ

ほとんどのパッケージマネージャーは SPDX 識別子や式を受け付けます。

エコシステムファイル
npmpackage.json"license": "MIT" · 非公開は "UNLICENSED"
RustCargo.tomllicense = "MIT OR Apache-2.0"
Pythonpyproject.tomllicense = "Apache-2.0" (PEP 639)
Mavenpom.xml<licenses> の中に名前と URL

npm の UNLICENSED は「Unlicense」とはまったく違う意味で、利用を許可しない非公開パッケージであることを示します。つづりが似ているため、間違いがよく起こります。

REUSE: リポジトリ全体を機械が読めるように

欧州自由ソフトウェア財団(FSFE)の REUSE 仕様は、SPDX ヘッダーをリポジトリ全体に一貫して適用する方法を定めています。

  1. すべてのライセンス原文を LICENSES/ フォルダーに SPDX識別子.txt という名前で置きます(例: LICENSES/MIT.txt)。
  2. 各ファイルに SPDX-FileCopyrightTextSPDX-License-Identifier を入れます。
  3. コメントを入れられないファイル(画像、JSON など)は、ファイル名.license という隣接ファイルか、リポジトリのルートの REUSE.toml に情報を書きます。
  4. reuse lint ツールで漏れたファイルがないか検査します。

実務のヒント

この記事は一般的な情報であり、法的助言ではありません。重要な決定は専門家にご相談ください。

参考資料