ロボットシステム学

第5回: 著作権とライセンス

千葉工業大学 上田 隆一

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Creative Commons License

ロボットシステム学第5回

今日やること

  • ライセンスと著作権について理解
    • 込み入った話ではなくて基礎の基礎
    • ↓ 込み入った話については2021年度までの動画を
  • GitHubのリポジトリのコードに著作権やライセンスを設定
ロボットシステム学第5回

1. 著作権について

ロボットシステム学第5回

著作権の基本

  • あたりまえですが

    • 他人の作った文章や絵,写真やその他著作物を勝手にコピーして利用してはいけません
    • 盗む人がいると作った人が泣きを見る保護されるべき
  • でも・・・

    • 我々は本当に守れているだろうか?
    • 例外はないだろうか?
ロボットシステム学第5回

本科目の課題提出で見られる光景1

コードを書いてGitHubに公開する課題対して

  • ちゃんと手続きをとらずに人のコードをコピー
    • たとえ1行でも泥棒です!
    • 自分で作り出さずにタダ乗りすれば課題は0点
  • 実は必要な手続きを理解していたらコピーしてもよい
ロボットシステム学第5回

本科目の課題提出で見られる光景2

  • 自分の著作と主張していない状態で,仲間や他人に自分のコードを写させる/写される
    • 自分で書いたことを主張していない時点で課題は0点
      • たとえ被害者であっても0点になることも
    • 仲間に不正をさせたら0点どころか失格
  • 「信じてください」は通用しないことがある
    • もめた際に提示するため,客観的な証拠(エビデンス🍤)を残していく
      • GitHubにいつpushしたか等
    • 正しく手続きする
      • しかるべき表記で自身の著作であると主張
      • しかるべき表記で仲間にコードを提供/仲間が著作者を表示
ロボットシステム学第5回

本科目の課題提出で見られる光景3

  • 他人のウェブサイトの図や絵をREADMEに勝手に転用
    • きれいな図や絵を作るのは結構時間がかかるタダ乗り
      • やっちゃった本人は「引用」と言うけど,それは盗用
    • GitHubでコレをやるといろいろまずいので,上田やTAが盗用元を探し当てて事前に検挙するなど,多大な負担とストレス
  • 転載しても大丈夫な場合がある
    • 社会全体としては手間が減るのでコピー自体は悪いことではない。人の権利を侵害するのがダメ。
    • 著作権に詳しくなりましょう
ロボットシステム学第5回

著作権を主張する

  • 司法の資格のない人間が可能で最も簡単な方法
    • 著作物に「© 20xx 名前」と書く
      • 20xx年という西暦年: 公開した年
      • なるべく他人が書き換えられないところに
    • 補足(多い)
      • 実は書いていなくても権利は守られるが最低でも自分の名前は記述
        • ベルヌ条約
        • 「Copyright: 2025 Ryuichi Ueda, all right reserved」等,多少違って書いても大丈夫
      • コードのように手を入れるものの公開年は,2020-2025などと範囲指定
大切なこと: いつ,誰が作ったものかを明記!
ロボットシステム学第5回

GitHubのコードに著作権表記

前回作ったリポジトリでやってみましょう

ロボットシステム学第5回

作業: コードに著作権表示

  • SPDXのタグ(次のページで説明)を使います
  • plus_stdinの冒頭に公開年と名前を表記
    #!/usr/bin/python3
    # SPDX-FileCopyrightText: 2025 Ryuichi Ueda <付けたければメールアドレス>
    
    import sys
    ・・・
    
    • 注意: シバンの邪魔をしない
      • Cなどのソースコードなら1行目に書いても大丈夫
  • 書いたらリポジトリにpushを
ロボットシステム学第5回

SPDX

  • Software Package Data Exchange
    • ソフトウェアライセンスなどの書き方を統一するプロジェクト
      • ソフトウェアライセンスについては後半で
  • SPDX file tags
    • 前ページ例2のように,ファイルの権利関係などを記述するためのタグ(目印)
      • 以前は,コードを書いたら権利について10行くらいコメントを書いていたが,それを大幅に省略
    • 積極的に使わせてもらいましょう
ロボットシステム学第5回

2. ソフトウェアライセンス

  • ライセンス: 利用許諾
    • 書いたソフトウェアを「利用」してもらうときに,著作者が発行
    • 利用: コードやコンパイルされたバイナリを製品や他のリポジトリに加える行為
      • 人の作品の一部を「自分のもの」の一部として第三者に提供すること
      • 個人的にダウンロードして使うのは「使用」なので「利用」ではない
    • コードを公開する場合や公開されているものを利用する場合,詳しくなっておくとよい

でもなんで我々,GitHubにコードを公開してるんだろ?

ロボットシステム学第5回

そもそもなんでコードを公開しているのか?

  • 理由は人それぞれだがメリットは大きい
    • 使用者からのフィードバック
      • UnixやLinuxの例
    • 公開されているコードに自分のコードを組み込んでもらいたい
      • 例: 自分の会社のコードをLinuxに取り込んでもらえるとメリット
    • スクリプト言語は人に使ってもらうとコードを隠せない
    • 自分の作品を作ったら見せたい,使ってもらいたい
      • ソフトウェアはたくさんコピーされて使われるものほど高価値
ロボットシステム学第5回

著作権とライセンス

  • 「たくさんコピーされて使われるものほど高価値」
    • 著作権と両立できるだろうか?
    • 著作権 = copyright = コピーの権利(著作権者に帰属)
  • ある逸話
    • プリンタドライバの作者が,自由に使ってもらうために著作権を放棄
    • プリンタ会社がそれを拾って著作権を主張
      • これをやられると作者も使えなくなる

ちゃんと仕組みが必要
ロボットシステム学第5回

ソフトウェアライセンスの役割

  • 著作権を手元に残したまま,第三者にコードやバイナリを提供
  • 大きく分けて2種類
    • 利用を原則禁止にして使用させるもの
      • 例: Microsoft Windowsなどの商用ソフトウェア
    • 利用を許可(促進)するもの
      • フリーソフトウェア,オープンソースと呼ばれるソフトウェア

以後は後者の話

ロボットシステム学第5回

フリーソフトウェア/オープンソースのライセンスの仕組み

  • 統一的なものがいくつか存在
    • GNU一般公衆ライセンス(GPL),BSD license,MIT license,Apache license・・・
    • どれかを選んで自分のソフトウェアに適用するのが基本
    • 自作でもよいが,完璧に書いて人に理解してもらうのは困難
  • ライセンスの基本的な役割
    1. 免責(「利用は自己責任で」という文言)
    2. 著作者に権利を残す
    3. 利用を促進する仕組み
    4. 盗用,タダ乗りを防止
      • ライセンスの違いは,ivの厳しさの度合い
ロボットシステム学第5回

例1: GPL(GNU General Public License)

  • 大雑把な説明
    • 「コピーレフト」の考え方をライセンスにしたもの
      • 著作物の自由な利用,改変,再配布を妨げない
    • GPLで利用許諾を受けたコードやバイナリの再配布
      GPLを適用し,コードを公開する義務
      • そうしないと「自由な利用,改変,再配布」を妨げる
  • どうなるか
    • ちょっとでもGPL適用のコードやバイナリが再配布物に存在全体もGPL
      • GPLのものを利用して作ったものなので
    • 「コードを使う側もコードを公開して社会貢献してください」という意図
ロボットシステム学第5回

例2: BSDライセンス

  • BSD: Berkeley Software Distribution
    • Unixの一種
  • 特徴
    • 再配布の際にコードは公開しなくてよい
      • GPLのように「秘密無く全部公開」にはならない
    • 代わりに,いくつかの事項を義務付け
    • 項目数によっていくつか種類が存在
ロボットシステム学第5回

GPL,BSDライセンスの代表的なソフトウェア

  • GPL
    • Linux(カーネル,主要なコマンド,デバイスドライバ)
      • 主要なコマンドは別のプロジェクトから持ってきたGPLのもの
      • デバイスドライバのコードが読めないとデバッグに支障
  • BSD
    • BSD系のUnix,ROS
      • BSD系のUnixにはGPLのコマンドは原則同梱されない
      • 企業は使いやすい(「GPLだと使いにくい」と言うと語弊があるが)
  • 似たソフトウェアでも,ライセンスで普及の戦略が変化
    • GPL: 全員でコードをシェアして便利に
    • BSD系のライセンス: 著作者の名誉を守り,企業も使いやすく
ロボットシステム学第5回

リポジトリへのライセンス設定

  • 作業
    • ライセンスの条項を書いたファイルを分かりやすい場所に設置
    • コードのファイルにSPDXのタグを記述
    • READMEにも記述

順番にやってみましょう

ロボットシステム学第5回

リポジトリへのライセンス設定

  • ライセンスの条項を書いたファイルの設置
    • GPLのグループと他では少し違う
  • GPL 3.0(や,他のGPL)の場合
    • https://www.gnu.org/licenses/gpl-3.0.txt にあるテキストをそのままCOPYINGというファイルに保存
      1. curl https://www.gnu.org/licenses/gpl-3.0.txt > COPYING
      2. 特に理由がなければCOPYINGをリポジトリの一番上に置く
  • 3条項BSD(や,他のBSD,多くのライセンス)の場合
ロボットシステム学第5回

スクリプトへの記述

  • GPL 3.0の場合
    #!/usr/bin/python3
    # SPDX-FileCopyrightText: 2025 Ryuichi Ueda      
    # SPDX-License-Identifier: GPL-3.0-only
    
    import sys
    ・・・
    
  • 3条項BSDの場合
    #!/usr/bin/python3
    # SPDX-FileCopyrightText: 2025 Ryuichi Ueda      
    # SPDX-License-Identifier: BSD-3-Clause
    
    import sys
    ・・・
    
ロボットシステム学第5回

READMEへの記述

  • 下の方に明快に(特に決まった書式はない)
    • 最低限,次のように書いておくとよいでしょう.
      - このソフトウェアパッケージは,3条項BSDライセンスの下,再頒布および使用が許可されます.
      - © 2025 Ryuichi Ueda
      
  • 利用しているライブラリやコード,ドキュメントの著作権のリストも記述
    • ライセンスに縛られてなくても,書いておくのがよいでしょう
      - このソフトウェアパッケージは,3条項BSDライセンスの下,再頒布および使用が許可されます.
      - このパッケージは,aaa由来のコード(© 2025 Hoge Fuge)を利用しています.
      - このパッケージのコードは,下記のスライド(CC-BY-SA 4.0 by Ryuichi Ueda)のものを,本人の許可を得て自身の著作としたものです.
          - [ryuichiueda/my_slides robosys_2025](https://github.com/ryuichiueda/my_slides/tree/master/robosys_2025)
      - © 2025 Ryuichi Ueda
      
    • このスライドにちょくちょく出てる「CC-BY-SA 4.0」とかって何?
      • 昨年度までの動画をご覧ください(クリエイティブ・コモンズのパート)
ロボットシステム学第5回

まとめ1

著作権,ライセンスについて学習,練習した.

  • ややこしいが,自分を含めて作った人を守る仕組みと考えると理解可能
  • 何かの製作の際,他人の権利を侵害するかもしれないと思ったら,まず周囲や先生に相談
    • 正しく怖がる
ロボットシステム学第5回

まとめ2

  • ルールを理解し,遵守すれば,利用できる素材は多い
    • むしろ積極利用して,より良いものの作成を
  • レポートや課題についても,他者のものを利用可能
    • 引用や,著作権・ライセンスの問題をクリアしたものを流用することで高度な文章,製作物ができる.
    • ただし,評価の対象は自身のコントリビューション
      • コントリビューション(貢献): 自分自身で作った「より良い」なにか
      • 自身のコントリビューションは何か,既存のものと区別して明記しないと0点になるので高難易度
研究室で論文を書くときにも訓練します.
ロボットシステム学第5回