前書き
商業的な開発であっても、オープンソースソフトウェアを利用することが多いです。受領したシステムに含まれるオープンソースなどの構成一覧(Bill of Materials)はどのような形式を用いているのがよいのでしょうか。デファクトスタンダードの形式としてSPDX形式がありますが、日本ではWordやExcelを使って情報交換することが多いように思えます。この記事ではデファクトスタンダードのSPDX形式を適切に使用する方法を学びましょう。
環境
この文章を書いた環境は、macOS Mojave ですが、使用するツールはJava製で JRE (1.8以降) があれば動作します。 またLibreOffice などの Excelファイルが編集できればよいでしょう。
SPDXとは
SPDX(Software Package Data Exchang)とは、ソフトウェアの構成一覧(BoM)の交換についてのオープンスタンダードなLinux Foundation傘下の団体です。またこの団体はSPDXライセンス一覧やSPDX形式というファイル形式を定めています。
SPDXファイルの取得
多くのオープンソースソフトウェアを検出するツールはSPDX形式に対応しています。
Fossology は 標準で対応しています。 SPDX形式の出力方法は例えば を参照してください。
Black Duck Hub は Black Duck SPDX Report Utility を使用すると取得できるそうです。
SPDX ファイルの種類
SPDXツールを使用するとSPDXファイルを互いに変換できます。 例えば、OSS検出ツールでRDF形式のSPDXファイルを生成し、それをSpreadSheet形式に変換して、LibreOfficeやExcelで編集して、RDF形式に戻すといった操作ができます。 SPDXファイルにはバージョンがありますがこの記事は現行はv2.系とします。
形式名 | ファイル形式の概要 | 用途(主観) |
---|---|---|
RDF | いわゆる XML | ツール用 |
TagValue | Tag-Value形式 | ツール用 |
SpreadSheet | Microsoft XLS 形式 | 人間向け |
SPDXツールでの変換
ここでは RDF形式のSPDXファイルを SpreadSheet形式に変換します。
インストール
SPDX ツールは Java で作成されています。実行には1.8以降のJREが必要です。 また、spdxのtoolのリリースページからダウンロードできます。
最新版のSourceをダウンロードしてmavenを使うとビルドできます。 ビルドをしたくない場合は、Version 2.1.12 の spdx-tools-2.1.12-jar-with-dependencies.jar をダウンロードしましょう。
RDFからSpreadsheet形式へ変換
ターミナル等で以下のようにコマンドを実行します。各項目については表を参照してください。
java -jar spdx-tools-2.1.12-jar-with-dependencies.jar RdfToSpreadsheet SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls
コマンドの各項目 | 説明 |
---|---|
java | javaコマンド |
-jar | jarオプション |
spdx-tools-2.1.12-jar-with-dependencies.jar | SPDXツールのJarファイル |
RdfToSpreadsheet | 変換コマンド名 |
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf | 変換前のファイル名 |
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls | 出力ファイル名 |
TAG-VALUE形式の場合
変換コマンドを RdfToSpreadsheet から TagToSpreadsheet に変えて実行します。
Excelファイルを開く
SPDXツールで変換できた Excelファイルを LibreOfficeやMS Excelなどの対応するソフトで開いてください。 重要なシートの情報をまとめました。
なお、Per File Infoには各ファイルのチェックサムが記載されています。
シート名 | シートの主な情報 |
---|---|
Document Info | SPDXのバージョンなど |
Package Info | スキャンした対象の名前、チェックサム、チェックツール名など |
Extracted License Info | 検出されたオープンソースライセンス名など |
Per File Info | スキャンしたファイル毎のライセンス情報 |
Snippet | ファイルの一部にオープンソースソフトウェアが含まれている場合の情報 |
Reviewers | レビュー者の情報 |
SpreadSheet形式からRDF形式へ変換
Excelファイルを編集が終りましたら、Spreadsheet形式からRDF形式に戻しましょう。
ターミナル等で以下のようにコマンドを実行します。各項目については表を参照してください。
java -jar spdx-tools-2.1.12-jar-with-dependencies.jar SpreadsheetToRdf SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf
コマンドの各項目 | 説明 |
---|---|
java | javaコマンド |
-jar | jarオプション |
spdx-tools-2.1.12-jar-with-dependencies.jar | SPDXツールのJarファイル |
SpreadsheetToRdf | 変換コマンド名 |
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.xls | 変換前のファイル名 |
SPDX2_ccl-1.11.5-darwinx86.tar.gz_1540952703-spdx.rdf | 出力ファイル名 |