IPA OSS — 頻出論点と過去問

頻出論点

1. この分野は何か

ソースコードが公開され、利用・改変・再配布の自由が認められたオープンソースソフトウェア(OSS)について、その成り立ちや利用条件、代表的なソフトウェアの役割と特徴を学びます。無償で使えることやソースコードが読めることと、ライセンスが求める再配布時の義務や利用条件の境界を混同しやすいのが特徴です。

2. 実際の出題のされ方

OSSの定義や取扱いに関する複数の記述から適切な組合せを選ばせる問題が、ITパスポートで繰り返し出題されています。有償での販売やサポート提供の可否、改変・再配布の自由、開発主体の多様性(個人だけでなく企業や団体も開発していること)の正誤が問われるほか、コピーレフトの概念や、OSSとして提供されているOSを選ばせる問題も出ています。

応用情報技術者の午前では、OSSの具体的な製品・言語の特徴や、ライセンスごとの条件の違いへと踏み込んで問われます。ライセンスに関しては、OSSのソースコードを修正した場合、静的にリンクした場合、動的にリンクした場合のそれぞれについて、ソースコードの公開義務の有無をまとめた表からGPL、LGPL、MPL、BSDの組合せを選ぶ問題が出ています。また、OSSの製品や言語を、用途や特徴と結び付けて選ばせる問題がよく出ます。プログラム言語のRやScala、SwaggerやHadoopが問われ、Linuxカーネルの役割を選ぶ問題も出ています。

システムの導入や開発の具体的な場面に即した選択は、システムアーキテクトとITサービスマネージャの午前IIで問われ、KeycloakやRedmineを選ばせる問題が出ています。

自社開発のファームウェアをもつ機器と、AGPLバージョン3のソフトウェアを改変して構築したクラウドサーバのアプリケーションを連携させて社外にサービス公開する事例で、どの範囲のソースコードを開示すべきかを判断する問題が、エンベデッドシステムスペシャリストの午前IIで出ています。

3. 学習のポイント

Open Source Initiative(OSI)が定める「オープンソースの定義(OSD)」における基本原則から押さえます。OSSは開発者が著作権を保持したまま、ライセンスによって自由な利用・改変・再頒布を許諾しているソフトウェアです。再頒布は無償に限られないため、OSSそのものやOSSを使って作ったソフトウェアを有償で販売することも、保守サポートを有償で提供することもできます。反対に、商用利用の禁止や特定の研究分野への限定など、利用分野を制限することはオープンソースの定義に反します。

次に、代表的なOSSライセンスにおけるコピーレフト性の強さと、プログラムの結合形態による条件の違いを整理します。コピーレフトとは、OSSを改変して配った人にも、受け取った人に同じ自由を渡すこと(同じ条件で公開すること)を求める考え方です。

ライセンス コピーレフト性と公開・提供条件の範囲
GPL 強いコピーレフト性を持ちます。ソースコードの修正だけでなく、静的リンク・動的リンクを含めて結合したプログラムを配布する場合、全体に公開義務が生じます。
AGPL GPLの条件に加え、改変したソフトウェアをネットワーク経由で利用者に使わせる場合にも、その利用者にソースコードを提供する必要があります。
LGPL 主にライブラリに使われます。ライブラリ自体を改変して配布するときは、そのソースコードの公開が必要です。静的リンクで組み込んだアプリケーションは、利用者がライブラリを差し替えて再リンクできる形で提供する必要がありますが、アプリケーション本体のソースコードの公開までは求められません。動的リンクで利用するだけなら独自開発部分の公開義務はありません。
MPL ファイル単位で適用されます。修正したファイルの公開義務はありますが、別ファイルとして静的リンク・動的リンクさせたプログラムには公開義務が及びません。
BSD コピーレフト性がありません。著作権表示や免責事項の記載などの条件を満たせば、修正やリンクを問わずソースコードを非公開のまま配布できます。

さらに、システム構成や開発・運用の各場面で使われるOSSの役割と特徴を押さえておきます。

  • OSとカーネル:LinuxやFreeBSD、携帯端末向けのAndroidはOSSのOSです。このうちLinuxカーネルは、ハードウェアを直接扱い、プロセスやメモリを管理して、その上でアプリケーションが動けるようにするOSの中心部分です。
  • プログラム言語:Rは統計解析と機械学習のための言語で、分析用のパッケージが豊富です。ScalaはJVMの上で動き、オブジェクト指向と関数型の書き方を1つの言語で使えます。
  • データ処理・API開発・認証・運用管理:Hadoopは、HDFS(分散ファイルシステム)とMapReduceを組み合わせ、大規模なデータを複数のコンピュータに分散して処理します。Swaggerは、OpenAPI Specificationに基づくRESTful APIの設計・構築・文書化を支援するツール群です。KeycloakやOpenAMは、複数のWebサイトやサービスにまたがるシングルサインオン(SSO)とアクセス管理を実現します。Redmineは、作業や問い合わせを1件ずつチケットにして、担当者や処理の進み具合を追跡するツールです。

4. 間違えやすいところ

OSSの定義に関しては、「著作権が放棄されている」という誤答肢が頻出です。著作権を放棄した状態はパブリックドメインと呼ばれ、著作権を保持したまま利用許諾を与えるOSSとは異なります。また、「ソースコードが公開されたソフトウェアは全てOSSである」という誤答肢もありますが、ソースコードが公開されていても改変や再配布の自由などが保証されていなければOSSには該当しません。

費用に関しても、オープンソースの定義と逆の条件を述べた選択肢に注意が必要です。利用者に対価の支払いを義務付けるとする誤答肢や、有償の保守サポートを受けなければならないとする誤答肢があります。

ライセンスと製品の特徴では、言葉のイメージだけで判断しないことが重要です。コピーレフトについて、改変した派生ソフトウェアのソースコードを非公開のまま配布できるとする選択肢は誤りで、これはコピーレフト性を持たないBSDライセンスなどの性質です。また、Linuxカーネルの説明として、CUIのシェルやGUIのデスクトップ環境がカーネル自体に組み込まれているとする誤答肢がありますが、シェルやデスクトップ環境はカーネルの上で動くソフトウェアです。

OSSの理解度チェック

OSSの過去問一覧

OSSの用語

OS・ソフトウェアのほかの論点

仮想記憶・主記憶管理26問 タスク管理・排他制御26問