INSIGHT

そのライブラリ、本当に存在しますか?——AIが提案した部品を採用する前に

ACTION|次の確認へ AI / 活用のヒント

AIの部品名を、実際の配布元・版・利用条件へどう結び付けるか。

エラーの解決策をAIに尋ねると、聞いたことのないライブラリ名と短い導入手順が返ってきた。名前は自然で、説明も今回の悩みに合っている。急いでいれば、そのまま追加したくなる。

けれども、名前がもっともらしいこと、検索結果があること、実際に使ってよい部品であることは別だ。似た名前の別部品もあれば、公式の配布元ではないページもある。インストールすれば、外部のコードを自社の仕組みへ取り込むことになる。

AIが示した名前は候補として受け取り、実在、公式の入手先、版、用途を確認できるまで採用済みにしない。

名前を検索する前に、提案の中身を四つに分ける

AIの回答から、部品名、使用言語、指定された版、解決したい問題を書き出す。名称だけを検索すると、似た名前のパッケージや説明記事へたどり着き、同じ物だと思い込みやすい。

次に、その言語や環境の公式パッケージ登録先で正式名を確認する。公開者や組織、公式文書、ソースコードの案内先が対応しているかを見る。AIが示した導入コマンドと、公式配布元が案内する名前・版が一致するかも確かめる。

登録先に名前が存在することと、信頼できる提供元の部品であることも分ける。登録先は多くの公開者が配布する場所であり、掲載だけで安全性が認定されたとは限らない。公式プロジェクト側の文書から配布先へたどり、名前と公開者の対応を確かめる。

見つからない場合は、つづりを推測して別名の部品を入れない。「実在を確認できない」「公式の提供元を特定できない」と記録し、目的を満たす既知の方法へ戻す。似た名前の部品が見つかった場合も、AIが説明した機能がその部品にあるとは限らない。

研究は「もっともらしい名前」を確認する理由になる

USENIX Security 2025で発表された研究 は、16のコード生成モデル、二つのプロンプトデータセット、PythonとJavaScriptを対象に、576,000件のコード例を生成して、存在しないパッケージ名の提案を調べた。研究ページは、こうした提案を「package hallucinations」として分析している。

この規模を、自社で使うAIや現在の全モデルの誤り率へ置き換えてはいけない。研究のモデル、言語、質問条件に依存する結果であり、提案を受けた人が実際に導入した割合でも、悪意あるパッケージによる感染率や実被害率でもない。

研究から自社へ持ち帰れるのは、自然な名称や繰り返し出る提案を実在の証拠にしない、という確認の必要性である。同じAIへ聞き直して同じ名前が返っても、公式配布元で確認する仕事は残る。

576,000件は研究で調べたコード例の数であり、被害件数でも一般的な事故率でもない。

実在した後に、今回使える版かを確かめる

正式な部品が見つかっても、採用判断は終わらない。使用中の言語や実行環境に対応する版か。他の部品と競合しないか。導入によって外部通信、ファイル操作、広い権限が増えないか。更新や提供終了の案内を誰が受け取るかを確認する。

許可された試験環境で、開発担当と部品の版を確認したうえで、解決したかった一件と主要な例外を試す。導入前後の依存関係を比べ、実際に公開する構成へ同じ版が入ることを確かめる。最新版という言葉だけで選ばず、その案件で確認した版を記録する。

NISTのSecure Software Development Framework は、ソフトウェア部品の来歴や完全性、脆弱性の確認などを安全な開発実務の一部として扱う。特定のライブラリを安全と認定する資料でも、AI生成コードへ全項目を一律に課す資料でもない。候補名から実際の稼働物まで追う一般的な枠組みとして参照できる。

SBOMは、ソフトウェアに含まれる部品と版を追う一覧である。立派な帳票から始めなくても、採用した正式名、版、入手先、用途、公開した仕組みとの対応を残せば、更新や問い合わせの入口になる。

ライセンスは、名前から推測せず一次資料を読む

部品の利用条件は、公式配布ページ、リポジトリ内のライセンス文書、提供者の案内で確認する。似た名称の別部品が同じ条件とは限らず、検索結果の要約だけでは、採用する版の条件を確定できない。

文化庁の「AIと著作権について」 は、学習、生成、利用などの段階を分けた考え方と、関係者向けの資料を掲載している。ただし、個別ライブラリのライセンスを判定する資料ではなく、ページに見つからないことを適法の証拠にもできない。採用部品については、その部品自身の一次資料と案件の利用方法で確認する。

分からない場合は、用途、配布先、自社が変更するか、製品へ組み込むかを整理して、社内の担当者や提供元へ渡す。「OSSだから自由」「有料だから問題ない」とラベルで決めない。

部品を入れる前の確認を記録し、不明点を担当へ渡す

自分が部品を入れる前の確認記録として、次の項目を残す。分からない欄は推測で埋めず、そのまま開発・管理の担当へ渡せる形にする。

  • 正式なパッケージ名と公式配布元のURL
  • 公開者または管理組織、採用する版
  • 解決する目的と、試した条件・結果
  • 追加される依存関係、権限、通信先
  • ライセンスの確認元と案件での利用方法
  • 公開中のどの仕組みに含まれるか
  • 更新・脆弱性通知を受け、採否を決める人

確認できない欄があれば、候補を責めるのではなく、採用を保留する理由として共有する。既に使っている確認済みの部品で目的を満たせないか、標準機能で置き換えられないか、別の候補を探すかを選ぶ。

一度採用した後も、版を上げるとき、提供元が変わったとき、担当が交代するときに票を更新する。実在確認は導入時だけ、運用は別の担当という分断を避け、どの仕組みに入ったかまで渡す。

採用判断の証拠はAIの回答ではなく、公式配布元から稼働中の版、用途、更新担当までつながる記録である。

AIが挙げた部品名から、公式の配布元と利用条件までたどる

AIは、知らなかった方法や部品を候補として出す。その速さを活かすには、提案された名前を採用済みにせず、公式の配布元と実際の部品へたどる必要がある。

まず、AIが挙げた部品を一つ選び、公式の配布元と採用する版までたどる。分からなければ導入を保留し、何を解決したいかと、どこが未確認かを担当へ伝える。上司を説得するためではなく、自分が取り込むものを確認し、使い続けられる記録へつなぐための作業である。

参考資料