【ソフトウェアとOSS】階層構造と機能~OSの目的とOSSまで解説!

ソフトウェアの階層構造|OSの目的〜OSSのライセンス条件まで解説!中級編⑧
ハテオ君

ソフトウェアってなに?OSって何?どんなものか何のために存在するのか全然わかんない...。

今回はこの悩みを解決します!

今回の記事テーマ

ソフトウェアの階層構造と機能〜OSの目的とOSSについて徹底解説

ソフトウェアはコンピューターを利用する上でなくてはならない存在です。そんなソフトウェアは、階層毎に分類されているため、種類が豊富にあります。

全てを理解することは難しいですが、重要な部分を理解するのはそんなに難しくありません。

そのため、今回の記事を参考にソフトウェアの基礎知識を理解していきましょう。

本日の記事内容

記事の最後には、今回の内容に関しての確認問題も用意していますので、インプットとアウトプットとしても是非活用してみてください。

元中卒の自分が、誰でも理解できるように開設していきます。

それでは早速見ていきましょう。

黄島 成

ソフトウェアの分類と階層

ソフトウェアの分類と階層

ソフトウェアの階層構造

コンピュータに仕事させるには、ハードウェアに加え様々なソフトウェアが必要です。

ソフトウェアの階層構造

上記図を見ていただくように、ソフトウェアでは主に3つの分類に分けられます。

  • 基本ソフトウェア
  • 応用ソフトウェア
  • ミドルウェア

それぞれ順番に見ていきましょう。

①:基本ソフトウェア

基本ソフトウェアとは、ハードウェアやデータなどの各種資源の管理と、その制御を中心としたソフトウェアになります。

例えば「Windows・MacOS・UNIX・LinuxなどのOSがこの基本ソフトウェアに当たります。

基本ソフトウェア=OS

OSの基礎知識や種類を知りたい方は【OSとは何か?】OSの目的と役割~代表的なOSの種類と最新バージョンをご覧ください。

②:応用ソフトウェア

応用ソフトウェアとは、とある目的のために作られたソフトウェアになります。

基本ソフトウェアの上で動作するソフトウェアで、アプリケーションなどがこの応用ソフトウェアに当たります。

応用ソフトウェアの位置

応用ソフトウェアでは、以下の2つに分類されます。

  • 各業務で共通して使われる共通ソフトウェア 例:ワープロソフト・表計算ソフトなど
  • 各業務で個別に使用される個別応用ソフトウェア 例:在庫管理・給与計算ソフトなど

応用ソフトウェア=OSの上で動作するソフトウェア

③:ミドルウェア

ミドルウェアは、基本ソフトウェアと応用ソフトウェアの中間で動作するソフトウェアです。

具体的には、統一的なインターフェースや便利なコンピュータ利用機能を応用ソフトウェアから利用できるようにするためのソフトウェアとなっています。

データベースを管理する「DBMSなどがミドルウェアに当たります。

例えば、DBサーバーとユーザーでデータのやり取りを行なった場合

ユーザーから直接DBサーバーにデータの要求をしてしまうと、いらない情報まで取得してしまう恐れがあります。その間にDBMSサーバーを挟むことによって必要なデータだけを取得することができます。

このように、データのやり取りを効率よく行うことがミドルウェアの役割となります。

ミドルウェア=基本ソフトウェアと応用ソフトウェアの仲介役

基本ソフトウェア4つの機能

基本ソフトウェア4つの機能

基本ソフトウェアをさらに細分化すると、以下4つの機能に分類されます。

  • 制御プログラム
  • 言語プロセッサ
  • サービスプログラム
  • デバイスドライバー

順番にそれぞれの機能と役割を見ていきましょう。

①:制御プログラム

制御プログラムでは、ハードウェア資源の状態を常に監視して、コンピュータシステムの効率良く利用するためのソフトウェアになります。

別名「カーネル」と呼ばれることもあり、ソフトウェアとハードウェアの仲介役みたいなイメージです。

制御プログラム

制御プログラムの種類

  • 狭義のOS
  • ジョブ管理
  • タスク管理
  • 記憶管理

上記機能を主に担当しています。

制御プログラム(カーネル)=OSのことだと覚えといてください。

②:言語プロセッサ

言語プロセッサは、翻訳機としての役割を持つソフトウェアです。

具体的には、人間が理解できるプログラム言語で作ったプログラムを、コンピュータが理解できる機械語に変換する役割を担当します。

言語プロセッサ

プログラムは大きく以下2つの種類に分かれます。

  • コンピュータが理解できる機械語(プログラム)
  • 人間が理解できるプログラム言語(プログラム)

言語プロセッサ=プログラム言語を機械語に翻訳するソフトウェア

③:サービスプログラム

サービスプログラムでは、OSや応用ソフトウェアの機能を向上させるための補助的な機能を担当しているソフトウェアです。

サービスプログラムの機能

  • リ整列プログラム
  • 追跡プログラム
  • 診断プログラム

上記3つの機能を主に担当しています。簡単に言えば「エラーを感知し通知してくれる機能」です。

例:Webサイトを閲覧時にネット不具合でページの表示ができなかった場合

「ページを離れますか? 」または「待機しますか?」

と通知してくれますよね。この、エラーを感知し通知してくれる仕組みを「サービスプログラム」と呼びます。

サービスプログラムでは、このように診断プログラムなどの機能を持ち、OSや応用ソフトウェアを利便性を高めます。

サービスプログラム=エラーを感知し通知するソフトウェア

④:デバイスドライバー

デバイスドライバーとは、周辺機器をパソコンで利用するために必要なソフトウェアです。

具体的には、PCに接続した周辺機器をアプリケーションソフトから利用できるようにするために、OSと周辺機器を仲介する目的で周辺機毎に用意されるソフトウェアです。

パソコンで、キーボードやマウスを利用できるのは、このデバイスドライバーがOSに内蔵しているからです。

最近では、OSに周辺機器のデバイスドライバが多数内臓されているので、プラグアンドプレイで使用できることも多いです。

デバイスドライバー=周辺機器を利用するためのソフトウェア

OSの必要性と目的

OSの必要性と目的

OSはなぜ必要なのか?どのような目的のために使われているのか?を解説していきます。

OSの目的としては主に以下の5つが挙げられます。

  • ハードウェアの有効活用
  • 処理能力の向上
  • 信頼性の向上
  • 開発効率の向上
  • 操作性の向上

上記の機能向上を目的とし、システム全体を円滑に稼働させるために、OSでは様々な機能が採用されています。

それぞれ順番に見ていきましょう。

①:ハードウェアの有効活用

コンピュータは、「制御装置・演算装置・記憶装置・入力装置・出力装置」といった五大装置から構成されています。

このハードウェアで使われる「ハードウェア機能」さらに「ソフトウェア機能」を含めた有効活用がOSの重要な目的の1つです。

②:処理能力の向上

処理機能の向上では、コンピューター内の処理スピードを上げるための目的となっています。

処理能力向上の目的

  • スループット
    単位時間あたりに処理される仕事の量のことです。
  • ターンアラウンドタイム
    一連の仕事コンピュータに依頼してから、完全な処理結果を受け取るまでにかかる時間をいいます。主にパッチ処理で使われる指標です。
  • レスポンスタイム
    コンピュータシステムに対しての問い合わせ、または要求の終わりを指標してから、利用者端末に最初の処理結果のメーセージが出始めるまでの時間をいいます。
レスポンスタイムとターンアラウンドタイム

上記内容3つは「応答時間」とも呼ばれ、主に「オンライントランザクション処理(データ入力と検索)」で使われる指標です。

  • 最初の処理結果が出始めるまでがレスポンスタイム
  • 完全な処理結果をえるまでがターンアラウンドタイム

③:信頼性の向上

信頼性を向上では、システムを安全かつ安定的に運用するための目的となっています。

信頼性を向上するために必要なこと

  • 信頼性(Reliability)
    システムが正常に稼働していること。指標としてMTBFが用いられる。
  • 可用性(Availability)
    必要に応じて、いつでもシステムが使用できる状態であること。指標として稼働率が用いられる。
  • 保守性(Serviceability)
    システムの故障箇所の早期発見、早期修復ができること。指標としてMTTRが用いられる。
  • 保全性(Integrity)
    誤操作がなく、システムが壊れにくいこと。
  • 安全性(Security)
    不正アクセスによって、システムが破損されたり、データを盗まれないように保護すること。機密性ともいいます。

OSの信頼性の向上では上記の5つの頭文字をとってRASIS(ラシス)」と略されます。この『RASIS(ラシス)』の基準を満たしていれば良いパソコンと認定されます。

RASIS(ラシス)=良いパソコンなのか判断する指標

④:開発効率の向上

開発効率向上では、業務コストやスピードを削減し、業務効率を大幅に上げるための目的となっています。

この目的のために使われる機能が「API」と呼ばれる仕組みが利用されています。

API(Application Programming Interface)

APIとは、アプリケーションからOSが用意する各機能を利用するための仕組みです。

Application Programming Interfaceの頭文字を取った略で、アプリケーションやソフトウェアとプログラムを繋ぐとゆう意味になります。

アプリケーションとOSのデータのやり取りを例に考えた場合、以下図の通りです。

API(Application Programming Interface)

上記の一連の流れを「API」といいます。

例えば、Webサイトに登録時にGoogleアカウントやTwitterアカウント選択できたりしますよね。それは「API」が利用されているからです。

また、マッチングサイトでFacebook登録が必要になるのは、実名で登録されていることほとんどなので、不正防止のために「API」が使われていたりします。

アーキテクチャの異なるCPU間でも、同じOSとAPIを利用することで「プログラムの互換性を高め、移植時の工数を削減する」ことが可能となります。

⑤:操作性の向上

操作性の向上では、コンピュターの知識のない方でも比較的容易に操作ができるようにするための目的を持っています。 

主に以下3つのインタフェースを利用して操作性の向上を図っています。

  • GUI(Graphical User Interface)
  • CUI(Character User Interface)
  • NUI(Natural User Interface)

GUIGraphical User Interface

GIUGraphical User Interface)はWindowsMacOSなどの様に、アイコンなどをマウスでクリックしながら資格的にコンピュータを操作するインターフェースを指します。

GUI(Graphical User Interface)

簡単に言えば、アプリケーションのアイコンがパソコンに表示されています、そのアイコンをクリックすると起動しますよね。それが、GIUです。

GUIによって操作性が格段に向上し、初心者でも比較的容易にコンピュータを操作できるようになっています。 

CUI(Character User Interface

CUIに対して、CUICharacter User Interfaceは、UNIXMS-DOSなどのように、キャラクタベースのコマンドを入力してコンピュータを操作するインタフェースを指します。

CUI(Character User Interface)

簡単に言えば、GUI=自動で文字(コマンド)を打ち込んでくれることです。

NUI(Natural User Interface)

NUI(Natural User Interface)とは、スマホやタブレットなどの指を使って操作するインタフェースを指します。

NUI(Natural User Interface)

みなさんがいつも使っているスマホは、NUIがスマホに搭載されているため、指で操作ができるようになっています。

オープンソースソフトウェア(OSS)

オープンソースソフトウェア(OSS)

OSSとは何か

オープンソース(OSS)は、その名の通りソースコードを公開しているソフトウェアです。簡単に言えば「料理のレシピ」のようなイメージです。

オープンソース(OSS)

無保証を原則として、誰でも自由にソースコードを改変し再配布することで、ソフトウェアを発展させて行こうとゆう考えがあります。

OSS一定の条件

  • リ頒布先となる個人やグループを制限してはいけない
  • 特定の利用分野に限定してはいけない

また再頒布する際には必ずしも無料にする必要はなく、機能やサービスを追加する有料にすることもできます。

OSSは、公共のソフトウェアというようなイメージですね。

OSSの種類一覧

分類OSS
OSLinux
オフィスツールOpenOffice.org
WWWブラウザFirefox
電子メールThunderbird
WebサーバーApache
DNSサーバーBind
メールサーバーPostfix
データベースMy SQL
総合開発環境Eclipse

OSSのライセンス条件

OSSを知用する際のライセンス条件の代表的なものに、「BSDライセンス」と「GPLGNU General Public License)」があります。

BSDライセンスの制約

  • 改変後の再頒布の際に元のソフトの著作権表示部分やライセンス条文は残すこと
  • 無保証であること

GPLはBSDに加えて、「コピーレフト」という制約もあります。

コピーレフトとは、著作権を保持したまま「プログラムの複製・改変・頒布」を制限せず、そのプログラムから派生した2次著作物(派生物)にはオリジナルと同じ頒布条件を適応するとゆう考え方です。

コピーレフトのプログラムを改変してプログラムを作った場合『頒布先にソースコードを開示しなければライセンスに違反することになります。

コピーレフト

つまり「ソフトウェアを独占せず、みんなで改良して共有の財産にしよう」という制約ですね。

コピーレフトとコピーライトの違い

コピーレフトとは別に「コピーライト」という言葉もあります。

2つの違い

  • コピーレフト
    著作権を持っていないことを指す。
    「勝手に使ってもいいよぉ~」というイメージ
  • コピーライト
    著作権を持っていることを指す。
    「勝手に使うなよ」というイメージ
コピーライト

結論この2つの違いは、著作権が有るか無いかということになる!

今回のまとめ&確認問題

ソフトウェアの階層構造|OSの目的〜OSSのライセンス条件まで解説!まとめ

○○については上記内容で以上となります。

それではまず今回の内容をまとめていきましょう。

まとめ

  • ソフトウェアは「基本ソフトウェア・応用ソフトウェア・ミドルウェア」に分類される
  • 基本ソフトウェアはさらに4つの機能に細分化される
  • OSは5つの目的を持ち、システム全体を円滑に稼働させる
  • オープンソフトウェア(OSS)は公共のソフトウェア

今回の確認問題「アウトプット用」

確認問題

ソフトウェア確認問題①

「次へ」で問題スタート!

①解説

【問題①】

デバイスドライバの役割として、適切なものはどれか。

:アプリケーションプログラムの要求に従って、ハードウェアを直接制御する。
正解○
:実行を待っているタスクの中から、に実行するタスクを決定する。
不正解× スケジューラの役割
:複数のウインドウの、画面上での表示状態を管理する。
不正解× ウィンドウマネージャの役割
:利用者が入力するコマンド文字列を解釈して、対応するプログラムを起動する。
不正解× OSのシェルの役割

【解説】

デバイスドライバとは、周辺機器をパソコンで利用するために必要なソフトウェアです。

具体的には、PCに接続した周辺機器をアプリケーションソフトから利用できるようにするために、OSと周辺機器を仲介する目的で周辺機毎に用意されるソフトウェアです。

アプリケーションは、デバイスドライバを介してプログラム上からハードウェアを操作できるようになっています。

つまり答えは「」となる。

②解説

【問題②】

システムが単位時間内にジョブを処理する能力の評価尺度はどれか。

:MIPS値
不正解× CPUが1秒間に実行できる命令数を百万回単位で表した指標
:応答時間
不正解× 利用者がシステムへの処理要求を全て完了した時点から、システムが最初の反応を返すまでの時間
:スループット
正解○
:ターンアラウンドタイム
不正解× システムへの処理要求を開始した時点から、すべての応答出力を受け取るまでの時間

【解説】

システムの能力を向上させるための評価指標として以下3つがあります。

  • スループット
  • 単位時間あたりに処理される仕事の量のことです。
  • ターンアラウンドタイム
  • 一連の仕事コンピュータに依頼してから、完全な処理結果を受け取るまでにかかる時間をいいます。主にパッチ処理で使われる指標です。
  • レスポンスタイム
  • コンピュータシステムに対しての問い合わせ、または要求の終わりを指標してから、利用者端末に最初の処理結果のメーセージが出始めるまでの時間をいいます。

この3つを合せて「応答時間」と呼ばれ、主に「オンライントランザクション処理(データ入力と検索)」で使われる指標です。

つまり答えは「」となる。

③解説

【問題③】

GPLの下で公開されたOSSを使い、ソースコードを公開しなかった場合にライセンス違反
となるものはどれか。

:OSSとアプリケーションソフトウェアとのインタフェースを開発し、販売している。
不正解× 改変されていないため、ソースコードを公開する必要はなし
:OSSの改変を他社に委託し、自社内で使用している。
不正解× 公開義務は他社にある
:OSSの入手、改変、販売をすべて自社で行っている。
正解○
:OSSを利用して性能テストを行った自社開発ソフトウェアを販売している。
不正解  改変されていないため、ソースコードを公開する必要はなし

【解説】

OSSの特徴は「ソフトウェアを独占せず、みんなで改良して共有の財産にしよう」という制約です。

  • 改変後の再頒布の際に元のソフトの著作権表示部分やライセンス条文は残すこと
  • 著作権を保持したまま「プログラムの複製・改変・頒布」を制限せず、そのプログラムから派生した2次著作物(派生物)にはオリジナルと同じ頒布条件を適応する
  • 無保証であること

つまり答えは「」となる。

最後まで読んでいただきありがとうございました!

今回の内容が、役に立ったな!と思ったらシェア&ブクマ登録よろしくお願いします。

また、質問や問い合わせに関しては、コメント欄かお問い合わせフォームを活用ください。

それではまたお会いしましょう。

黄島 成

-ソフトウェア
-