LinuC レベル1 102試験対策シリーズ、ついに 最終回です。第1回から第11回まで、シェル・ネットワーク・ユーザ管理・ログ・セキュリティと、現場で使う技術を積み上げてきました。
最終回のテーマは 「オープンソースの文化」。私たちが学んできた Linux も AlmaLinux も Ubuntu も postfix も OpenSSL も、すべて オープンソースソフトウェア(OSS) です。その OSS を支える ライセンスと コミュニティを理解し、シリーズを締めくくります。本記事は VM を使わない座学回です。
環境前提
- 本記事は 座学回であり、LinuC 102 シリーズの最終回です。検証VMは不要です
- ライセンスの話題を扱いますが、本記事は法的助言ではありません。実務でのライセンス判断は、必要に応じて法務部門や専門家に相談してください
- 「考えてみよう」では、手元の AlmaLinux / Ubuntu でライセンス情報を確認するコマンドも紹介します(任意・読み取りのみ)
今ここマップ
LinuC 102 試験対策シリーズ(全12回)
第1回 シェル環境のカスタマイズ
第2回 Bashスクリプト入門
第3回 ネットワーク基礎
第4回 ネットワークトラブルシューティングとDNS
第5回 ユーザ・グループ管理と sudo 設定
第6回 ジョブスケジューリングと時刻管理
第7回 ログ管理実践
第8回 メール配送エージェント(MTA)の基本
第9回 ファイアウォールと SELinux 入門
第10回 暗号化によるデータ保護
第11回 クラウドセキュリティの基礎
▶ 第12回 オープンソースの文化 ← いまここ
この記事で身につくこと
- オープンソースの定義とコピーレフトの考え方を説明できる
- 主要ライセンス(GPL/LGPL/AGPL/MPL/BSD/MIT/Apache 2.0)の違いを区別できる
- コピーレフトと非コピーレフト(パーミッシブ)の違いを説明できる
- パブリックドメインと CC0 の関係を理解している
- OSS コミュニティの形態と貢献のフローを説明できる
第1章:私たちは OSS の上で働いている
このシリーズで触れてきたソフトウェアを思い出してください。Linux カーネル、AlmaLinux、Ubuntu、bash、systemd、cron、chrony、rsyslog、postfix、firewalld、SELinux、OpenSSH、GnuPG、OpenSSL ── すべてオープンソースソフトウェアです。サーバエンジニアの仕事は、OSS の上に成り立っています。
OSS は「無料で使えるソフト」と思われがちですが、本質はそこではありません。OSS の本質は 「ソースコードが公開され、誰でも改変・再配布できる」こと。そして、その自由を保証しているのが ライセンスです。
なぜエンジニアがライセンスを理解すべきなのか ── 誰のためかを考えると見えてきます。
- 自分と自社のため:OSS を自社製品に組み込むとき、ライセンスを誤解すると「ソースコード公開義務」や「ライセンス違反」という重大な事態を招く
- OSS コミュニティのため:ライセンスを尊重することが、OSS という仕組みそのものを支える
- エンジニアとしての自分のため:いつか「使う側」から「貢献する側」になるとき、文化を知っていることが土台になる
第2章:オープンソースとは何か
2.1 2つの源流 ── OSI と FSF
「オープンソース」という言葉には、2つの関連する源流があります。
- FSF(Free Software Foundation、自由ソフトウェア財団):リチャード・ストールマンが設立。「自由ソフトウェア(Free Software)」を提唱。GNU プロジェクトと GPL の生みの親
- OSI(Open Source Initiative):「オープンソース」という用語と「オープンソースの定義(The Open Source Definition)」を策定した組織
思想の力点は異なりますが、実務上は「自由ソフトウェア」も「オープンソース」も、ほぼ同じソフトウェア群を指します。両方を合わせて FLOSS(Free/Libre and Open Source Software)と呼ぶこともあります。
2.2 「フリー」は「無料」ではなく「自由」
よくある誤解が、Free Software の「フリー」を「無料」と捉えることです。ここでの free は 「自由(freedom)」を意味します。FSF は「自由ソフトウェアの4つの自由」を定義しています。
- 自由0:どんな目的にも、プログラムを実行する自由
- 自由1:プログラムの仕組みを研究し、改変する自由(ソースコードへのアクセスが前提)
- 自由2:複製を再配布する自由
- 自由3:改変したバージョンを配布する自由
「ソースが見られる」だけでは OSS とは言えません。改変・再配布の自由がライセンスで保証されていることが OSS の条件です。ソースを公開していても「閲覧のみ可、改変・再配布禁止」ならオープンソースではありません。
📖 試験Tipsボックス1:OSSの定義
主題:1.11.1(重要度:中)
出題パターン:「オープンソースの定義を策定したのは?」「自由ソフトウェアの4つの自由とは?」「Free Software の『フリー』の意味は?」
暗記ポイント
- OSI(Open Source Initiative)が「オープンソースの定義」を策定
- FSF(Free Software Foundation、ストールマン設立)が「自由ソフトウェア」を提唱・GNU と GPL の母体
- 4つの自由=実行(自由0)・研究と改変(自由1)・再配布(自由2)・改変版の配布(自由3)
- 「フリー」=無料ではなく自由
- ソース公開だけでは不十分、改変・再配布の自由をライセンスが保証してこそ OSS
第3章:コピーレフトという考え方
3.1 著作権をひっくり返す発想
コピーレフト(copyleft)は、著作権(copyright)をもじった言葉です。著作権は本来「複製・改変を制限する」ための仕組みですが、コピーレフトはそれを逆手に取り、「この自由を、派生物にも必ず引き継がせる」ために著作権を使います。
具体的には、「このソフトを改変・再配布するなら、改変版も同じ自由なライセンスで配布しなければならない」とライセンスで義務づけます。これにより、自由なソフトウェアが「途中でクローズドソースに取り込まれて自由を失う」ことを防ぎます。
3.2 コピーレフトの強さで3段階に整理する
OSS ライセンスは、コピーレフトの「強さ」で整理すると理解しやすくなります。
| 強さ | 意味 | 代表ライセンス |
|---|---|---|
| 強いコピーレフト | 派生物・組み込んだ全体に同じライセンスを要求 | GPL、AGPL |
| 弱いコピーレフト | 改変した部分やファイル単位のみ要求。リンクは免除 | LGPL、MPL |
| 非コピーレフト (パーミッシブ) | 派生物のライセンスは自由。クローズドソース化も可 | MIT、BSD、Apache 2.0 |
「強いコピーレフトが正しい」「パーミッシブが優れている」という話ではありません。それぞれ思想が違うだけです。「自由を強制的に守り継ぐ」のがコピーレフト、「使い方は完全に任せる」のがパーミッシブ。OSS を選ぶ・使う・公開するときは、この軸でライセンスを見ます。

📖 試験Tipsボックス2:コピーレフト
主題:1.11.1(重要度:中)
出題パターン:「コピーレフトとは?」「コピーレフトと非コピーレフトの違いは?」「強い/弱いコピーレフトの代表例は?」
暗記ポイント
- コピーレフト=著作権を逆用し、派生物にも同じ自由(同じライセンス)を引き継がせる仕組み
- 強いコピーレフト=GPL・AGPL(組み込んだ全体に及ぶ)
- 弱いコピーレフト=LGPL・MPL(改変部分やファイル単位のみ)
- 非コピーレフト(パーミッシブ)=MIT・BSD・Apache(派生物のライセンスは自由、クローズド化も可)
- 優劣ではなく思想の違い
第4章:GPL 系 ── 強いコピーレフト
4.1 GPL の核
GPL(GNU General Public License)は、最も広く使われる強いコピーレフトのライセンスです。Linux カーネルは GPL v2 で公開されています。
GPL の核となるルールは明快です。「GPL のコードを組み込んだソフトウェアを配布するなら、その全体を GPL で(ソースコード付きで)公開しなければならない」。これにより、GPL のコードから派生したものは、ずっと自由であり続けます。
4.2 GPL v2 と v3
GPL には主に v2 と v3 があります。v3(2007年)では、v2 にはなかった次のような対策が加わりました。
- 特許条項:GPL v3 のコードを配布する者は、関連する特許で利用者を訴えないことを求められる
- Tivoization 対策:ハードウェアの仕組みで「改変版ソフトを動かせなくする」ことを禁止
Linux カーネルは今も GPL v2 のままです(v3 には移行していません)。
4.3 LGPL と AGPL
GPL には、適用範囲を調整した派生ライセンスがあります。
| ライセンス | 特徴 |
|---|---|
| LGPL (Lesser GPL) | 主にライブラリ向け。LGPL のライブラリをリンクして使うだけなら、自社のコードまで GPL にする必要はない(弱いコピーレフト)。ただしライブラリ自体を改変したらその部分は LGPL |
| AGPL (Affero GPL) | GPL の「配布したら公開」を、ネットワーク越しの利用にも拡張。AGPL のソフトを SaaS として提供する場合、利用者にソースコードを提供する義務が生じる |
AGPL が重要なのは、通常の GPL では「自社サーバで動かすだけ(配布しない)SaaS」はソース公開義務を回避できてしまうためです。AGPL はその抜け道を塞いでいます。
📖 試験Tipsボックス3:GPL 系ライセンス
主題:1.11.1(重要度:中)
出題パターン:「GPL の義務は?」「LGPL と GPL の違いは?」「AGPL は何を拡張した?」「Linux カーネルのライセンスは?」
暗記ポイント
- GPL=組み込んだ全体を GPL でソース付き公開する義務(強いコピーレフト)
- GPLv3 は v2 に特許条項・Tivoization 対策を追加
- LGPL=ライブラリ向け、リンクのみなら自社コードは GPL 化不要(弱いコピーレフト)
- AGPL=ソース公開義務を SaaS(ネットワーク越しの利用)にも拡張
- Linux カーネルは GPL v2
第5章:非コピーレフト(パーミッシブ)── MIT / BSD / Apache
5.1 パーミッシブライセンスの特徴
パーミッシブ(非コピーレフト)なライセンスは、「著作権表示とライセンス文を残す」程度の条件で、派生物をどう扱ってもよいとします。改変版をクローズドソースの商用製品に組み込むこともできます。
5.2 MIT / BSD / Apache 2.0
| ライセンス | 特徴 |
|---|---|
| MIT | 最も短くシンプル。著作権表示とライセンス文を残せば、利用・改変・再配布・商用利用すべて自由。広く採用される |
| BSD | 2条項版(無保証+著作権表示)と3条項版(+名称の無断利用禁止)がある |
| Apache License 2.0 | パーミッシブだが 特許条項を含む。コントリビュータは特許ライセンスを利用者に付与し、利用者が特許訴訟を起こすとその特許ライセンスが失効する。大規模 OSS で広く採用 |
パーミッシブなライセンスは「使い方を制限しない」ため、企業が安心して採用しやすい特徴があります。一方で「改変版が公開されない(コミュニティに還元されない)こともある」というトレードオフがあります。これも優劣ではなく思想の違いです。
📖 試験Tipsボックス4:パーミッシブライセンス
主題:1.11.1(重要度:中)
出題パターン:「MIT ライセンスの特徴は?」「Apache 2.0 が含む特別な条項は?」「BSD の条項数の違いは?」
暗記ポイント
- パーミッシブ(非コピーレフト)=MIT / BSD / Apache 2.0
- 共通:著作権表示とライセンス文を残せば、クローズドソース製品にも組み込める
- MIT=最短・最シンプル
- BSD=2条項版と3条項版(3条項版は名称の無断利用禁止を追加)
- Apache 2.0=特許条項を含む(特許ライセンスの付与、特許訴訟時の失効)
第6章:その他のライセンスと周辺概念
6.1 MPL ── ファイル単位のコピーレフト
MPL(Mozilla Public License)は、GPL とパーミッシブの中間に位置します。ファイル単位のコピーレフトで、「MPL のファイルを改変したらそのファイルは MPL のまま」ですが、「別ファイルの自社コードは別のライセンスでよい」という弱いコピーレフトです。
6.2 パブリックドメインと CC0
パブリックドメインは、著作権が消滅した(または放棄された)状態で、誰でも自由に使えます。ただし、国によっては「著作権を完全に放棄する」ことが法的に難しい場合があります。
そこで CC0(クリエイティブ・コモンズ・ゼロ)は、「可能な限り著作権を放棄し、放棄できない地域でも実質パブリックドメイン相当に扱えるようにする」ための法的な道具として使われます。
6.3 特許条項・CLA・ライセンス互換性
- CLA(Contributor License Agreement、貢献者ライセンス契約):OSS プロジェクトに貢献する際、「提供するコードの権利の扱い」を事前に取り決める契約。企業が運営する大規模 OSS で求められることがある
- ライセンス互換性:すべてのライセンスを自由に混ぜられるわけではない。たとえば、あるライセンスのコードと GPL のコードを1つの成果物にまとめられないことがある。複数の OSS を組み合わせるときは互換性の確認が必要
- デュアルライセンス:1つのソフトを「GPL でも、有償の商用ライセンスでも提供する」など、複数ライセンスから選べる形態
第7章:OSS コミュニティとエコシステム
7.1 コミュニティの形態
OSS は、世界中の人々の協働で作られます。その協働の場(コミュニティ)には、いくつかの形があります。
- メーリングリスト:古くからの基本。Linux カーネル開発も今なおメーリングリスト中心
- GitHub / GitLab:ソースコード管理、Issue(課題)トラッカー、プルリクエストの場。現在の OSS 開発の中心
- チャット:IRC、Slack、Discord、Matrix などでのリアルタイム議論
- カンファレンス・勉強会:開発者が直接顔を合わせ、発表・議論する場
7.2 財団の役割
大規模な OSS プロジェクトは、非営利の財団が法的・資金的な受け皿になることがあります。
- Linux Foundation:Linux カーネルをはじめ、多数の重要 OSS プロジェクトを支援
- Apache Software Foundation(ASF):Apache HTTP Server をはじめ、数百のプロジェクトを運営
- 各ディストリビューションのコミュニティ:AlmaLinux なら AlmaLinux OS Foundation、Ubuntu なら Canonical とコミュニティ、というように
財団があることで、特定の企業や個人に依存せず、プロジェクトが長期的に存続しやすくなります。
7.3 役割 ── メンテナ・コントリビュータ・ユーザー
- メンテナ:プロジェクトの方向性を決め、変更をレビューし、マージする責任者
- コントリビュータ:コード・ドキュメント・翻訳などを提供する貢献者
- ユーザー:そのソフトを使う人。バグ報告やフィードバックも立派な関わり
この3者は固定ではありません。ユーザーがバグ報告から始めてコントリビュータになり、やがてメンテナになる ── OSS ではよくある成長の道筋です。
第8章:OSS への貢献
8.1 貢献はコードだけではない
「OSS に貢献する」と聞くとコードを書くことを想像しがちですが、貢献の形はもっと幅広いです。
- バグ報告:「ここでこう動かない」を正確に報告する。開発者が気づいていない問題を見つける貴重な貢献
- ドキュメント・翻訳:分かりにくい説明を直す、自国語に翻訳する
- 質問への回答:フォーラムや Issue で、他のユーザーの疑問に答える
- テスト:新バージョンを試し、動作を報告する
- コード:バグ修正、機能追加
新卒エンジニアでも、今日から バグ報告や ドキュメントの誤記修正から始められます。
8.2 良いバグ報告の書き方
バグ報告は、次の3点が揃っていると開発者が対応しやすくなります。
- 再現手順:何をしたら問題が起きるか、順を追って書く
- 環境:OS・ディストリビューション・バージョン・関連パッケージのバージョン
- 期待と実際:「こうなるはず」と「実際にこうなった」を分けて書く(エラーメッセージは原文のまま)
このシリーズで何度も「実機で確認する」「エラーメッセージを読む」と繰り返してきました。それは良いバグ報告を書く力にそのままつながります。
8.3 パッチ/プルリクエストのフロー
コードで貢献する場合、GitHub を使うプロジェクトでは一般に次の流れになります。
1. リポジトリを fork(自分のアカウントに複製)
2. 作業用の branch を作成
3. 変更を commit
4. プルリクエスト(PR)を送る
5. メンテナ・他の開発者が code review
6. 修正のやり取りを経て、メンテナが merge
コードレビューは「ダメ出し」の場ではなく、コードをより良くするための協働です。レビューを受けることも、レビューを返すことも、OSS の重要な文化です。
第9章:現場での使いどころ
現場での使いどころ
- OSS 導入時のライセンス確認:ツールやライブラリを業務で採用する前に、ライセンスを確認する。特に 自社製品(特にクローズドソース製品)に組み込む場合は、GPL 系か パーミッシブ系かで対応が大きく変わる
- 社内 OSS 利用ポリシー:多くの企業は「使ってよいライセンス/要審査のライセンス」を定めている。AGPL や GPL は「組み込み用途では要審査」とされることが多い
- 依存パッケージのライセンス監査:1つのアプリは数百の OSS に依存することがある。SBOM(Software Bill of Materials、ソフトウェア部品表)でライセンスと脆弱性を一覧管理する
- 自社が OSS を公開するとき:「広く使ってほしい」ならパーミッシブ(MIT/Apache)、「改変を必ず還元させたい」ならコピーレフト(GPL)。目的に応じて選ぶ
- トラブル予防:「とりあえずコピペ」で OSS のコードを自社製品に取り込むと、ライセンス違反のリスクがある。出所とライセンスを必ず確認する
第10章:ヒヤリハット
現場ヒヤリハット:GPL ライブラリを商用製品に組み込んでソース公開義務が発生
あるチームが、自社のクローズドソースの商用ソフトウェア(顧客に販売するパッケージ製品)を開発していた。納期が迫る中、ある機能を実装するのに便利なライブラリを見つけた。開発者は「便利だし、無料だし」とそのライブラリを製品に組み込み、製品を顧客に出荷した。
そのライブラリのライセンスは GPL だった。GPL のコードを組み込んだソフトウェアを配布(出荷)する場合、製品全体を GPL で、ソースコード付きで公開する義務が生じる。つまり、自社の商用製品のソースコードすべてを公開しなければならない状態になっていた。
これに気づいたのは、社外のエンジニアからの指摘だった。法務とエンジニアリングを巻き込んだ調査・対応が必要になり、選択肢は次のいずれかに絞られた。
- 製品全体のソースコードを GPL で公開する(商用製品としては成り立たない)
- GPL ライブラリを製品から取り除き、パーミッシブなライブラリや自社実装に置き換えて再出荷する
- そのライブラリの商用ライセンス(デュアルライセンスの場合)を購入する
結局、ライブラリの差し替えと製品の再出荷に多大な工数がかかった。
教訓:
- OSS を製品に組み込む前に、必ずライセンスを確認する。「無料」と「自由に組み込んでよい」は別の話
- クローズドソースの製品に組み込めるのは、原則 パーミッシブ(MIT/BSD/Apache 2.0)。GPL 系は「製品全体を GPL 化する」覚悟がない限り組み込まない
- LGPL なら「リンクして使う」範囲なら組み込めるが、条件があるので確認する
- 依存ライブラリのライセンスは SBOM で機械的に一覧化・監査する。人の記憶に頼らない
- 判断に迷ったら、自己判断せず法務部門に相談する
ライセンスは「読まなくても動く」が「読まないと事故る」もの。OSS の自由は、ライセンスというルールの上に成り立っている。ルールを尊重することが、OSS を使わせてもらう側の最低限の責任。
第11章:考えてみよう
シリーズ最終回の座学回として、次の3つを「調べる・考える」演習に用意しました。
演習1:手元の OSS のライセンスを調べる
linuc-alma や linuc-ubuntu があれば、実際にライセンスを確認できます(読み取りのみ)。
# AlmaLinux:パッケージのライセンス情報
$ rpm -qi bash | grep -i license
$ ls /usr/share/licenses/
# Ubuntu:パッケージの著作権・ライセンス
$ cat /usr/share/doc/bash/copyright | head
確認ポイント:bash や coreutils など、身近なコマンドのライセンスが何かを見てみる。多くが GPL であることに気づくはずです。
演習2:ライセンスを分類する
次の7つのライセンスを、「コピーレフトの強さ」で3グループ(強い/弱い/非コピーレフト)に分類してください。
GPL、LGPL、AGPL、MPL、BSD、MIT、Apache 2.0
続けて、「自社のクローズドソース製品に組み込んでよいか」をライセンスごとに判断してください。(方針:強い=GPL・AGPL、弱い=LGPL・MPL、非コピーレフト=BSD・MIT・Apache 2.0。クローズドソース製品に安全に組み込めるのは非コピーレフト。LGPL はリンク利用に限り条件付きで可。GPL・AGPL は製品全体の GPL 化が必要)
演習3:良いバグ報告を書いてみる
このシリーズで扱ったコマンド(例:何かのオプションが期待どおり動かなかった、と仮定する)について、第8章の3要素 ── 再現手順・環境・期待と実際 ── を含むバグ報告の文面を書いてみてください。実際に報告する必要はありません。「開発者が読んで、すぐ再現できる文章か」を意識して書くのが目的です。
理解度チェック
次の5問を ○×で答えてください。解答は記事末尾にあります。
- オープンソースの「フリー(free)」は「無料」を意味し、有償で販売することは認められない。
- コピーレフトとは、派生物にも同じ自由(同じライセンス)を引き継がせる仕組みである。
- MIT ライセンスや Apache License 2.0 のソフトウェアは、クローズドソースの商用製品に組み込むことができる。
- AGPL は、ネットワーク越しの利用(SaaS としての提供)にもソースコード提供義務を拡張したライセンスである。
- OSS への貢献は、ソースコードを書くことだけを指し、バグ報告や翻訳は貢献に含まれない。
解答
- ×(「フリー」は「自由」の意味。OSS を有償で販売することは認められている。無料であることは OSS の条件ではない)
- ○(copyright をもじった copyleft。派生物にも自由を引き継がせる。GPL が代表)
- ○(MIT・BSD・Apache 2.0 はパーミッシブ。著作権表示を残せばクローズドソース製品に組み込める)
- ○(通常の GPL は「配布」が公開義務の条件。AGPL はネットワーク越しの利用にも拡張した)
- ×(バグ報告・ドキュメント・翻訳・テスト・質問への回答も立派な貢献)
シリーズの締めくくり
LinuC 102 試験対策シリーズも、今回の第12回で最終回です。
このシリーズで、シェル環境のカスタマイズから始まり、Bashスクリプト、ネットワーク、ユーザ管理、ジョブスケジューリング、ログ管理、MTA、ファイアウォールと SELinux、暗号化、クラウドセキュリティ、そして今回の OSS 文化まで ── システム管理者・サーバエンジニアの土台となる知識を一通り扱いました。LinuC 101 シリーズと合わせれば、レベル1試験の出題範囲を網羅したことになります。
試験対策として読んでこられた方も多いと思いますが、試験合格はゴールではなくスタートです。このシリーズで繰り返し「現場での使いどころ」「ヒヤリハット」を扱ってきたのは、知識を「試験のための暗記」で終わらせず、「現場で動ける力」につなげてほしかったからです。
そして最終回で OSS 文化を扱ったのには理由があります。私たちエンジニアは、世界中の人が作り、無償で公開してくれた OSS の上で日々仕事をしています。最初は「使わせてもらう側」で構いません。けれど、バグ報告ひとつ、ドキュメントの誤記修正ひとつからでも、いつか「還元する側」に回ること ── それが、OSS を支える文化への参加です。このシリーズで身につけた「実機で確認する」「エラーを読む」「調べて自走する」姿勢が、その第一歩を支えてくれます。
レベル1を終えたら、次は LinuC レベル2 ── より高度なシステム構築、ネットワークサービス、仮想化・コンテナの運用が待っています。ここで学んだ基礎が、その土台になります。学び続けるエンジニアであり続けてください。
LinuC 102 試験対策シリーズ(全12回)
- シェル環境のカスタマイズ:環境変数・エイリアス・履歴・ロケール
- Bashスクリプト入門:if/for/関数で書く現場の自動化スクリプト
- ネットワーク基礎:TCP/IP・ip コマンド・NetworkManager
- ネットワークトラブルシューティングとDNSクライアント設定
- ユーザ・グループ管理と sudo 設定の実務(useradd, visudo)
- ジョブスケジューリングと時刻管理:cron, systemd timer, chrony, NTP
- ログ管理実践:journalctl と rsyslog の使い分け
- メール配送エージェント(MTA)の基本:postfix の動作確認
- ファイアウォール(firewalld / ufw)と SELinux 入門
- 暗号化によるデータ保護:SSH鍵認証・GnuPG・OpenSSL
- クラウドセキュリティの基礎:IAM・公開鍵管理・SSH踏み台構成
- オープンソースの文化:主要ライセンス(GPL/MIT/Apache)とコミュニティ
