- ブラウザURL入力
- DNS名前→IP
- ルータ経路選択
- ロードバランサ振り分け
- Nginx受け口
- アプリ処理今ここ
- DB保存
義務はコードそのものではなく、それで何をしたかに付いてきます。今回は、そもそも著作権法がコードのどの部分を対象にしているかを条文で読みます。
まず結論
著作権法は著作物を「思想又は感情を創作的に表現したもの」と定義し、プログラムについては、保護が「プログラム言語、規約及び解法に及ばない」と明記しています(第10条第3項)。
「アイデアは保護されない」という文言は法律に無く、条文で近いのはこの2つです。同じ手順でも、書き方は何通りもあります。
本回は一次ソースが何を書いているかの紹介で、個別の事案の適否は判断しません。
著作権法第10条第3項は、プログラムの著作物に対する保護が「何に及ばない」と書いているでしょうか。
当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。
著作物は「表現したもの」と定義されている
著作権法の第2条第1項は、用語の定義から始まります。
一 著作物 思想又は感情を創作的に表現したものであつて、文芸、学術、美術又は音楽の範囲に属するものをいう。
二 著作者 著作物を創作する者をいう。
(用語と定義の間の空白は教材側で補いました。「あつて」は原文表記です。)
定義の中心は**「表現したもの」**です。思想や感情そのものではなく、それを表現した結果が著作物です。
プログラムについては、第10条第3項がもっと直接に書いています。
3 第一項第九号に掲げる著作物に対するこの法律による保護は、その著作物を作成するために用いるプログラム言語、規約及び解法に及ばない。
同じ項が3つの語を定義しています。
用語 定義プログラム言語 プログラムを表現する手段としての文字その他の記号及びその体系規約 特定のプログラムにおける前号のプログラム言語の用法についての特別の約束解法 プログラムにおける電子計算機に対する指令の組合せの方法
- ・上の段には、この法律による保護が及ばない(第10条第3項)
- ・下の段が保護されるかどうかの評価は、この図も本回も行わない
同じ二分探索を、2つの書き方で
整列済みの配列から値を探す二分探索を、書き方の違う2つの関数で書きました(比較用の検査部分は省略)。
// 実装A: 反復・半開区間 [lo, hi)
function findIndexA(sorted, target) {
let lo = 0, hi = sorted.length;
while (lo < hi) {
const mid = (lo + hi) >>> 1;
if (sorted[mid] < target) lo = mid + 1;
else hi = mid;
}
return lo < sorted.length && sorted[lo] === target ? lo : -1;
}
// 実装B: 再帰・閉区間 [left, right]
const searchB = (xs, x, left = 0, right = xs.length - 1) => {
if (left > right) return -1;
const middle = Math.floor((left + right) / 2);
if (xs[middle] === x && (middle === 0 || xs[middle - 1] !== x)) return middle;
return xs[middle] < x ? searchB(xs, x, middle + 1, right) : searchB(xs, x, left, middle - 1);
};
ループと再帰、半開区間と閉区間、>>> 1 と Math.floor、変数名。字面はほぼ重なりません。それでも手順は同じで、探す範囲を毎回半分に狭めます。
同じ答えを返すかを、疑似乱数で作った長さ0〜49・値0〜29の整列済み配列20,000本と、探す値 −1〜31 の33通りで比べました(Node v24.21.0、種を変えて2回)。
seed 1 cases 660000 mismatch 0example 3 3 -1 -1seed 42 cases 660000 mismatch 0example 3 3 -1 -1
20,000 × 33 = 660,000 通りで不一致は0。example の行は [2,3,5,7,11,13] から 7 を探すと両方 3、4 を探すと両方 −1 という意味です。
この実演が示すのは同じ手順を、違う表現で書けることまでです。「だから B は A を侵害しない」「書き写さなければ安全」といった結論は出てきません。二分探索が条文の「解法」に当たるかという解釈も、本回では扱いません。
二分探索を書き方の違う2つの実装で書き、66万通りの入力で同じ答えを返すと確かめました。この実演から言えることはどれですか。
文章でも、線は同じところに引かれている
第10条第1項は著作物の例示で、第1号が「小説、脚本、論文、講演その他の言語の著作物」、第9号が「プログラムの著作物」です。第2項は文章についての線です。
2 事実の伝達にすぎない雑報及び時事の報道は、前項第一号に掲げる著作物に該当しない。
外されるのは「事実の伝達にすぎない」ものです。「ニュースは著作物ではない」とも「事実を含む文章は外れる」とも書いていません。限定を落とさずに読むと、プログラムの第3項と似た形が見えます。
では表現の側には何が付くのか。第21条です。
著作者は、その著作物を複製する権利を専有する。
これも「コピーすれば必ず侵害」という条ではありません。権利を制限する規定が別にあります(学習での利用に関わる第30条の4は、この期の後の回で読みます)。
同じ事実を、2通りの文で
文1 9月24日、v2.0 を公開した。文2 9月24日、v2.0 を公開した。検索が遅いという声に応えるため、索引の作り方を一から見直したのが今回の中心だ。
どちらも同じ事実を含み、文2は理由と見方を書き足しています。
第10条第2項が問うのは「事実の伝達にすぎない」かどうかです。文2がどう評価されるかは、本回では判断しません。確かなのは、条文が**「事実の伝達にすぎない」ものを外す形で線を引いている**ことです。事実と伝え方を分けるこの形は、二分探索の手順と2つの実装の関係に似ています(対応づけは教材側の整理です)。
著作権法第10条第2項の読み方として、条文に沿っているのはどれですか。
プログラム(第10条第3項)
保護が及ばないのはプログラム言語・規約・解法の3つ。同じ二分探索を、字面のほぼ重ならない2つの実装で書けた。
外される側 プログラム言語・規約・解法形の側 書かれたプログラム
文章(第10条第2項)
言語の著作物に該当しないのは、事実の伝達にすぎない雑報・時事の報道。同じ事実を、2通りの文で伝えられた。
外される側 事実の伝達にすぎない雑報・報道形の側 事実をどう書いたか
コードと文章。対象は違いますが、2つの条文に共通する線引きは何でしょうか。
それぞれの条で「外される側」に何が並んでいるかを見比べてください。
ここから先は法務へ
(a) エンジニアが気づける信号: 生成されたコードや文章が、既存のものと長く一致している。報告に「同じアルゴリズムだから問題ない」「書き直したから安全」といった結論が書かれている。
(b) 法務に持っていく材料: 一致している箇所(diff)、元と思われるコードの出典とライセンス、どう作ったか(生成・手書き・参考にした資料)。
(c) この回が言っていないこと: 特定のコードや文章が著作物に当たるか、似ているか、侵害か。短いコードや定石が著作物になるかどうか。特許など著作権以外の権利。仕事で書いたプログラムの著作者(第15条第2項)と生成物の扱い。
この章のまとめ
- 著作物は「思想又は感情を創作的に表現したもの」(第2条第1項第1号)。
- プログラムの保護は「プログラム言語、規約及び解法」に及ばない(第10条第3項)。「アイデア」「アルゴリズム」は条文に無い。
- 文章では「事実の伝達にすぎない」雑報・時事の報道が言語の著作物から外れる(第10条第2項)。限定を落とさない。
- 著作者は著作物の複製権を専有する(第21条)が、制限する規定が別にある。
- 実演が示すのは「同じ手順を違う表現で書ける」まで。侵害の有無は出てこない。
自分の現場で確かめる
読んだだけでは身につきません。手元の環境で実際に見てみてください。
理解度チェック
読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。
著作権法第2条第1項第1号は「著作物」をどう定義していますか。
用語集(2語)
- 著作物
- 第2条第1項第1号の用語。「思想又は感情を創作的に表現したもの」で文芸等の範囲に属するもの。第10条第1項第9号はプログラムを例示する。
- 解法(第10条第3項第3号)
- 「プログラムにおける電子計算機に対する指令の組合せの方法」。プログラムの著作物の保護はこれに及ばない。