公開日
小さな OSS のライセンス表記
250 行ほどのユーザースクリプトでも、他人の成果物を含むならライセンス表記は要る。本体の MIT と、アイコンに使った Material Symbols の Apache License 2.0 を、THIRD_PARTY_NOTICES.md と LICENSES/ に分けて明記した話。
はじめに
Mastodon の投稿欄用に書いたユーザースクリプトは、1 ファイル 250 行ほどしかない。それでも公開するなら、ライセンスはちゃんと書くと決めていた。「ライセンス順守、グレーなことはしない」は、規模にかかわらず守りたい。
本体は MIT
スクリプト本体は MIT License にした。リポジトリ直下に LICENSE を置き、ユーザースクリプトのヘッダーにも @license MIT を入れた。Tampermonkey のヘッダーは、インストール画面でそのまま表示される情報なので、ここにも書いておく。
アイコンは Google の Material Symbols
ボタンのアイコンには、Mastodon 本体の UI と同じ Material Symbols を使った。見た目を本家に合わせたかったから。フォントを読み込むのではなく、7 つのアイコンの SVG パスデータをスクリプトに直接埋め込んでいる。
Material Symbols は Google LLC の成果物で、ライセンスは Apache License 2.0。スクリプト本体の MIT とは別のライセンスが混ざるので、そこは明記しないといけない。
分けて書く
やったことは 3 つ。
THIRD_PARTY_NOTICES.mdを置き、出典・ライセンス・使った箇所・改変の有無を書くLICENSES/Apache-2.0.txtに Apache License 2.0 の全文を置く- スクリプト内のパスデータの直前に、著作権者とライセンス、上記 2 ファイルへの参照をコメントで書く
THIRD_PARTY_NOTICES.md には、使ったアイコン名(public、quiet、lock、at、group、quote、quoteOff)と、パスデータを改変していないことを書いた。Apache License 2.0 は再配布時にライセンス全文の添付を求めるので、LICENSES/ に全文を置いた。README のライセンス節からは、MIT と Material Symbols の両方に触れて THIRD_PARTY_NOTICES.md へ案内している。
本体のライセンスと第三者の表記を分けたのは、読む人が迷わないため。LICENSE を開いた人は MIT だと分かればいいし、アイコンの話まで混ぜると長すぎる。第三者の分は専用のファイルにまとめ、全文は LICENSES/ 以下に置く。この並べ方なら、将来別のライブラリを足すときも同じ形で増やせる。
AI と壁打ちしたこと
Apache License 2.0 で何を添付すべきか、MIT と組み合わせたときに本体のライセンスをどう書くべきかは、AI(Claude Code)に整理してもらった。条文の読み方は AI の説明を鵜呑みにせず、ライセンス本文を自分で読んで確かめている。ファイル構成とコメントの書き方は自分で決めた。
小さなスクリプトに 3 つもファイルが増えるのは大げさに見えるかな。それでも、他人の成果物を含めている以上、どこから来た何なのかを書くのは最低限の礼儀なんだよな。
次回は、既存の UI になじむ拡張の作り方について書く。