前書き
商業的な開発であっても、オープンソースソフトウェアを利用することが多いです。受領したシステムに含まれるオープンソースなどの構成一覧(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.系とします。
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 |
出力ファイル名 |
変換コマンドを RdfToSpreadsheet から TagToSpreadsheet に変えて実行します。
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 |
出力ファイル名 |