Media > AI活用ユースケース > 情報システム > 製品に組み込んだOSSのライセンス条件を、リリース前に点検する

製品に組み込んだOSSのライセンス条件を、リリース前に点検する

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

製品に含まれるOSSの一覧とライセンス条文を入力に、自社の配布形態で守るべき条件と、抵触のおそれがある箇所を一覧にします。担当者の作業は、条文を読むことから、指摘された箇所を確かめることに変わります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Make/n8n/Power Automate/Python
対象業界
IT・SaaS/医療/製造/金融
対象部門
情報システム/知財
対象業務
内容確認・チェック/台帳・マスタ管理
主な課題
判断に時間がかかる/属人化している/確認ミスが多い
AIで行う処理
判定
主な効果
品質標準化/属人化解消/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
必須
現在工数
35h/月
AI導入後
10h/月
想定削減
71%
年間削減
300h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 開発者が新しいライブラリを使いたいと申請する
  2. 知財担当がライセンス名を見る
  3. 名前で分からないものは、条文を開いて読む
  4. 自社の使い方(SaaSか、顧客環境への設置か)を開発者に聞く
  5. 条件(表示義務・ソース開示・改変の扱い)を整理する
  6. 使ってよいか、条件付きか、やめるかを判断する
  7. 判断を台帳に記録する
  8. リリース前に、実際に入っているものと台帳を照合する
導入後(After)
  1. 開発者がリリース用のブランチを作る
  2. 自動依存関係からSBOM(部品表)を出力する
  3. 自動前回のSBOMと比べ、増えたもの・版が変わったものだけを抜き出す
  4. 自動ライセンス識別子を正規の一覧に突き合わせ、未知のものを分ける
  5. 自動過去の判断台帳を引き、同じ組み合わせがあれば前回の判断を引き継ぐ
  6. 自動残ったものについて、条文と自社の配布形態から論点を整理する
  7. 知財担当が論点を見て、可否を決める
  8. 自動判断を台帳へ記録し、次回はそこから引かれる
各工程の詳しい説明を読む
  1. 開発者が新しいライブラリを使いたいと申請する
  2. 知財担当がライセンス名を見る
  3. 名前で分からないものは、条文を開いて読む
  4. 自社の使い方(SaaSか、顧客環境への設置か)を開発者に聞く
  5. 条件(表示義務・ソース開示・改変の扱い)を整理する
  6. 使ってよいか、条件付きか、やめるかを判断する
  7. 判断を台帳に記録する
  8. リリース前に、実際に入っているものと台帳を照合する

問題は4つあります。

(a)読める人が1人しかいない。 条文は英語で、似た名前で内容が違うものが多くあります。判断の質が担当者に依存しています。

(b)申請されない依存がある。 直接入れたライブラリは申請されますが、そのライブラリがさらに引いてくるもの(間接依存)は申請の対象外になっています。数でいえば、こちらのほうがはるかに多くあります。

(c)同じ調査を繰り返している。 去年判断した組み合わせを、担当者が代わって、また最初から調べています。

(d)リリース直前に発覚する。 8の照合で初めて見つかると、差し替えの時間がありません。「今回は目をつぶる」が積み上がります。

  1. 開発者がリリース用のブランチを作る
  2. 【自動】 依存関係からSBOM(部品表)を出力する
  3. 【自動】 前回のSBOMと比べ、増えたもの・版が変わったものだけを抜き出す
  4. 【自動】 ライセンス識別子を正規の一覧に突き合わせ、未知のものを分ける
  5. 【自動】 過去の判断台帳を引き、同じ組み合わせがあれば前回の判断を引き継ぐ
  6. 【自動】 残ったものについて、条文と自社の配布形態から論点を整理する
  7. 【人】 知財担当が論点を見て、可否を決める
  8. 【自動】 判断を台帳へ記録し、次回はそこから引かれる

自動化されるのは「集める」「差分をとる」「過去を引く」「条文を論点に直す」の4つです。残るのは「決める」だけになります。

5の差分と過去引きが、この構成でもっとも効きます。 月60件のうち、実際に新しい判断が要るのは10件前後です。

02今回想定するシステム構成

構成図
リリース用ブランチの作成
   │
   ▼【トリガー】タグが付いたとき / 週次
Python(CI上で実行)
   │
   ├──▶ SBOMの出力(依存関係グラフ / パッケージマネージャ)
   │       └─ 部品名 / 版 / ライセンス識別子 / 依存の経路
   │
   ├──▶ 前回SBOMとの差分(増加・版上げ・削除)
   │
   ├──▶ ライセンス識別子の正規化(SPDX識別子へ寄せる)
   │
   ├──▶ 判断台帳の照合(部品 × 版 × 配布形態)
   │
   └──▶ LLM API ── 残った分の論点整理と抵触のおそれの判定
   │
   ▼
点検レポート(未知・要判断・過去どおり に3分割)──【人が可否を決める】
   │
   ▼
判断台帳へ記録 + 課題管理ツールへ起票
役割想定する製品代替候補
実行環境PythonGoogle Apps Script
処理Python(SBOM生成・差分・台帳照合)各社のビルドツール
生成AIClaude APIChatGPT、Gemini
連携Power AutomateMake、n8n

専用のOSSコンプライアンス製品を先に検討してください。 依存の検出、ライセンスの特定、ポリシー判定、レポートまでが製品として組まれています。自前で組む価値があるのは、自社の配布形態が複数あって、製品の既定のポリシーでは判定が合わない場合です。

03どうやって実装するのか

Step1

処理の起点を決める

リリース用のタグが付いたときを起点にします。あわせて、週1回の定期実行も入れます。タグだけにすると、開発中に入った依存の発覚がリリース直前になるためです。

差分が0件のときは何も通知しません。毎回レポートが来ると読まれなくなります。

Step2

入力データを集める

データ中身取得元
SBOM部品名、版、ライセンス識別子、依存の経路リポジトリの依存関係グラフ
前回のSBOM同上(前回リリース時点)保管先
ライセンス条文識別子ごとの全文公開されている一覧
判断台帳部品、版、配布形態、判断、判断日、理由社内の台帳
配布形態の定義製品ごとの出し方(自社運用/顧客環境への設置/組込み)事業部が管理
Step3

データの取得方法を決める

SBOM: リポジトリの依存関係グラフから出力します。GitHubでは、依存関係グラフの内容をSBOMとして書き出す機能があり、画面からの出力、REST API、ワークフローの3通りで取得できます。書き出される形式は業界標準のSPDXで、版・パッケージ識別子・ライセンス・依存の経路・著作権表示を含みます

ライセンス条文: SPDXのライセンス一覧を使います。この一覧は、よく使われるライセンスと例外について、短い識別子・正式名称・ライセンス本文・恒久URLを組にして持ち、機械可読のデータファイルも配布されています。自社で条文を集めて回る必要はありません。

判断台帳: 社内で持ちます。列は「部品名/版の範囲/配布形態/判断/条件/判断日/判断者」です。この台帳が、2年目以降の工数を決めます。

配布形態の定義: これは人が決める情報です。製品ごとに「自社運用のみ」「顧客環境へ設置」「機器に組み込んで出荷」のどれかを登録しておきます。ここを開発者に毎回聞いている限り、自動化は完成しません。

Step4

AIへ渡す前に整形する

  1. 識別子の正規化 … 表記が Apache 2.0 Apache License 2.0 Apache-2.0 と揺れます。SPDXの短い識別子(Apache-2.0 MIT GPL-3.0-only BSD-3-Clause など)に寄せます
  2. 未知の識別子の分離 … 一覧にないもの、NOASSERTION のように不明とされたものは、AIに渡さず人へ回します。ここを推測させると事故になります
  3. 差分の抽出 … 前回SBOMと比べ、新規・版上げ・削除に分けます。版上げはライセンス変更が起きうるので、同じ部品でも再判定の対象にします
  4. 重複の集約 … 同じ部品が複数の経路から入ることがあります。部品と版で1件にまとめ、経路は付帯情報として持ちます
  5. デュアルライセンスの展開 … 「AまたはB」で提供されるものは、選択肢を両方残したまま次へ渡します
Step5

AIに処理させる

処理の役割を分けます。

プログラムにさせること: SBOMの取得、差分、識別子の正規化、台帳の照合、未知の分離。ここはすべて機械的な処理で、AIを使いません。 判定の入口を安定させるためです。

LLMにさせること:

処理内容
条件の要約条文から、表示義務・ソース開示・改変時の扱い・特許条項の有無を整理する
配布形態との突き合わせ自社の出し方で、その条件が発動するかを整理する
組み合わせの指摘同じ製品に入った部品どうしで、条件が衝突しうる箇所を挙げる
論点の文章化知財担当が読んで判断できる短さにまとめる

LLMに「使ってよい/だめ」を言わせません。 出させるのは「何が発動し、何を確かめる必要があるか」までです。可否は人が決めます。

Step6

指示内容を固定する

あなたは、ソフトウェア製品に組み込まれたオープンソースの
ライセンス条件を整理する担当者です。

【厳守事項】
- 可否の結論を書かないでください。発動する条件と、
  確認すべき点を挙げるところまでが役割です。
- 条文に書かれていないことを補わないでください。
  条文から読み取れない点は unclear に列挙してください。
- 法令の解釈、判例、一般論を持ち出さないでください。
  参照するのは、渡されたライセンス条文だけです。
- ライセンス識別子を書き換えないでください。
- 提供された配布形態以外の場合を想定しないでください。

【製品の配布形態】
{distribution_form}

【今回増えた部品】
{new_components}

【該当するライセンス条文】
{license_texts}

【同じ製品にすでに入っている部品とライセンス】
{existing_components}

【過去の判断(同じ部品・近い版)】
{past_decisions}

「可否の結論を書かない」の1行が、この構成の要です。 ライセンスの可否は、自社の事業判断と契約の問題です。AIに結論を出させると、その結論が独り歩きします。

Step7

出力形式を固定する

{
  "component": "",
  "version": "",
  "license_ids": [],
  "distribution_form": "",
  "obligations": [
    {
      "type": "attribution | source_disclosure | modification_notice | patent | other",
      "triggered": "yes | no | depends",
      "condition": "",
      "source_clause": ""
    }
  ],
  "conflicts_with": [],
  "unclear": [],
  "past_decision_ref": "",
  "needs_human": true
}

source_clause に、判断のもとにした条文の箇所を必ず入れさせます。これがないと、人が確かめるのに条文を最初から読むことになり、削減になりません。

needs_human は既定で true です。

Step8

システムへ連携する

つなぎ先何をするか
リポジトリSBOMを取り出す。判断結果をリリースの確認項目に反映する
課題管理ツール要判断の部品を1件1課題として起票する
判断台帳確定した判断を書き戻す。次回はここから引く
配布用の表示ファイル表示義務のある部品を、製品同梱の表示に反映する

最後の行を省かないでください。 表示義務があると判定しただけでは、義務は果たされません。製品に同梱する表示ファイルまでつないで、はじめて業務が閉じます。

Step9

人が確認する

全件、人が確定します。段階的な自動確定もしません。

理由は、ライセンスの判断が事業判断だからです。同じライブラリでも、自社運用なら問題なく、顧客環境へ設置するなら条件が付くことがあります。この判断は、製品の出し方と顧客との契約を知っている人にしかできません。

確認を速くするための設計が重要です。

  • レポートを 「未知」「要判断」「過去どおり」の3つに分けて出す
  • 「過去どおり」は一覧で見せ、1件ずつ開かせない
  • 「要判断」には、条文の該当箇所を引用して添える
  • 前回からの差分だけを出す。全件を毎回並べない

これらがないと、レポートが長くなり、読まれなくなります。

Step10

例外に対処する

起きること対応
ライセンス識別子が取れない(NOASSERTIONAIに渡さず人へ回す。推測させない
一覧にない独自ライセンス人へ回す。条文の入手先も一緒に提示する
同じ部品に複数のライセンスが併記されている選択肢を保ったまま人へ回す。どれを選ぶかは人の判断
版だけが上がった再判定の対象にする。版でライセンスが変わることがある
同じ部品が複数の経路から入っている1件に集約し、経路は付帯情報として残す
条文が長すぎて1回で渡せない条項単位に分けて渡す。要約して渡さない
過去の判断と食い違う結果が出た自動で上書きしない。両方を並べて人へ回す
差分が0件通知しない
リリース直前に要判断が大量に出た件数を見せ、リリース判定の材料にする。自動で通す分岐を作らない
Step11

記録を残す

  • SBOM(リリースごと。製品に何が入っていたかの記録になります
  • ライセンス条文の取得日と版
  • AIが出した論点と、引用した条文の箇所
  • 人が下した判断、判断者、判断日、理由
  • 人がAIの整理を訂正した箇所

最後の項目は精度の実測値になります。「表示義務の判定はそのまま通るが、組み合わせの指摘は半分が的外れ」と分かれば、どこを直すかが決まります。

SBOMそのものの保存は、別の意味でも効きます。 脆弱性が公表されたときに「自社製品のどの版に入っているか」を即答できる状態になります。

04実装レベルの3段階

最小構成:SBOMを手で出力し、生成AIに条文を貼って整理させる / 条文の読み解きのみ
半自動化:週次でSBOM出力 → 差分 → 台帳照合 → 要判断のみレポート / 収集・差分・過去引き
本格構成:上記+リリース時の自動実行+課題の自動起票+表示ファイルへの反映 / 判断以外のすべて

半自動化の時点で、35分が15分程度になります。 差分と過去引きが入るだけで、見る対象が月60件から10件前後に減るためです。本格構成にすると10分程度になりますが、課題管理と表示ファイルへの連携の実装が必要です。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
2 名
月間件数
60 件
1件あたり現在時間
35 分
1件あたり導入後時間
10 分
現在  60件 × 35分 ÷ 60 = 35 時間/月
導入後 60件 × 10分 ÷ 60 = 10 時間/月
月間削減時間
25h
削減率
71%
年間削減時間
300h
年間金額換算(時間単価4,500円)
135万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 自社製品やサービスにOSSを組み込んでいて、リリースが月10回以上ある企業。依存関係がパッケージマネージャで管理されており、SBOMを機械的に出せること。顧客に納品する形態(組込み・オンプレミス配布)がある場合はとくに向く。
向いていない
  1. 社内利用のみでソフトウェアを配布していない場合(そもそも多くの条件が発動しない)。依存が10個程度で固定されており、一度確認すれば変わらない場合。専用のOSSコンプライアンス製品をすでに導入している場合。

07最小構成で試す方法

  1. 主力製品のリポジトリから、SBOMを1回出力する
  2. 出力された部品の数を数える(多くの場合、想定の5倍から10倍あります
  3. ライセンス識別子ごとに件数を集計する
  4. 上位10種類の条文を、生成AIに「この製品の配布形態で発動する条件を挙げて」と渡す
  5. 知財担当が、その整理が使えるかを見る

2の件数を数えるところだけは必ずやってください。 ここで「把握できていない依存がどれだけあるか」が分かります。この数字が、投資判断の材料になります。

判断の目安は次のとおりです。

把握できていない依存の割合判断
7割以上自動化する価値が大きい。手作業では追いつかない
3〜7割差分の自動化だけでも効く
3割未満すでに管理できている。台帳の整備を先にする

08実装時につまずきやすいポイント

問題対策
部品が数千件出てきて手がつかない差分だけを対象にする。初回だけは上位のライセンス種別で束ねて処理する
ライセンス表記が揺れて照合できないSPDXの短い識別子に正規化してから照合する
識別子が不明な部品をAIが推測して埋める未知は人へ回す分岐を先に作る。プロンプトの禁止だけに頼らない
版上げを見逃す差分の条件に「版の変化」を必ず入れる。版でライセンスが変わることがある
配布形態が分からず判定できない製品ごとに登録して持つ。開発者に毎回聞く運用にしない
AIが可否を断定してしまう出力スキーマから結論の欄を外す。needs_human を既定で真にする
レポートが長くて読まれない3分割(未知・要判断・過去どおり)で出す。差分0件なら通知しない
表示義務の判定だけで終わっている製品同梱の表示ファイルへの反映まで連携する
台帳が更新されず、毎回ゼロから調べる判断の確定と台帳への書き込みを、同じ画面の同じ操作にする

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 自社製品の依存構成、部品名と版、社内の判断履歴。自社製品が何でできているかを示す情報です。

  1. SBOMの機密性 … 部品と版の一覧は、攻撃者にとっては脆弱性を探す地図になります。 外部サービスへ送る範囲を、情報管理規程で確認してください
  2. ソースコードは渡さない … AIに渡すのは、部品名・版・ライセンス条文・配布形態までです。コードそのものは渡さない設計にしてください
  3. ライセンス条文は公開情報 … 条文の側は公開情報なので、外部送信の問題は生じません。機密性があるのは自社の依存構成のほうです
  4. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  5. 判断の権限 … 可否を決めるのは知財または法務です。開発者が自分で承認できる構成にしないでください
  6. AIの整理を根拠にしない … 社外に対する説明の根拠は、条文と人の判断です。「AIがそう言った」を記録に残さないでください
  7. 自動実行してよい範囲 … 収集、差分、台帳照合、論点整理までです。可否の確定と、製品同梱の表示の変更は、必ず人が行います

誤りが起きた場合のリスクは、ライセンス条件に反した状態での配布です。契約上の問題になるほか、顧客への出荷停止や、公開請求への対応が生じることがあります。判断の根拠と判断者を必ず残してください。

10まず何から始めるか

1週目:いま何が入っているかを数える

主力製品のSBOMを1回出力し、部品数とライセンスの種類を数えてください。この数字だけで、話が進みます。 多くの現場で、把握していた数の数倍が出てきます。

2週目:配布形態を書き出す

製品ごとに「自社運用のみ」「顧客環境へ設置」「機器に組み込んで出荷」のどれかを決め、表にしてください。これは人が決めることで、AIには決められません。 ここが埋まっていないと、何も判定できません。

3〜4週目:上位10ライセンスで試す

件数の多い上位10種類について、条文と配布形態を生成AIに渡し、発動する条件を整理させます。知財担当が見て、引用された条文の箇所が正しいかを確かめてください。結論の正しさより、根拠がたどれるかを見ます。

2か月目:差分と台帳を作る

前回SBOMとの差分、判断台帳の照合を作ります。ここまでで削減の大半が出ます。 月60件が10件前後になるかを実測してください。

3か月目以降: リリース時の自動実行と、課題の自動起票をつなぎます。あわせて、表示義務のある部品を製品同梱の表示ファイルへ反映する経路を作ってください。 ここを作らないと、点検しただけで義務は果たされません。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-21/最終更新:2026-09-21
確認した内容情報源確認日
SPDXライセンス一覧が、自由に利用できるソフトウェア・データ・ハードウェア・文書で広く使われるライセンスと例外を収録し、各項目が「標準化された短い識別子・正式名称・ライセンス本文・恒久URL」を持つこと。MIT Apache-2.0 GPL-3.0-only BSD-3-Clause CC-BY-4.0 などの識別子が掲載され、機械可読のデータファイルが別途配布されていることSPDX License List2026-09-21
GitHubが、リポジトリの依存関係グラフの現在の状態をSBOMとして書き出せること。形式は業界標準のSPDXで、版・パッケージ識別子・ライセンス・推移的な依存経路・著作権情報を含むこと。書き出しは画面(Insights → Dependency graph → Export SBOM)、REST API、ワークフローの3通りで行えることGitHub Docs: Exporting a software bill of materials for your repository2026-09-21
Claude APIの構造化出力が、制約付きデコードによりスキーマに沿ったJSONの生成をモデル側で保証すること。JSONスキーマでは列挙・定数・anyOf・参照などが使え、再帰スキーマや数値の範囲指定(minimum maximum minLength maxLength)は使えないことClaude Docs: Structured outputs2026-09-21

ライセンス条件の解釈と、その条件を自社の配布形態に当てはめた判断は、法的な判断です。 この構成が行うのは、条文と依存構成を突き合わせて論点を並べるところまでです。可否の判断は、自社の知財・法務部門、または顧問弁護士に確認してください。 とくに、顧客環境へ設置する形態や機器に組み込む形態では、自社運用の場合と発動する条件が変わります。AIの整理を、社外への説明の根拠に使わないでください。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0130)についてのご相談はこちらから。

AI活用について相談する
目次