問題概要#

GitHub公開後にLICENSEファイルに虚偽の第三者データ参照記載が発覚しました。コード内には該当データが存在しないにもかかわらず、LICENSEに記載が残っていました。

原因#

段階的に第三者データ(ArduPilot Rascal空力係数等)を削除・置換したが、LICENSEファイルの更新を漏らしたことが原因です。

詳細な原因#

  1. 段階的削除の落とし穴: コード内の第三者データは削除したが、LICENSEファイルの更新を忘れた
  2. 検証スクリプトの盲点: verify_copyright_compliance.shがLICENSEを検証対象から除外していた
  3. 原則の無視: 「検証の例外を作ってはならない」という原則を無視した結果

教訓: 重要ファイル(LICENSE、README.md等)こそ、検証対象から除外してはならない。

解決方法#

即座の対処#

ステップ1: LICENSEファイルの修正

  1. LICENSEファイルから第三者データ参照セクションを削除
  2. 修正内容をコミット

ステップ2: 全ファイルの手動確認

検証スクリプトに依存せず、全ファイルを手動grepで再確認:

grep -rn "Rascal\|ArduPilot" --include="*.md" --include="*.py" --include="LICENSE" .

ステップ3: Git履歴のクリーンアップ(必要に応じて)

虚偽記載が複数コミットに渡る場合:

# 注意: force pushが必要なため、慎重に実行
rm -rf .git
git init
git add .
git commit -m "Initial commit with corrected LICENSE"
git remote add origin <repository-url>
git push -f origin main

検証スクリプトの改善#

LICENSEを明示的に検証対象に含める:

#!/bin/bash
# verify_copyright_compliance.sh

# 第三者データ参照の検出(LICENSEを明示的に含む)
echo "=== LICENSE検証 ==="
grep -rn "Rascal\|ArduPilot" --include="LICENSE" . || echo "✅ LICENSE: 第三者データ参照なし"

echo "=== ドキュメント検証 ==="
grep -rn "Rascal\|ArduPilot" --include="*.md" --exclude-dir=node_modules . || echo "✅ ドキュメント: 第三者データ参照なし"

echo "=== コード検証 ==="
grep -rn "Rascal\|ArduPilot" --include="*.py" --include="*.js" . || echo "✅ コード: 第三者データ参照なし"

最終チェックリストの追加#

GitHub公開前の必須チェック項目:

  • LICENSE内容確認(第三者データ参照がないか)
  • README.md内容確認(誤った記載がないか)
  • 全ドキュメントディレクトリ確認(除外設定なし)
  • コミットメッセージに問題を示唆する表現なし(例: “Rascal削除”)
  • package.json、setup.py等の設定ファイル確認

予防策#

1. 重要ファイルを検証スクリプトの必須項目リストに追加#

必須検証対象ファイル:

  • LICENSE
  • README.md
  • package.json / setup.py
  • CONTRIBUTING.md
  • CODE_OF_CONDUCT.md

これらのファイルは検証対象から除外してはならない

2. 除外設定の理由を明記#

検証スクリプトで除外設定を使用する場合、必ず理由をコメントで明記

# ✅ 良い例
--exclude-dir=node_modules  # 外部依存パッケージ、検証不要
--exclude-dir=.venv         # Python仮想環境、検証不要

# ❌ 悪い例
--exclude-dir=docs  # 理由不明、除外すべきでない可能性

3. 定期的なレビュー#

除外設定を定期的にレビューし、不要な除外を削除:

  • 月次レビュー: 除外設定の妥当性確認
  • リリース前レビュー: 全除外設定の再確認

4. 第三者による精査#

GitHub公開前に第三者による全ファイル精査を実施:

  • 別の開発者がLICENSE、README.mdを読む
  • 検証スクリプトの除外設定を確認
  • 疑わしい記載がないか総点検

まとめ#

LICENSE虚偽記載問題は、重要ファイルを検証対象から除外したことが根本原因です。

原因:

  • LICENSEファイルの更新漏れ
  • 検証スクリプトがLICENSEを除外
  • 「検証の例外を作ってはならない」原則の無視

解決策:

  • LICENSEファイルの修正と全ファイルの手動確認
  • 検証スクリプトにLICENSEを明示的に含める
  • 最終チェックリストの追加

予防策:

  • 重要ファイルを必須検証対象に指定
  • 除外設定に理由を明記し、定期的にレビュー
  • 第三者による精査を実施

LICENSE、README.md等の重要ファイルこそ、最優先で検証すべきです。


関連記事#

  • 【トラブル備忘】Excelテンプレートのデフォルト値が使われる - セル空欄・NaN判定(記事E-13)

© 2025 Yaaasoh. All Rights Reserved.