ソフトウェアとは何か
ソフトウェアは、コンピューター上で目的の処理を実現するプログラムと、それに関係するデータや設定などのまとまりです。触れられる機械や部品であるハードウェアに対して、処理や振る舞いを担う側を指します。
アプリ、OS、ライブラリ、開発ツールは、役割や提供形態は違ってもソフトウェアです。
一文でいうと
ソフトウェアとは、ハードウェア上で動き、情報を処理するプログラムと関連要素の総称です。
NISTの用語集では、ソフトウェアをコンピュータープログラムと関連データとして説明する定義が示されています。開発では一つの実行ファイルだけでなく、設定、ライブラリ、データなどを含む構成全体を考える必要があります。
個人開発のどこで登場するか
作る製品だけでなく、作るために使う道具もソフトウェアです。
これらにはバージョン、対応OS、ライセンス、更新期限があります。自分のコードを変えていなくても、利用しているソフトウェアの更新で動作が変わることがあります。
一つのWebアプリを構成する例
読書記録のWebアプリには、次のようなソフトウェアが関わります。
利用者の端末で動くブラウザ
画面を構成するクライアント側プログラム
要求を処理するサーバー側プログラム
データを管理するDBMS
それぞれが利用するライブラリ
実行環境となるOSやクラウド基盤のソフトウェア
利用者からは一つのサービスに見えても、複数のソフトウェアとバージョンの組み合わせで成立しています。
プログラム、アプリ、ハードウェアと区別する
プログラム:特定の処理を実行する命令のまとまり
ソフトウェア:プログラムと関連データなどを含む広い概念
アプリケーション:利用者の目的を直接満たすソフトウェア
ライブラリ:ほかのプログラムから利用される機能のまとまり
OS:機器やプログラムの実行を管理する基盤ソフトウェア
ハードウェア:CPU、メモリ、ストレージなど物理的な構成要素
境界は製品によって変わるため、名前だけで判断せず「どこで動き、何を担い、誰が更新するか」を確認します。
入手元と更新責任を確認する
ソフトウェアを追加することは、機能だけでなく保守対象を増やすことです。
公式または信頼できる配布元から入手する
必要な権限と外部通信を確認する
ライセンスが利用目的に合うか確認する
セキュリティ更新を受け取れる状態にする
バージョンを記録し、戻せるようにする
使わなくなったソフトウェアと資格情報を片付ける
更新を完全に止めることも、最新版へ無条件に上げることも安全とは限りません。変更内容を読み、テストできる小さな単位で更新します。
次に読む記事
処理の単位はプログラムとは何か、人が編集する元はソースコードとは何かへ進みます。外部ソフトウェアをプロジェクトへ取り込む考え方は小さく始める技術選定で具体化できます。