資格道場 › レッスン一覧 › ソフトウェア
ソフトウェア・10/10・11分

開発ツールと OSS のライセンス

ゴール

OSS(オープンソースソフトウェア)の定義と、ソースコードの公開義務がいつ生じるかを判断できるようになる。あわせて Eclipse・Selenium などのツール名と役割、ローコード開発の定義、表計算での営業利益の式が選べるようになる。

OSSのライセンスは免除試験を中心に毎回のように出題され、選択肢のパターンもほぼ決まっています。実務でも「このOSSを製品に組み込んで売ってよいか」は要件定義の段階で確認する事項なので、ここで判断の軸を身につけておくと役に立ちます。

このレッスンで稽古する(用語チェック・過去問)

結論:覚えるのは3つだけ

  1. OSSは著作権を残したまま、自由に使える。改変・再配布・商用利用・有償販売のどれも認められていて、利用者や利用分野で差別してはいけない。
  2. ソースコードの公開義務が生じるのは、GPL などのコピーレフト型ライセンスのOSSを再配布(頒布)したとき。改変したかどうかは関係ない。社内で使うだけなら、改変していても公開しなくてよい。
  3. ツール名と役割を1対1で覚える。Eclipse=統合開発環境、Selenium=Web画面のテスト自動化。この対応を問う問題が多い。

OSSの定義(OSD):正しい特徴と誤りの選択肢

OSSの定義は OSI(Open Source Initiative:OSSを推進する団体)が定めた OSD(The Open Source Definition:OSSであるための条件)に基づきます。ポイントは「著作権は放棄されていない」ことと「お金を取ってもよい」ことの2つです。

選択肢によく出る記述 正誤 理由
一定の条件の下で、ソースコードの変更を許可している ○ 改変と派生物の作成はOSDの条件の一つ
パッケージ化したり自社ソフトと組み合わせたりして有償で販売できる ○ 再配布は自由で、有償か無償かは問わない
改変しても再配布しない社内利用なら、改変部分を公開しなくてよい ○ 公開義務は配ったときにだけ生じる
著作権が放棄されている × 著作権は作者に残る。だからライセンス(利用条件)を付けられる
無償で配布しなければならない × 有償販売もできる
商用システムの開発への利用は禁止 × 利用分野での差別は禁止
利用者が一定数を超えるとライセンス料が発生する × 人数による差別や課金は認められない
改良版は再頒布できない × 派生物の再頒布も認められる
特定の業界にだけ公開範囲を限定できる × 利用分野での差別は禁止
再配布する第三者に開発者がライセンス料を請求できる × 再配布でライセンス料を要求してはいけない

ソース公開義務:判断の軸は「外に配ったか」

公開義務があるかどうかは、改変したかどうかではなく、外部に再配布(頒布)したかどうかで判断します。たとえると、GPLは「このレシピを使った料理を店で売るなら、レシピも一緒に渡してね」という約束です。家族のまかない(社内利用)として作るだけなら、レシピを人に見せる必要はありません。

GPLの下で公開されたOSSを使い、ソースを公開しなかった場合(2013年の問題)

ケース 外に配った? 違反?
OSSとアプリをつなぐインタフェースを自作して販売 売ったのは自作部分だけで、OSS本体は配っていない 違反ではない
OSSの改変を他社に委託し、自社内で使う 委託は頒布に当たらず、社内で使うだけ 違反ではない
OSSを入手・改変して販売 OSSを含むものを外に配った 違反
OSSで性能テストをした自社ソフトを販売 OSSは道具として使っただけ 違反ではない

GPLのソース提供義務は、プログラムを外部に再配布(頒布)したときに生じます。改変していなくても生じますし、社内利用や委託改変のように頒布しないなら生じません。この問題の正解ウは、改変したOSSを販売(頒布)しているから違反になります。

flowchart TD
  A["OSSを使う"] --> B{"外部に再配布(頒布)する?"}
  B -->|"しない(社内利用・委託改変)"| C["ソース公開義務なし(改変していても)"]
  B -->|"する"| D{"コピーレフト型(GPLなど)?"}
  D -->|"はい"| E["ソースを提供する義務あり(改変の有無を問わない)"]
  D -->|"いいえ(BSDなど)"| F["ソース公開義務なし(著作権表示などの条件は守る)"]
判断の軸は「OSSを外に配ったか」OSSを使うOSSを配っていないOSSを外に配った社内で使う改変を他社に委託自作部分だけを販売性能テストに使っただけOSSを入手・改変して販売改変なしで配っても同じソース公開義務なし違反ではないGPLならソース提供義務公開しないと違反
「OSSを使う」から「配っていない」と「外に配った」に分かれ、OSSを外に配ったときだけGPLのソース提供義務が生じる。

コピーレフトと、まぎらわしいライセンス用語

コピーレフトとは「著作権は保持したまま、複製・改変・再配布は自由にする。ただし派生物(元のプログラムから作った二次著作物)にも同じ配布条件を付ける」という考え方です。代表例が GPL(GNU General Public License)です。

用語 中身 見分け方
コピーライト 通常の著作権そのもの 「改変・再配布を制限しない」とは言わない
コピーレフト 改変・再配布は自由。派生物にも同じ条件を強制する 「派生物にもオリジナルと同じ配布条件」がキーワード
BSDライセンス 改変・再配布は自由。派生物に同じ条件を強制しないので、改変版を非公開の製品にできる 「同じ条件の強制」がなければBSD型
デュアルライセンス 同じソフトを2つのライセンス(例:GPLと商用ライセンス)で提供し、利用者が選ぶ 「2つのうちから選ぶ」がキーワード

注意点として、OSDそのものは「改変版に同じライセンスを付けること」を求めていません。同じライセンスを強制するのはコピーレフト型だけです。

コピーレフト(GPL)元のOSSGPL改変版GPLさらに改変GPL派生物にも同じ配布条件が受け継がれるBSDライセンス元のOSSBSD改変版条件は自由さらに改変非公開でもよい派生物に同じ条件を強制しない
コピーレフト(GPL)は同じ配布条件が派生物へ受け継がれ、BSDライセンスは条件を強制しないので、さらに改変した版を非公開にしてもよい。

開発ツール名の対応表

統合開発環境(IDE:Integrated Development Environment)とは、エディタ・コンパイラ・デバッガなどの開発ツールを一つにまとめたソフトウェアです。代表的なOSSが Eclipse です。選択肢には「OSSだが開発環境ではないもの」が並びます。

名前 種類 役割
Eclipse 統合開発環境(IDE) 開発用のツール一式をまとめたもの
Apache Tomcat アプリケーションサーバ Javaで書いたWebアプリ(サーブレット)を動かす
GCC コンパイラ C言語などのソースコードを機械語に翻訳する
Linux OS コンピュータ全体を管理する基本ソフトウェア
Perl / PHP / Ruby プログラム言語 開発環境ではなく、プログラムを書くための言語
Selenium テスト自動化ツール Webブラウザでの画面操作を自動で実行してテストする
Redmine 課題管理(プロジェクト管理) バグや作業チケットを管理する
Subversion 版管理(バージョン管理) ソースコードの変更履歴を管理する
GDB デバッガ プログラムを止めながら不具合の原因を調べる

ローコード/ノーコード開発の違い

違いは「ソースコードを少し書くか、まったく書かないか」の1点です。どちらも開発基盤の上で、用意された部品やテンプレートをGUI(画面上のマウス操作)で組み合わせます。

手法 説明 見分け方
ローコード開発 GUIで部品を組み合わせ、必要に応じて一部のソースコードを書く 「必要に応じて一部の処理のソースコードを記述」
ノーコード開発 GUIで部品を組み合わせるだけ。ソースコードは書かない 「ソースコードを記述せずに」
フレームワークを使った開発 定型的な枠組み(フレームワーク)に、独自の処理をコードで書き足す GUIの話がなく、コードを書くのが中心
RPA(Robotic Process Automation) 人がシステムを操作する手順を登録し、ツールに代わりに操作させる 「操作手順をツールに登録」。開発手法ではない

OSSディストリビュータの役割

ディストリビュータとは、OSSやアプリケーションソフトを組み合わせて、すぐ使えるパッケージにして提供する事業者です(例:Linuxディストリビューションの提供元)。OSSの開発、インストール作業、システムの提案はディストリビュータの役割ではありません。

表計算:営業利益の式と相対参照

営業利益=売上高-売上原価-販売費及び一般管理費です。営業外収益と営業外費用(本業以外の損益)は含めず、それらを足し引きすると経常利益になります。

相対参照とは、式を別のセルに複写すると、参照先が同じだけずれる参照方法です。G2に「B2-C2-D2」と入れてG3に複写すると、自動で「B3-C3-D3」になります。

営業利益=売上高-売上原価-販売費及び一般管理費BCDG21000600250B2-C2-D2=1503800500200B3-C3-D3=100複写G2をG3に複写すると参照先も1行下へずれる(相対参照)B:売上高 C:売上原価D:販売費及び一般管理費
G2の「B2-C2-D2」(1000-600-250=150)をG3に複写すると、相対参照なので参照先も1行下の「B3-C3-D3」にずれる(数値は説明用の例)。

試験での問われ方

  • OSSの特徴:「著作権放棄」「無償配布が義務」「商用禁止」「人数でライセンス料」「再頒布禁止」はすべて誤り。正解は「条件付きでソース変更を許可」か「有償販売できる」。
  • 公開義務:「社内利用」「委託改変」「インタフェースだけ自作」「性能テストに使っただけ」は外に配っていないので義務なし。「入手・改変・販売」だけが違反。
  • OSIの定義の問題では「改変版に同じライセンスを付ける必要がある」が誤りの選択肢として出る。これはコピーレフト型だけの性質。
  • ツール名:同じOSSの中から、役割が違うもの(Tomcat・GCC・Linux)や言語(Perl・PHP・Ruby)を混ぜてくる。
  • ローコード:ノーコード(コードを書かない)、フレームワーク利用、RPAの説明と並べてくる。
例題 1

表計算で営業利益の式を選ぶ

表計算ソフトを用いて,支店ごとの営業利益を計算する。セル G2 へ入力する計算式はどれか。ここで,セル G2 の式はセル G3 から下のセルへ複写するものとする。
ABCDEFGH
1支店売上高売上原価販売費及び一般管理費営業外収益営業外費用営業利益経常利益
2P300020004008060
3Q14309601803820
4R20901390280812
⋮⋮⋮⋮⋮⋮⋮⋮⋮

ア B2- C2- D2
イ B2- C2- D2+E2
ウ B2- C2- D2+E2- F2
エ B2- C2- D2- F2

出典:基本情報技術者試験 科目A免除 修了試験 200907 実施分 問20

解き方と答えを見る
  1. 求めたいのはG列の「営業利益」。定義は「営業利益=売上高-売上原価-販売費及び一般管理費」。
  2. 表で列を確認する:売上高=B列、売上原価=C列、販売費及び一般管理費=D列。営業外収益(E列)と営業外費用(F列)は営業利益に含めない。
  3. 2行目(支店P)の式は「B2-C2-D2」。
  4. 値を入れて確かめる:3000-2000-400=600。これがPの営業利益。
  5. 複写を確認する:G2の式をG3に複写すると、相対参照なので「B3-C3-D3」になる。Qの営業利益は1430-960-180=290で、正しく計算される。
  6. 選択肢の式を見分ける:イは営業外収益を足し、エは営業外費用を引いている。ウ「B2-C2-D2+E2-F2」は 600+80-60=620 で、これは経常利益(H列に入れる式)。

答え:ア(B2-C2-D2)

要点(試験直前に読む)

  • OSSは著作権を放棄していない。改変・再配布・商用利用・有償販売はどれもOK。利用者や分野での差別はNG。
  • ソースコードの公開義務が生じるのは、GPLなどのコピーレフト型ライセンスのOSSを再配布(頒布)したとき。社内で使うだけなら、改変していても公開しなくてよい。
  • コピーレフト=派生物にも同じ配布条件を付けさせる(GPL)。BSDは強制しない。
  • Eclipse=IDE、Selenium=Webテストの自動化、Redmine=課題管理、Subversion=版管理、GDB=デバッガ。
  • ローコード=一部はコードを書く、ノーコード=まったく書かない。
  • 営業利益=売上高-売上原価-販売費及び一般管理費(営業外の損益は入れない)。

ひっかけ

  • 「著作権が放棄されている」「無償で配布しなければならない」→ どちらも誤り。OSSは著作権を残し、有償販売もできる。
  • 「改変して再配布するなら同じライセンスを付ける必要がある」(OSIの定義の問題)→ 誤り。それはコピーレフト型だけの性質で、OSDの条件ではない。
  • 「OSSの改変を他社に委託し社内で使う」「性能テストに使っただけ」→ 外に配っていないので公開義務なし。違反になるのは、改変して販売したような頒布のケース。
  • 「OSSの統合開発環境は?」でTomcat・GCC・Linuxや、Perl・PHP・Rubyを選ばせる → 開発環境はEclipse。ほかはサーバ・コンパイラ・OS・言語。
  • 表計算で営業外収益・費用まで足し引きした式(経常利益)を選ばせる → 営業利益は売上高-売上原価-販売費及び一般管理費の3項目だけ。

用語(17)

OSS Open Source Software(オープンソースソフトウェア)
ソースコードが公開され、一定の条件の下で誰でも利用・改変・再配布できるソフトウェア。
⚠ フリーウェア:無償なだけで、ソースの公開や改変の許可は約束されていない。OSSは有償販売もできる。
OSI Open Source Initiative
OSSの普及を進める団体で、OSSの定義(OSD)を定めている。
⚠ OSI参照モデル(ネットワークの7階層)とは別物。
OSD The Open Source Definition
OSIが定めた、OSSであるための条件(自由な再配布、ソースコードの提供、派生物の許可、利用者や分野で差別しないことなど)。
著作権(コピーライト) ちょさくけん
作品を作った人が持つ権利。OSSでも作者に残っていて、放棄されていない。
⚠ コピーレフト:著作権を土台にして、自由な利用を広げる考え方。
コピーレフト copyleft
著作権を保持したまま改変・再配布を自由にし、派生物にも同じ配布条件を付けさせる考え方。
⚠ BSDライセンス:派生物に同じ条件を強制しない。
GPL GNU General Public License
コピーレフト型の代表的なライセンスで、再配布するときはソースコードを提供する義務がある。
⚠ 社内利用だけなら、改変していても公開義務はない。
BSDライセンス Berkeley Software Distribution License
著作権表示などを残せば改変・再配布が自由で、派生物を非公開にしてもよいライセンス。
⚠ コピーレフト:派生物にも同じ条件を強制する。
デュアルライセンス dual license
同じソフトウェアを2種類のライセンスで提供し、利用者がどちらかを選べるようにする方式。
⚠ コピーレフト:配布条件の引き継ぎの話で、ライセンスを選ぶ話ではない。
頒布(再配布) はんぷ
ソフトウェアを外部の人に渡すこと。有償か無償かは問わない。
⚠ 社内利用や他社への改変の委託は頒布に当たらない。
ディストリビュータ distributor
OSSやアプリケーションを組み合わせて、パッケージとして提供する事業者。
⚠ OSSの開発者や、システムを提案・導入するSIerとは役割が違う。
統合開発環境(IDE) Integrated Development Environment
エディタ・コンパイラ・デバッガなどの開発ツールを一つにまとめたソフトウェア。代表例はEclipse。
⚠ Tomcat(アプリケーションサーバ)、GCC(コンパイラ)、Linux(OS)は開発環境ではない。
Eclipse エクリプス
OSSの統合開発環境。
⚠ Perl・PHP・Rubyはプログラム言語で、開発環境ではない。
Selenium セレニウム
Webブラウザの画面操作を自動化して、テストを支援するOSS。
⚠ Redmine=課題管理、Subversion=版管理、GDB=デバッガ。
Redmine / Subversion / GDB レッドマイン/サブバージョン/ジーディービー(GNU Debugger)
それぞれ課題管理、ソースコードの版管理、デバッグ(不具合の原因調査)を行うOSS。
⚠ Web画面の操作を自動化するのはSelenium。
ローコード開発 low-code
GUIで部品を組み合わせ、必要に応じて一部の処理だけソースコードを書く開発手法。
⚠ ノーコード:ソースコードをまったく書かない。RPA:操作手順を登録して作業を代行させるもので、開発手法ではない。
営業利益 えいぎょうりえき
売上高から売上原価と販売費及び一般管理費を引いた、本業でのもうけ。
⚠ 経常利益:営業利益に営業外収益を足し、営業外費用を引いたもの。
相対参照 そうたいさんしょう
式を複写すると、複写先の位置に合わせて参照するセルも同じだけずれる参照方法。
⚠ 絶対参照($B$2など):複写しても参照先が変わらない。

このレッスンの過去問

このレッスンで稽古する