ソフトウェア

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

ソフトウェア: Software)とは、コンピュータシステム上で何らかの作業を行うプログラム群、プロシージャ群、それらに関する文書を指す用語である[1]。物理的装置であるハードウェアと対比させて言うときに使う。プログラムとほぼ同義だが範囲は更に広い。ソフトとも呼ばれる。

ソフトウェアには、ワープロソフトのように生産的な仕事を行うためのアプリケーションソフトウェア、アプリケーションソフトウェアに必要なサービスを提供するハードウェアとのインタフェースとなるオペレーティングシステムのようなシステムソフトウェア分散システムを制御・管理するミドルウェアなどがある。

目次

語用論

日本では、ハードウェアと対比する用法が転じ、映像音楽等のコンテンツ映画ドラマなどの作品をビデオテープDVDなどの記録メディアに収録したもの)もソフトウェアと呼ぶ。類似の用法は欧米にもある[2]

ある機能をもつソフトウェアに対して、「ソフトウェア」という言葉が接頭辞形容詞的に用いられることがある。エンコードをするソフトウェアを「ソフトウェアエンコーダ」、DVDを再生するソフトウェアを「ソフトウェアDVDプレーヤー」と呼ぶことがある。情報を処理する際に、当該情報専門の単体のハードウェアで処理されるか、汎用コンピュータ(PC等)用のソフトウェアで処理されるかを区別するためである。

コンピュータハードウェアとの関係

詳細はハードウェアを参照

ソフトウェアは、物理的なハードウェアと対比した言葉であり、LSIなどの電子回路そのものは、コンピュータに処理をさせる手順を記述していても、物理的な物であるのでソフトウェアとは呼ばない。ハードウェアでありソフトウェアでもある中間的な存在として、ファームウェアがある。コンピュータにおいて、ソフトウェアはRAMにロードされ、CPUで実行される。最も低いレベルでは、ソフトウェアは特定のプロセッサに固有の機械語で構成されている。機械語はプロセッサへの命令となる2進数の値から構成されていて、それによってコンピュータの状態を次々と変化させる。従ってソフトウェアは、コンピュータハードウェアの状態を変化させる命令列である。通常、機械語よりも人間が使いやすい高級言語で書かれる。高級言語はコンパイラインタプリタによって機械語のコードに変換される。他にも機械語とほぼ一対一に対応したアセンブリ言語があり、アセンブリ言語で書かれたソフトウェアはアセンブラによって機械語に変換される。

ほとんどのコンピュータはオペレーティングシステムと呼ばれる特別なソフトウェアプログラムでリアルタイムに機械が制御される。ソフトウェアの他の形態にはプログラム言語のアセンブラおよびコンパイラ、企業および家庭向けアプリケーションソフトウェア(分類を参照)がある。

1957年にJohn W. Tukeyがこの意味で「ソフトウェア」という用語を最初に使用した[3]情報工学およびソフトウェア工学では、ソフトウェアはコンピュータシステム、プログラム、データにより処理される情報全般やあらゆる「機械装置以外のもの」を示す。記憶装置に異なる命令群を読み込んで計算を制御する概念は階差機関の一部としてチャールズ・バベッジが考案した。これがほとんどの近代ソフトウェアの基礎となる理論はアラン・チューリング1935年の論文 Computable numbers with an application to the Entscheidungsproblem で初めて提唱された[4]

分類

一般のコンピュータシステムでは、ソフトウェアを3つの階層、システムソフトウェアプログラミングツールアプリケーションソフトウェアに分けるが、その境界はあいまいである。

システムソフトウェア
ハードウェアやシステムが動作するのを助ける。システムソフトウェアは、システムに使われているハードウェアの詳細(メモリ、通信、プリンタ、リーダー、ディスプレイ、キーボードなど)を抽象化し、アプリケーションが詳細に煩わされないようにすることを目的としている。具体的には以下のようなものがある。
プログラミングツール
プログラマプログラムを書くのを補助するツール群。統合開発環境 (IDE) はそのようなツールを統合したソフトウェアである。
アプリケーションソフトウェア
特定のタスク(群)を実施するためのソフトウェア。企業活動での利用が大きな部分を占めるが、およそ人間のあらゆる活動には、それに対応したアプリケーションソフトウェアが存在する。

プログラムとライブラリ

プログラムは単体ではタスクを完遂できないこともある。特にソフトウェアライブラリが必要な場合が多い。ライブラリは単独では機能せず、スタンドアローンのプログラムから使われるソフトウェアコンポーネントを集めたものである。従って、プログラムに他の多くのプログラムでも共通に使える標準的ルーチンがあれば、それらをライブラリとして抽出できる。ライブラリには、何らかのイベントによって起動されるスタンドアローン型プログラムが含まれていることもあるし、何らかの機能(コンピュータ内の様々な雑事)を実行して呼び出し元にはデータを返さないものもある。

階層

1980年代以降、アプリケーションソフトウェアは大量生産されたパッケージ品として小売店で販売されるようになった。
1980年代以降、アプリケーションソフトウェアは大量生産されたパッケージ品として小売店で販売されるようになった。

ソフトウェアアーキテクチャも参照。

ユーザーの見方はプログラマとは異なる。(組み込みシステムアナログコンピュータスーパーコンピュータなどとは対照的な)一般のコンピュータのユーザーは、ソフトウェアを3つの階層(プラットフォームソフトウェア、アプリケーションソフトウェア、ユーザー作成ソフトウェア)として見ている。

プラットフォームソフトウェア
プラットフォームには、ファームウェアデバイスドライバオペレーティングシステムGUIなどが含まれ、ユーザーがコンピュータや周辺機器とやり取りすることを可能にする。コンピュータ本体に同梱あるいはプリインストールされていることが多い。パーソナルコンピュータの場合、プラットフォームソフトウェアをユーザーが置換することも可能である。
アプリケーションソフトウェア
エンドユーザーがソフトウェアと言ったときに想定しているのがアプリケーションソフトウェアである。典型例としてはオフィススイートパソコンゲームがある。一般にハードウェアとは別に購入される。コンピュータ本体に同梱されることもあるが、独立したアプリケーションとして機能するという事実に変わりはない。アプリケーションは一般にオペレーティングシステムとは独立したソフトウェアであるが、特定プラットフォーム向けに作られることも多い。データベースもコンパイラもその他の「システムソフトウェア」も、エンドユーザーの観点ではアプリケーションと見なされることが多い。
ユーザー作成ソフトウェア
ユーザーが特定のニーズに合うように作成するソフトウェア。表計算ソフトのテンプレート、ワープロソフトのマクロ、科学技術シミュレーション、グラフィックスやアニメーションのためのスクリプトなどが含まれる。電子メールフィルタなども一種のユーザー作成ソフトウェアである。ユーザーは自身の作成したこれらのソフトウェアの重要性に気づいていないことが多い。ユーザー作成ソフトウェアが購入されたアプリケーションソフトウェアとうまく統合されていると、多くのユーザーはその区別ができない。

ソフトウェア作成

詳細はプログラミング (コンピュータ)を参照

操作(演算)

ソフトウェアは記憶装置ハードディスクドライブRAMなど)に「ロード」されて初めて機能する(実行可能になる)。逆にコンピュータはプログラムを実行することで機能する。このとき、アプリケーションソフトウェア内の命令列がシステムソフトウェアを経由してハードウェア(CPU)に渡され、それを機械語として実行する。各命令はコンピュータに何らかの操作(データの移動、計算、制御フローなど)を実行させる。

データの移動は、一般にメモリ上のある位置から別の位置に行われる。メモリとレジスタ間の移動の場合もあり、CPUがより高速にデータにアクセスできるようにする。大きなデータの移動は時間がかかるため、ポインタを使って移動しない場合もある。計算には、データのインクリメントのような単純なものも含まれる。より複雑な計算には、複数の命令と複数のデータ要素が必要となる。

命令は、逐次的に実行される場合、条件つきで実行される場合、繰り返し実行される場合がある。逐次的命令列は、1つずつ順に演算が実行される。条件付き命令列は、何らかのデータの値によってそれが実行されるか否かが決定される。プログラミング言語によってはこれをif文という。繰り返し命令列は、繰り返し実行されるもので、場合によっては何らかのデータの値で繰り返すか否かが決定される。これをループと呼ぶこともある。命令列をひとまとめにしたものをサブルーチンと呼び、他のサブルーチンを「呼び出す」命令もある。プロセッサが複数あるシステムでは(マルチプロセッシング)、命令列は複数同時並行的に実行される。

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

アプリケーションによっては、もっと複雑な処理が行われる。ソフトウェア工学は、そのようなソフトウェアの操作の複雑さを管理・制御しようとする学問分野である。特に大規模なコンピュータを運用するためのソフトウェアは複雑化する傾向がある。

現在では、ソフトウェアの応用範囲を制限しているのは、開発者/プログラマの発想力だけと言っても過言ではない。かつては無理だと思われていた活動(グランドマスターレベルのチェスをさすことなど)も、次々とソフトウェア化されている。芸術だけはソフトウェアによるシミュレーションでは創造できないと考えられている[要出典]

品質と信頼性

ソフトウェア品質は、ソフトウェアの運用によって生じるエラーや障害によって測られる。詳しくは、ソフトウェア品質ソフトウェアテストコンピュータセキュリティを参照されたい。

ライセンス

ソフトウェアライセンスは、ユーザーにそのソフトウェアを使用する権利を与えるものである。ライセンス形態で分類すると、以下のようになる。コピーガードについても参照されたい。

特許

ソフトウェア特許に関しては、様々な議論がある。特許がソフトウェア開発の妨げになると主張する人々もいるし、ソフトウェア特許によってソフトウェアの進化が促進されると主張する人々もいる。

ユーザーの倫理と権利

新しい概念であるため、ソフトウェアのユーザーが持つべき権利についての考え方は、まだ発展途上である。フリーソフトウェアコミュニティでは、ユーザーは使っているソフトウェアの修正や再配布を自由に行えるべきだと考えられている。そうすることで自分のコンピュータを制御でき、各人が協力できるようになり、場合によっては複数の人々が集まって、特定のソフトウェアを特定の方向に進化させることが可能になる。また、そうなるような権利が保証されるべきだと彼らは主張する。他の人々は、ソフトウェアの作者がユーザーにどのような権利を与えるかを制御できるようにすべきだと主張している。

前者の哲学は、1960年代に始まるハッカー文化にその源流の一部がある。

関連項目

脚注

  1. ^ "Wordreference.com: WordNet® 2.0" Princeton University. 2007年8月19日閲覧.
  2. ^ software..(n.d.). Dictionary.com Unabridged (v 1.1). 2007年4月13日閲覧, from Dictionary.com website: http://dictionary.reference.com/browse/software
  3. ^ John Tukey, 85, Statistician; Coined the Word 'Software', New York Times, Obituaries, 2000年7月28日.
  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.

外部リンク

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net