fu7mu4’s diary

はてなダイアリーから移転しました。

SPDXファイルをLibreOfficeで編集したい

前書き

商業的な開発であっても、オープンソースソフトウェアを利用することが多いです。受領したシステムに含まれるオープンソースなどの構成一覧(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形式に変換して、LibreOfficeExcelで編集して、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 出力ファイル名