はじめに
最近HPでUnityスクリプトまとめページを作成したので、改めてソースコードの著作権について調べてみました。
著作権が適用される範囲
参考サイト様の記事を引用すると、以下のような判決があったようです。他サイト様でも大きな見解の違いは見られませんでした。
わかりやすくいうと、プログラムの具体的記述が、以下の場合には創作性がなく、著作物として保護されないという判決です。
・だれが作製してもほぼ同一になるもの
・簡単な内容をごく短い表記法によって記述したもの
・ごくありふれたもの
プログラマー(エンジニア)が知ってべき著作権法のポイント<https://note.com/gladiator/n/n13001f0324de>
上記を踏まえると、予め用意されているクラスのメソッド呼び出しや、基本的な変数の命名程度であれば著作権の対象外となりそうです。
ただ、コピペ、個性的な命名、複雑な手順、アイデアを含むソースコードなどはNGとなるかと思います。具体的な例を2個ほど考えてみます。
例1
元々以下のコードが紹介されているとします。
/// <summary>
/// ログを表示します
/// </summary>
void YouTuberLog()
{
Debug.Log("ハローユーチューブ");
}
それを踏まえて、以下のコードについて考えてみます。
// ユーザー①
Debug.Log("ハローユーチューブ");
// ユーザー②
void YouTuberLog(String msg)
{
Debug.Log(msg);
}
// ユーザー③
Debug.Log("デバッグログです。");
ユーザー③はDebug.Logを呼び出していますが、元々のコードがなくても同様の記載となるので著作権的には問題ありません。
ユーザー①の”ハローユーチューブ”、ユーザー②のYoutuberLogの命名は一般的とは言えないので、著作権的に問題がある気がします。
例2
以下のコードがあったとします。
※制作中ゲームのレアリティ表示処理です
/// <summary>
/// レアリティの星を表示する
/// </summary>
/// <param name="rarity">モンスターのレアリティ</param>
/// <remarks>100をベースに低いほど遭遇率が高い</remarks>
private void ShowRarity(int rarity)
{
//星1は全てのモンスター
transform.Find("Rarity/Star1").GetComponent<Image>().DOColor(Color.white, 0f);
// 50~75:星2
if (50 <= rarity && rarity <= 75)
{
transform.Find("Rarity/Star2").GetComponent<Image>().DOColor(Color.white, 0f);
}
// 30~49:星3
else if (30 <= rarity && rarity < 50)
{
transform.Find("Rarity/Star2").GetComponent<Image>().DOColor(Color.white, 0f);
transform.Find("Rarity/Star3").GetComponent<Image>().DOColor(Color.white, 0f);
}
// 10~29:星4
else if (10 <= rarity && rarity < 30)
{
transform.Find("Rarity/Star2").GetComponent<Image>().DOColor(Color.white, 0f);
transform.Find("Rarity/Star3").GetComponent<Image>().DOColor(Color.white, 0f);
transform.Find("Rarity/Star4").GetComponent<Image>().DOColor(Color.white, 0f);
}
// 0~9:星5
else if (rarity < 10)
{
transform.Find("Rarity/Star2").GetComponent<Image>().DOColor(Color.white, 0f);
transform.Find("Rarity/Star3").GetComponent<Image>().DOColor(Color.white, 0f);
transform.Find("Rarity/Star4").GetComponent<Image>().DOColor(Color.white, 0f);
transform.Find("Rarity/Star5").GetComponent<Image>().DOColor(Color.white, 0f);
}
}
少し拙く、オリジナリティとしては微妙ですが、同じ手順のままレアリティ表示の処理を実装したら、著作権の問題となりそうです。10~20行のメソッドになるとどこかしらに個人の癖が出てくるので、コピペ等は問題になりやすい気がします。
参考にした自作メソッドやオリジナリティのある処理については、引用元を記載するのが安全になりそうです。
おわりに
今回はソースコードの著作権について考えてみました。今後HPを更新していく上で重要となるので、記載した内容を守っていきたいと思います。