【プログラミング】ソースコードの著作権について考える

はじめに

最近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を更新していく上で重要となるので、記載した内容を守っていきたいと思います。