現代のデジタル社会において、ソフトウェアのソースコードを正確に特定し、長期的に保存することは極めて重要な課題です。そこで導入されたのがSWHID(SoftWare Hash IDentifier)です。これは、特定のソフトウェアソースコードとそのバージョンを一意に識別するための永続的な識別子であり、デジタルオブジェクトの識別に使われるDOI(Digital Object Identifier)のソフトウェア版のような役割を果たします。
SWHIDの最大の特徴は、外部の登録機関に依存せず、コード自体の固有の特性(ハッシュ値)に基づいて生成される「本質的(intrinsic)な識別子」である点です。これにより、Gitなどのバージョン管理システムとの高い親和性を持ちながら、コードの完全性を保証することができます。
Key Facts
- 正式名称: SoftWare Hash IDentifier(SWHID)
- 国際標準: 2025年4月にISO 18670として標準化
- 開発元: Software Heritageによって開発
- 特性: 外部レジストリを必要としない本質的な識別子
- 用途: ソースコードのバージョン、ディレクトリ、特定コンテンツの特定
- 実績: 2020年時点で約90億個のソフトウェア・アーティファクトに適用
SWHIDの構造と識別メカニズム
SWHIDは、ソフトウェアの構成要素を階層的に管理するために、メルクル有向非巡回グラフ(Merkle DAG)という構造を採用しています。これにより、単一のファイルからディレクトリ全体、あるいは特定のリリースバージョンまでを柔軟に識別することが可能です。
識別可能なオブジェクトの種類
- snapshot / release / revision: ソフトウェアの特定のバージョンや版を指します。
- directory: ファイルやサブディレクトリを含むフォルダ単位を指します。
- content: 特定のバージョンにおける、個別のソースコード断片を指します。
例えば、Linuxカーネルのバージョン3.0(2011年7月リリース)や、歴史的なアポロ11号の航法プログラム、初期のウェブブラウザであるNCSA Mosaicなどのソースコードが、この方式でアーカイブされています。
開発の経緯と社会的意義
SWHIDはもともと、Software Heritageがアーカイブをカタログ化するために使用していた「Software Heritage Identifiers」として始まりました。その後、オープン標準としての価値が認められ、専用のワーキンググループを通じて洗練され、最終的に2025年4月にISO 18670として国際標準化されました。
この標準化について、テレコム・パリ(Télécom Paris)は、脆弱性の影響を受けたソフトウェアの追跡可能性(トレーサビリティ)を高める、世界的なデジタルインフラにとって重要な前進であると評価しています。また、ユネスコ(UNESCO)も、ソフトウェアの再現性と長期的なアクセシビリティを確保する上で極めて有用であると述べています。
エコシステムへの統合
現在、SWHIDは以下のような研究リポジトリやツールに統合されています。
- 研究リポジトリ: HAL、Zenodo、フランスの学術研究フリーソフトウェアカタログなど。
- パッケージマネージャー: GNU Guixでは、元のURLからソースコードが取得できない場合に、SWHIDを用いてアーカイブからコードを回収する仕組みに利用されています。
SWHIDの概要まとめ
| 項目 | 内容 |
|---|---|
| 標準規格 | ISO/IEC 18670:2025 |
| ライセンス | Community Specification License(オープン標準) |
| 識別対象 | ソースコードのバージョン、ディレクトリ、コンテンツ |
| 識別方式 | ハッシュベース(本質的識別子) |
| 主な利点 | 永続性、再現性の確保、脆弱性追跡の容易化 |
Frequently Asked Questions
SWHIDとDOIは何が違うのですか?
DOIは一般的に外部の登録機関が管理する識別子ですが、SWHIDはソースコード自体のハッシュ値から生成されるため、外部レジストリに依存せずにコードを一意に特定できる点が異なります。
どのようなソフトウェアに利用されていますか?
Linuxカーネルのような現代的なOSから、アポロ11号の航法プログラムのような歴史的なコードまで、幅広くアーカイブと識別に利用されています。
ISO標準化されることでどのようなメリットがありますか?
国際標準(ISO 18670)となったことで、世界的なデジタルインフラとしての信頼性が向上し、異なるシステム間でのソフトウェアの追跡可能性や、脆弱性管理の効率化が期待できます。
SWHIDはどのようにしてソースコードを特定するのですか?
ソフトウェアの構成要素をメルクル有向非巡回グラフとして構造化し、それぞれの要素(スナップショット、ディレクトリ、コンテンツ)に固有のハッシュ値を割り当てることで特定します。
References
- Sabrina Granger; Baptiste Mélès; Frédéric Santos (15 November 2024), Préserver et rendre identifiables les logiciels de recherche avec Software Heritage [Preserving and identifying research software with Software Heritage] (in French), :10.46430/PHFR0034, Q134581061
{{}}: CS1 maint: deprecated archival service () - "Intrinsic and Extrinsic identifiers". Software Heritage. Retrieved 2025-05-24.
- ; Morane Gruenpeter; (1 September 2018), Identifiers for Digital Objects: the Case of Software Source Code Preservation (PDF), :10.17605/OSF.IO/KDE56, Q105094730, archived (PDF) from the original on 26 May 2025
- Axel Thévenet (26 September 2023), SWHID: Tracking past software for future humans, Q134580517, archived from the original on 26 May 2025
- Le CNRS apporte son soutien à Software Heritage [The CNRS supports Software Heritage] (in French), , 25 November 2020, Q134581205
{{}}: CS1 maint: deprecated archival service () - "Release v3.0 of torvalds/linux repository". Software Heritage. Retrieved 2025-05-24.
- "Qualified identifiers". swhid.org. Retrieved 2025-05-27.
- "Copyright Section of SWHID Specification v1.2". Retrieved 2025-05-24.
- "ISO/IEC 18670:2025". ISO. Retrieved 2025-05-24.
- "About the site". French Catalog of Academic Research Free Software. Retrieved 2025-05-24.