オープンソースについて学習しよう | LinuC 102 (Version 10.0)対策
この記事は、LinuC 102試験(Version 10.0)出題範囲の主題1.11:オープンソースの文化 の内容を学習しまとめた内容です。重要度は高くはないのですが、Version10.0で新たに出題範囲に加わっていて、他の範囲と比べて異色です。コマンドなども一切出てきません(そりゃそうだ)。
単純に Linux の扱いに慣れているというだけの人だと、なんじゃこりゃってなりますし、試験範囲である以上ここからも出題されるわけで、また内容的にもそこまでではないと思うので確実に点数を稼ぎたいところです。
--- 出題範囲の確認 ---
主題1.11:オープンソースの文化
* 1.11.1 オープンソースの概念とライセンス
--------------------------------------------------------------------
** 重要度 2
--------------------------------------------------------------------
** 概要
・オープンソースの定義や特徴を知っている。
・主要なオープンソースのライセンスについて知っている。
--------------------------------------------------------------------
** 詳細
・オープンソースの定義を理解している。
├─ 自由
└─ ソースコード
・オープンソースの特徴を理解している。
├─ 著作物
├─ 無保証
├─ 継続した開発
└─ 多くのライセンスが存在
・主要なライセンスの特徴を知っている。
├─ GPL, AGPL, LGPL, MPL, BSD系(MIT, Apache V2), パブリックドメイン
└─ 改変と再配布
* 1.11.2 オープンソースのコミュニティとエコシステム
--------------------------------------------------------------------
** 重要度 1
--------------------------------------------------------------------
** 概要 オープンソース開発のしくみを知っている。
--------------------------------------------------------------------
** 詳細
・コミュニティの構成や参加方法を知っている。
└─ メーリングリスト、掲示板、開発サイト、開発体制
・オープンソースエコシステムへの参加について知っている。
└─ 使用、紹介、バグ報告
引用元:https://linuc.org/linuc1/range/102.html
--- オープンソースの概念とライセンス ---
ソフトウェアと著作権
◆著作権
✅著作者が作り出した作品(著作物)の利用を制限する権利
✅著作物ができたときに自然と付与される(予め申請不要)
✅ソフトウェアは著作物
└─> 作成した技術者や企業に著作権が付与
◆著作権の立ち位置
・著作財産権
└─> 著作物を使って利益を得る権利
・著作者人格権
└─> その著作物が著作者の物であるとする権利
オープンソース【 Open-Source 】
公開されたソースコード(プログラミング言語によって記述されたプログラム)を元にして自由に開発を進めていくスタイル
◆オープンソースソフトウェア【 Open-Source Software】
✅オープンソースで開発されたソフトウェア
✅だいたいは無償で利用可能
✅≒フリーソフトウェア(無料で自由に取り扱える)
✅オープンソースソフトウェアとフリーソフトウェアをまとめた言い方
FOSS【 Free/Open Source Software 】
or
FLOSS【 Free/Libre and Open Source Software 】
◆パブリックドメイン【 Public Domain 】
著作物や発明などの知的創作物について、知的財産権が発生していない状態または消滅した状態のこと
◆プロプライエタリソフトウェア【 Proprietary Software 】
✅ソフトウェアの使用や改変、複製などを法的あるいは
技術的な方法で制限しているソフトウェア
✅代表的なもの:商用ソフトウェア
◆プロプライエタリソフトウェアとオープンソースソフトウェア比較
+=============+=============+===========+============+===========+
| 種別 | 実行 | ソースコード| 改変 | 再配布 |
+=============+=============+===========+============+===========+
| Proprietary | ライセンスや | 一般的に | 一般的に | 一般的に |
| Software | EULAに従う | 非公開 | 不可 | 不可 |
+-------------+-------------+-----------+------------+-----------+
| Open-Source | 自由に | 公開 | ライセンスに | ライセンスに|
| Software | 実行可能 | | 従って可能 | 従って可能 |
+-------------+-------------+-----------+------------+-----------+
◆コピーレフト【 copyleft 】
✅copyright (©) に反対する権利概念
⇓
「誰もが著作物を利用・改変・再配布可能でなくてはならない」
✅著作権を放棄しているワケではない
✅改変したものを再配布する際に制限をかけてはいけない
オープンソースのライセンス
◆OSI ( Open Source Initiative ) によるオープンソースの定義
(1) 再配布を自由に認める
(2) ソースコードを無償で公開できる
(3) 派生物を自由に利用できる
(4) 原著作者のソースコードを明示する
(5) 特定人物・集団を差別しない
(6) 使用分野を差別しない
(7) ライセンスは平等に分配する
(8) 特定製品に限定したライセンスにしない
(9) 他のソフトウェアを制限するライセンスにしない
(10) ライセンスは技術中立でなければならない
引用元:LinuCレベル1 Version10.0 新出題範囲学習補助教材
◆オープンソースのライセンス紹介
GPL (GNU General Public License)
✅オープンソースの代表的なライセンス
✅3つのバージョンが存在
※現在使われているのはバージョン 2 とバージョン 3
└─> Linux はバージョン 2 を採用
✅ v2 と v3の違い
├─ v2
│ ├─ 特許を含んだソースコードの扱いが不明瞭
│ └─ 利用者を特許侵害で訴えられない
└─ v3
└─ プログラムに特許が含まれる場合、
利用者に特許の利用許可の付与が必要
✅コピーレフト
✅採用されるソフトウェア例
Linux カーネル、Bash
LGPL (GNU Lesser General Public License)
✅他のソフトウェアと組み合わせて使用されるプログラムが前提
代表例:ライブラリ
✅GPL よりも制限がゆるやか
✅ソースコードの公開
├─ 不要:このライブラリを必要とするプログラムを開発した場合
└─ 必要:このライブラリのソースコードを取り入れて
プログラムを開発した場合
AGPL (GNU Affero General Public License)
✅主にサーバーで使用されるプログラムが前提
✅ネットワーク越しにソフトウェアを使用するユーザーに対して
ソースコードを提供可能である必要がある
BSD ライセンス【 Berkeley Software Distribution License 】
✅カルフォルニア大バークレー校が起源
✅条件を満たせば、
- 改変したS/Wのソースコード公開不要
- ソースコード非公開のS/Wを組み込み可能
✅採用されるソフトウェア例
FreeBSD、OpenBSD、Go 言語
✅派生ライセンス(BSD系ライセンス)
MITライセンス、Appacheライセンス
● MITライセンス
✅MITを起源とする
✅ソースコードの公開は不要
✅採用されるソフトウェア例
jQuery(JavaScriptのライブラリ)、Bootstrap(Webフレームワーク)、Rails(Ruby on Rails)
● Appacheライセンス
✅Appacheソフトウェア財団が作成
✅ソースコードの公開は不要
✅採用されるソフトウェア例
Appache HTTP Server、Android、Swift
MPL (Mozilla Public License)
✅Mozilla Foundation が作成
✅ソースコードの公開必要
✅このプログラムを利用するS/Wのソースコード公開は不要
--- オープンソースのコミュニティとエコシステム ---
オープンソースコミュニティ
【 open source community 】
(特定の)OSSの開発者やユーザーのコミュニティ
◆コントリビューター【 contributor 】
オープンソース開発に参加し貢献する人(開発者やユーザー)たち
◆オープンソースエコシステム【 open source Ecosystem 】
OSS利用者が、OSSコミュニティに対してフィードバックを行い、開発にも貢献する関係
バージョン管理
◆Git
✅現代のデファクトスタンダードの(分散型)バージョン管理システム
※ソースコードに限らず便利なので、非エンジニアにもおススメ
✅基本的にOSSではインターネット上でソースコードを管理
◆Git を採用したソフトウェア開発プラットフォーム
代表的なもの:GitHub
ちなみに、私はソフトウェア開発をしているわけではありませんが、便利なので(また使用権もあるので)以下も業務に活用しています。ただし、共同ではなく単独で(笑)
いかがでしたでしょうか?
他の試験範囲とちょっと毛色が違いますね。
のとおり、102の試験に落ちてしまいましたが、2020年内には再受験して合格を勝ち取りたいと思います!
私同様に取得を目指している方、ぜひ一緒に頑張っていきましょう。
もしこの記事が何かの参考になったもしくは面白かったという方は、応援していただけると大変嬉しいです😊 これからもよろしくお願いします。