ソフトウェア

ソフトウェアの階層図。上からユーザー（人間）、アプリケーション、オペレーティングシステム、ハードウェア。通常はアプリケーションとオペレーティングシステムが「ソフトウェア」である。

ソフトウェア（英: software）は、コンピューター分野でハードウェア（物理的な機械）と対比される用語で、何らかの処理を行うコンピュータ・プログラムや、さらには関連する文書などを指す[1][2]。

## ハードウェアの対比語としてのソフトウェア

[編集]

「ソフトウェア」は「ハードウェア」の対比語であり、コンピュータの分野以外でも、物理的な装置の対比語として使われている。

DVDなどで物理的な記録メディアに対する映像（動画）や音楽等のコンテンツ、組織・都市・軍事などで施設・設備・車両などに対する規則・運用・教育などを意味する[3]。

ある機能をもつソフトウェアに対して、「ソフトウェア」という言葉が接頭辞・形容詞的に用いられることがある。エンコードをするソフトウェアを「ソフトウェアエンコーダ」、DVDを再生するソフトウェアを「ソフトウェアDVDプレーヤー」と呼ぶことがある。情報を処理する（DVD再生の場合は、DVDに収録されたデジタル画像データを可視化する）際に、専用のハードウェア（DVD再生機）で処理されるか、パーソナルコンピュータなどの汎用的なコンピュータ上のソフトウェアで処理されるかを区別するためである。

たとえば、LSIなどを例にとると、LSIの物理的な回路そのものはハードウェアであり、その回路によって表現される処理手順はソフトウェアと考えられる。

一般的なソフトウェアは、補助記憶装置の中に機械語として記録されている。なお機械語は中央処理装置（CPU）の製品種別ごとに異なっている。ソフトウェアの利用時には補助記憶装置の内容が主記憶装置に読み込まれた後、中央処理装置において、データの移動、計算、制御フローなどの処理が実行される。これにより機械語は、コンピュータの状態を次々と変化させる。従ってソフトウェアは、ハードウェアの状態を変化させる命令列と考えられる。

記憶装置に異なる命令群を読み込んで計算を制御する概念は階差機関の一部としてチャールズ・バベッジが考案した。これら、ほとんどの近代ソフトウェアの基礎となる理論はアラン・チューリングの1935年の論文 Computable numbers with an application to the Entscheidungsproblem で初めて提唱された[4]。

→詳細は「機械語」を参照

ソフトウェアの表現である機械語は、中央処理装置への命令となる2進数の値から構成されている。機械語の種類には、記憶装置間でのデータの移動や、条件による処理の分岐命令、演算などがある。これらを組み合わせて、1つずつ順に演算が実行される逐次処理や、条件つきで実行される処理、繰り返し実行されるループ処理などが実現される。一連の命令列をひとまとめにしたものをサブルーチンと呼び、他のサブルーチンを「呼び出す」命令もある。

例えば、メニューから 「コピー」 というエントリを選択したとき、ソフトウェアがどのように機能するか考えてみよう。この場合、条件付き命令列が実行され、メモリ上の「文書」領域にあるデータからテキストが、一般に「クリップボード」と呼ばれる中間的記憶領域にコピーされる。別のメニューエントリである 「貼り付け」 が選ばれると、ソフトウェアはクリップボードから特定の領域にテキストをコピーする命令列を実行する。

中央処理装置が複数あるシステムでは、命令列は複数同時並行的に実行できる（マルチプロセッシング）。

## 性質

[編集]

### 複製コストがゼロ

[編集]

ソフトウェアはコストゼロで複製できる。すなわちソフトウェア量産の限界費用は0である[5]。

これはソフトウェアがデジタルデータの一種であることに由来する。デジタルデータはゼロコストで複製（コピー・アンド・ペースト）が可能であるため、ソフトウェアもゼロコストで複製できる。同じ大根を1本、車を1台、マッサージを1回追加で生産するには少なくないコストが発生するため、複製コストゼロはソフトウェアがもつ著しい特徴の1つである。

## 分類

[編集]

一般にソフトウェアは、ワープロソフトなど特定の作業や業務を目的として開発されたアプリケーションソフトウェア（応用ソフトウェア、アプリ）と、ハードウェアの管理や基本的な処理をアプリケーションソフトウェアやユーザーに提供するシステムソフトウェアの2つに分類される[6]。

→「組み込みシステム」も参照

### システムソフトウェア

[編集]

→詳細は「システムソフトウェア」を参照

コンピュータのハードウェアを管理・制御するなど、コンピュータの稼動自体に必要となるソフトウェアである。 典型的なシステムソフトウェアとして、オペレーティングシステム (OS) があり、様々なソフトウェア処理のプロセスに対し、CPUやメモリの割り当てを管理したり、記憶装置にデータファイルを正しく読み書きできるようにするなど、さまざまな処理を行っている。キーボードやマウスなどの入力機器からの信号を、後述のアプリケーションソフトウェアに通知したり、アプリケーションソフトウェアの要求に応じて、画面への図形や文字の表示を行うのも、オペレーティングシステムの機能である。

パーソナルコンピュータをはじめとする、家庭用のコンピュータ機器では、これらのソフトウェアは購入時にコンピュータ本体に同梱あるいはプリインストールされていることが多い。

そのほか、オペレーティングシステムでは提供されない機能のうち、さまざまなアプリケーションソフトウェアで利用される一般性のある機能を提供するものを、ミドルウェアという。

### アプリケーションソフトウェア

[編集]

→詳細は「アプリケーションソフトウェア」を参照

アプリケーションソフトウェアは、利用者の目的に応じた機能を提供するソフトウェアである。

一般事務で利用されるワープロや表計算ソフトウェアを初め、娯楽を目的としたゲームソフトや、工場の作業を自動化するファクトリーオートメーション、事務手続きや経営を管理するためのビジネスソフトウェア、ブラウザ、教育や医療などあらゆる目的に応じてソフトウェアが開発されている。ソフトウェアの開発自体に使われるプログラミングツール[7]もある。

これらのアプリケーションソフトウェアは、既製品をパッケージソフトウェアなどのかたちで購入するほか、利用者自身が、目的を果たすソフトウェアを開発する場合もある。 大規模なものでは銀行の預貯金口座を管理する勘定系システムやJRの「みどりの窓口」で使われるマルスなどのオンラインシステムを始め、販売や営業、生産などの各種業務管理システムなどの個別開発のソフト群（各企業内でのコンピュータシステム（情報システム）の一部を形成する）から、小は表計算ソフトのテンプレート、ワープロソフトのマクロ、科学技術シミュレーション、グラフィックスやアニメーションのためのスクリプトなどが含まれる。電子メールフィルタなども一種のユーザー作成ソフトウェアである。ユーザーは自身の作成したこれらのソフトウェアの重要性に気づいていないことが多い。ユーザー作成ソフトウェアが購入されたアプリケーションソフトウェアとうまく統合されていると、多くのユーザーはその区別ができない。

## ソフトウェアの制作

[編集]

ソフトウェア開発工程

中心となる活動

* ソフトウェア
* ソフトウェア開発
* 要求分析
* ソフトウェアアーキテクチャ
* ソフトウェア設計
* ソフトウェアエンジニアリング
* プログラミング
* ソフトウェアテスト
* デバッグ
* ソフトウェアデプロイメント
* ソフトウェア保守

パラダイムとモデル

* アジャイルソフトウェア開発
* ソフトウェアクリーンルーム
* 反復型開発
* ソフトウェアプロトタイピング
* スパイラルモデル
* Vモデル
* ウォーターフォール・モデル

ソフトウェア開発方法論とフレームワーク

* Adaptive software development（英語版）
* DevOps
* Disciplined agile delivery（英語版）
* Dynamic systems development method（英語版）
* ユーザー機能駆動開発
* 反復型開発
* かんばん
* リーンソフトウェア開発（英語版）
* LeSS（英語版）
* モデル駆動工学
* Microsoft Solutions Framework（英語版）
* Personal software process（英語版）
* Rapid Application Development
* ラショナル統一プロセス
* Scaled agile framework（英語版）
* スクラム
* SEMAT（英語版）
* Team software process（英語版）
* OpenUP（英語版）
* Unified Process
* エクストリーム・プログラミング

開発支援

* ソフトウェア構成管理
* ソフトウェアドキュメンテーション
* ソフトウェア品質保証
* ソフトウェアプロジェクト管理
* ユーザーエクスペリエンス

プラクティス

* Acceptance test–driven development（英語版）
* ビヘイビア駆動開発
* Collective_code_ownership（英語版）
* 継続的インテグレーション
* 継続的デリバリー
* ドメイン駆動設計
* ペアプログラミング
* Specification by example（英語版）
* スタンドアップ・ミーティング（英語版）
* テスト駆動開発

プログラミングツール

* コンパイラ
* デバッガ
* リンケージエディタ
* 性能解析
* GUIビルダ
* UML tool（英語版）
* 統合開発環境
* ビルド自動化
* アプリケーションリリース自動化
* Infrastructure as code
* カテゴリ:ソフトウェアテストツール

標準と機関

* BABOK
* Capability Maturity Model Integration
* IEEE Standards Association
* ISO 9001
* ISO/IEC JTC 1/SC 7（英語版）
* PMBOK
* SWEBOK
* ITIL

用語集

* 人工知能の用語集（英語版）
* コンピュータ科学の用語集（英語版）

ソフトウェア工学

* 表
* 話
* 編
* 歴

→詳細は「ソフトウェア開発」を参照

ソフトウェアの制作・開発を主な事業としている企業であっても、製品をパッケージ等の形でユーザーにライセンス販売しているのは一部である。

ライセンス販売以外のソフトウェアビジネスとして、以下のような形態がある。

* 技術・役務の提供

ITコンサルティングや技術者派遣など、顧客が主体となっているソフトウェア開発に参加して、ソフトウェア開発技術や労働力を販売するビジネス。

* ソフトウェアサービスの提供

ソフトウェアや情報システム等を自社で稼働させ、顧客がシステムを利用することによって、売上を上げるビジネス。SaaSやクラウドコンピューティングのようにシステム利用者が直接使用料を支払う形式のほか、ネットショッピング等のシステムを、出品者に利用させて手数料を課金する方式や、ソーシャル・ネットワーキング・サービスやウェブサイト検索エンジンを無償で提供し、システムの一部分に表示させる広告を販売するなどの方法で収益を上げる形式もある。

* ソフトウェアを組み込んだ機器や製品の販売

スマートフォンやネットワーク機器など、高度なソフトウェアを搭載した機器や製品を販売するビジネス。

また、インターネット上で無償で公開されているオープンソースソフトウェアの開発に協力し、成果を自社のサービスなどに組み込むことが広く行われている。

### 企業別の売上高

[編集]

2011年における企業別のソフトウェア売上高は以下の通りである[8]。

順位  | 企業名 (国)  | ソフト売上高
(百万ドル)  | 全売上高
(百万ドル)  | 全売上高に占める
ソフトウェアの割合(%)  | 従業員数
(千人)

|
|
|
|
|

1  | IBM (米)  | 84,808  | 106,916  | 79.3  | 433
2  | マイクロソフト (米)  | 60,399  | 69,943  | 86.4  | 90
3  | ヒューレット・パッカード (米)  | 39,171  | 130,687  | 30.0  | 350
4  | オラクル (米)  | 28,678  | 35,622  | 80.5  | 108
5  | アクセンチュア(米)  | 25,507  | 27,353  | 93.3  | 236
6  | EMCコーポレーション (米)  | 20,008  | 20,008  | 100.0  | 54
7  | SAP (独)  | 18,464  | 18,464  | 100.0  | 56
8  | CSC (米)  | 16,042  | 16,042  | 100.0  | 91
9  | キャップジェミニ (仏)  | 15,546  | 15,546  | 100.0  | 120
10  | 日立製作所 (日)  | 14,916  | 21,526  | 69.3  | 324

## 品質

[編集]

ソフトウェアの品質としては、利用者や開発者の立場から、様々な尺度が考えられる。

→詳細は「ソフトウェア品質」を参照

## ソフトウェアと法律

[編集]

この節の加筆が望まれています。

|

### 資産としてのソフトウェア

[編集]

ソフトウェアは法律上、知的財産として扱われ、著作権法や特許法によって保護される。

一般的には著作者がそのソフトウェアの利用範囲を明確にした利用許諾契約書を用意しており、ソフトウェアの利用者はこれに合意しなければ利用できない。この契約事項または合意事項を、ソフトウェアライセンスという。著作権者が利用許諾契約書を用意していない場合は著作権法の範囲での利用が可能である。

→詳細は「ソフトウェアライセンス」を参照

また、コンピュータを利用する発明について特許権が認められる場合がある。

→詳細は「ソフトウェア特許」を参照

その他、日本の使用者からみると、会計処理上（税法上）は、無形固定資産として扱われる。減価償却期間は5年間での定額償却である。

### 医療用ソフトウェアの規制

[編集]

→詳細は「ヘルスソフトウェア」を参照

「医薬品、医療機器等の品質、有効性及び安全性の確保等に関する法律（略称:医薬品医療機器等法、薬機法、旧称：薬事法）」により、疾病診断用プログラム、疾病治療用プログラム、疾病予防用プログラム、および、それらを記録した記録媒体についても、副作用又は機能の障害が生じた場合において、人の生命及び健康に影響を与えるおそれがある場合には、医療機器として制限を受ける。これは、医療機器のIT化に伴って、医療的な効果を謳うソフトウェア単体についても他の医療機器と同様の規制が必要になったためである（医薬品医療機器等法第23条の2関係、医薬品医療機器等法第39条関係）。

## 脚注

[編集]

[脚注の使い方]

### 出典

[編集]

1. ^ \- ソフトウェア（大辞林、ブリタニカ国際大百科事典）
2. ^ “ソフトウエア・通信業界とは - 就活準備 - マイナビ2025”. job.mynavi.jp. 2024年2月9日閲覧。
3. ^ software..(n.d.). Dictionary.com Unabridged (v 1.1). 2007年4月13日閲覧, from Dictionary.com website: http://dictionary.reference.com/browse/software
4. ^ Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, London. ISBN 1-86207-663-4.
5. ^ "デジタルデータでは、ほぼ完全な複製を、追加的費用すなわち限界費用がほぼゼロで行うことが可能である。" （2）2つ目のキーワード：限界費用 of 総務省. (2019). 情報通信白書 令和元年版.
6. ^ 「メディアリテラシ」（Computer Science Library 15）p36 植田祐子・増永良文著 サイエンス社 2013年8月10日初版発行
7. ^ 2003年の「基本情報技術者テキスト No.1 コンピュータシステム」の139、140ページにおいては、これを「言語プロセッサ」としてOSの構成要素に含めていた。
8. ^ 地理 統計要覧 2014年版 ISBN 978-4-8176-0382-1 P,104

## 関連項目

[編集]

ポータル FLOSS

* コンピューティング
* Software as a Service
* プログラミング言語
* ソフトウェア開発工程
* ソフトウェア工学
* クローズドソース
* 運用制約
* コンピュータシステム
* ソフトウェアのリグレッション
* ゲームソフト
* 製造物責任法

## 外部リンク

[編集]

* 医療用ソフトウェアの規制関連
* ヘルスソフトウェア推進協議会
* ヘルスソフトウェアに関する開発ガイドライン 経済産業省 (PDF)
* 『ソフトウェア』 - コトバンク

典拠管理データベース: 国立図書館 |

* スペイン
* フランス
* BnF data
* ドイツ
* イスラエル
* アメリカ
* 日本
* チェコ

|

*[表]: 参照先のページを表示します。
*[話]: 参照先のノートを表示します。
*[編]: 参照先のページを編集します。
*[歴]: 参照先のページの履歴を表示します。
*[スペイン]: Software
*[フランス]: Logiciels
*[BnF data]: Logiciels
*[ドイツ]: Software
*[アメリカ]: Computer software
*[チェコ]: software