ソフトウエア
ソフトウェア(英:Software)は、コンピュータシステム上で何らかの作業を行うプログラム群、プロシージャ群、それらに関する文書を指す用語である[1]。物理的装置であるハードウェアと対比させて言うときに使う。プログラムとほぼ同義だが範囲は更に広い。日本語では略して「ソフト」とも呼ばれる。
ソフトウェアには、ワープロソフトのように生産的な仕事を行うためのアプリケーションソフトウェア、アプリケーションソフトウェアに必要なサービスを提供するハードウェアとのインタフェースとなるオペレーティングシステムのようなシステムソフトウェア、分散システムを制御・管理するミドルウェアなどがある。
目次
語用論[編集]
日本では、ハードウェアと対比する用法が転じ、映像や音楽等のコンテンツ(映画、ドラマなどの作品をビデオテープやDVDなどの記録メディアに収録したもの)もソフトウェアと呼ぶ。類似の用法は欧米にもある[2]。
ある機能をもつソフトウェアに対して、「ソフトウェア」という言葉が接頭辞・形容詞的に用いられることがある。エンコードをするソフトウェアを「ソフトウェアエンコーダ」、DVDを再生するソフトウェアを「ソフトウェアDVDプレーヤー」と呼ぶことがある。情報を処理する(DVD再生の場合、DVDに収録されたデジタル画像データを可視化する)際に、当該情報専門の単体のハードウェア(DVD再生機・録再機)で処理されるか、汎用コンピュータ(PC等)用のソフトウェアで処理されるかを区別するためである。
コンピュータハードウェアとの関係[編集]
ソフトウェアは、物理的なハードウェアと対比した言葉であり、LSIなどの電子回路そのものは、コンピュータに処理をさせる手順を記述していても、物理的な物であるのでソフトウェアとは呼ばない。ハードウェアでありソフトウェアでもある中間的な存在として、ファームウェアがある。コンピュータにおいて、ソフトウェアはRAMにロードされ、CPUで実行される。最も低いレベルでは、ソフトウェアは特定のプロセッサに固有の機械語で構成されている。機械語はプロセッサへの命令となる2進数の値から構成されていて、それによってコンピュータの状態を次々と変化させる。従ってソフトウェアは、コンピュータハードウェアの状態を変化させる命令列である。通常、機械語よりも人間が使いやすい高級言語で書かれる。高級言語はコンパイラかインタプリタによって機械語のコードに変換される。他にも機械語とほぼ一対一に対応したアセンブリ言語があり、アセンブリ言語で書かれたソフトウェアはアセンブラによって機械語に変換される。
ほとんどのコンピュータは、オペレーティングシステム(OS)と呼ばれる特別なソフトウェアプログラムでリアルタイムに機械(ハードウェア)が制御される。ソフトウェアの他の形態にはプログラム言語のアセンブラおよびコンパイラ、企業および家庭向けアプリケーションソフトウェア(分類を参照)がある。
1957年にジョン・テューキーがこの意味で「ソフトウェア」という用語を最初に使用した[3]。情報工学およびソフトウェア工学では、ソフトウェアはコンピュータシステム、プログラム、データにより処理される情報全般やあらゆる「機械装置以外のもの」を示す。記憶装置に異なる命令群を読み込んで計算を制御する概念は階差機関の一部としてチャールズ・バベッジが考案した。これがほとんどの近代ソフトウェアの基礎となる理論はアラン・チューリングの1935年の論文 Computable numbers with an application to the Entscheidungsproblem で初めて提唱された[4]。
分類[編集]
一般のコンピュータシステムでは、ソフトウェアを3つの階層、システムソフトウェア、プログラミングツール、アプリケーションソフトウェアに分けるが、その境界はあいまいである。
- システムソフトウェア
- ハードウェアやシステムが動作するのを助ける。システムソフトウェアは、システムに使われているハードウェアの詳細(メモリ、通信、プリンタ、リーダー、ディスプレイ、キーボードなど)を抽象化し、アプリケーションが詳細に煩わされないようにすることを目的としている。具体的には以下のようなものがある。
- ファームウェア - Basic Input/Output System (BIOS) など。
- 基本ソフトウェア - オペレーティングシステム(OS)、デバイスドライバ、ウィンドウシステム、ユーティリティソフトウェア、各種サーバ
- ミドルウェア
- プログラミングツール
- プログラマがプログラムを書くのを補助するツール群。統合開発環境 (IDE) はそのようなツールを統合したソフトウェアである。
- アプリケーションソフトウェア
- 特定のタスク(群)を実施するためのソフトウェア。企業活動での利用が大きな部分を占めるが、およそ人間のあらゆる活動には、それに対応したアプリケーションソフトウェアが存在する。
プログラムとライブラリ[編集]
プログラムは単体ではタスクを完遂できないこともある。特にソフトウェアライブラリが必要な場合が多い。ライブラリは単独では機能せず、スタンドアローンのプログラムから使われるソフトウェアコンポーネントを集めたものである。従って、プログラムに他の多くのプログラムでも共通に使える標準的ルーチンがあれば、それらをライブラリとして抽出できる。ライブラリには、何らかのイベントによって起動されるスタンドアローン型プログラムが含まれていることもあるし、何らかの機能(コンピュータ内の様々な雑事)を実行して呼び出し元にはデータを返さないものもある。
階層[編集]
ソフトウェアアーキテクチャ も参照 ユーザーの見方はプログラマとは異なる。(組み込みシステム、アナログコンピュータ、スーパーコンピュータなどとは対照的な)一般のコンピュータのユーザーは、ソフトウェアを3つの階層(プラットフォームソフトウェア、アプリケーションソフトウェア、ユーザー作成ソフトウェア)として見ている。
- プラットフォームソフトウェア
- プラットフォームには、ファームウェア、デバイスドライバ、オペレーティングシステム、GUIなどが含まれ、ユーザーがコンピュータや周辺機器とやり取りすることを可能にする。周辺機器やコンピュータ本体に同梱あるいはプリインストールされていることが多い。パーソナルコンピュータの場合、プラットフォームソフトウェアをユーザーが置換することも可能である。
- アプリケーションソフトウェア
- エンドユーザーがソフトウェアと言ったときに想定しているのがアプリケーションソフトウェアである。典型例としてはオフィススイートやパソコンゲーム(パソコン上で稼動するゲームソフト)がある。一般にハードウェアとは別に購入される。コンピュータ本体に同梱・プリインストールされることもあるが、独立したアプリケーションとして機能するという事実に変わりはない。アプリケーションは一般にオペレーティングシステムとは独立したソフトウェアであるが、特定プラットフォーム向けに作られることも多い。データベースもコンパイラもその他の「システムソフトウェア」も、エンドユーザーの観点ではアプリケーションと見なされることが多い。
- ユーザー作成ソフトウェア
- ユーザーが特定のニーズに合うように作成するソフトウェア。大は銀行の預貯金口座を管理する勘定系システムやJRの「みどりの窓口」で使われるマルスなどの大規模なオンラインシステムを始め、販売や営業、生産などの各種業務管理システムなどの個別開発のソフト群(各企業内でのコンピュータシステム(情報システム)の一部を形成する)から、小は表計算ソフトのテンプレート、ワープロソフトのマクロ、科学技術シミュレーション、グラフィックスやアニメーションのためのスクリプトなどが含まれる。電子メールフィルタなども一種のユーザー作成ソフトウェアである。ユーザーは自身の作成したこれらのソフトウェアの重要性に気づいていないことが多い。ユーザー作成ソフトウェアが購入されたアプリケーションソフトウェアとうまく統合されていると、多くのユーザーはその区別ができない。
ソフトウェア作成[編集]
操作(演算)[編集]
ソフトウェアは記憶装置(ハードディスクドライブ、RAMなど)に「ロード」されて初めて機能する(実行可能になる)。逆にコンピュータはプログラムを実行することで機能する。このとき、アプリケーションソフトウェア内の命令列がシステムソフトウェアを経由してハードウェア(CPU)に渡され、それを機械語として実行する。各命令はコンピュータに何らかの操作(データの移動、計算、制御フローなど)を実行させる。
データの移動は、一般にメモリ上のある位置から別の位置に行われる。メモリとレジスタ間の移動の場合もあり、CPUがより高速にデータにアクセスできるようにする。大きなデータの移動は時間がかかるため、ポインタを使って移動しない場合もある。計算には、データのインクリメントのような単純なものも含まれる。より複雑な計算には、複数の命令と複数のデータ要素が必要となる。
命令は、逐次的に実行される場合、条件つきで実行される場合、繰り返し実行される場合がある。逐次的命令列は、1つずつ順に演算が実行される。条件付き命令列は、何らかのデータの値によってそれが実行されるか否かが決定される。プログラミング言語によってはこれをif文という。繰り返し命令列は、繰り返し実行されるもので、場合によっては何らかのデータの値で繰り返すか否かが決定される。これをループと呼ぶこともある。命令列をひとまとめにしたものをサブルーチンと呼び、他のサブルーチンを「呼び出す」命令もある。プロセッサが複数あるシステムでは(マルチプロセッシング)、命令列は複数同時並行的に実行される。
例えば、メニューから "Copy" というエントリを選択したとき、ソフトウェアがどのように機能するか考えてみよう。この場合、条件付き命令列が実行され、メモリ上の「文書」領域にあるデータからテキストが、一般に「クリップボード」と呼ばれる中間的記憶領域にコピーされる。別のメニューエントリである "Paste" が選ばれると、ソフトウェアはクリップボードから特定の領域にテキストをコピーする命令列を実行する。
アプリケーションによっては、もっと複雑な処理が行われる。ソフトウェア工学は、そのようなソフトウェアの操作の複雑さを管理・制御しようとする学問分野である。特に大規模なコンピュータを運用するためのソフトウェアは複雑化する傾向がある。
現在では、ソフトウェアの応用範囲を制限しているのは、開発者/プログラマの発想力だけと言っても過言ではない。かつては無理だと思われていた活動(グランドマスターレベルのチェスをさすことなど)も、次々とソフトウェア化されている。芸術だけはソフトウェアによるシミュレーションでは創造できないと考えられている要出典。
品質と信頼性[編集]
ソフトウェア品質は、ソフトウェアの運用によって生じるエラーや障害によって測られる。詳しくは、ソフトウェア品質、ソフトウェアテスト、コンピュータセキュリティを参照されたい。
ライセンス[編集]
ソフトウェアライセンスは、ユーザーにそのソフトウェアを使用する権利を与えるものである。ライセンス形態で分類すると、以下のようになる。コピーガードについても参照されたい。
特許[編集]
ソフトウェア特許に関しては、様々な議論がある。特許がソフトウェア開発の妨げになると主張する人々もいるし、ソフトウェア特許によってソフトウェアの進化が促進されると主張する人々もいる。
ユーザーの倫理と権利[編集]
新しい概念であるため、ソフトウェアのユーザーが持つべき権利についての考え方は、まだ発展途上である。フリーソフトウェアコミュニティでは、ユーザーは使っているソフトウェアの修正や再配布を自由に行えるべきだと考えられている。そうすることで自分のコンピュータを制御でき、各人が協力できるようになり、場合によっては複数の人々が集まって、特定のソフトウェアを特定の方向に進化させることが可能になる。また、そうなるような権利が保証されるべきだと彼らは主張する。他の人々は、ソフトウェアの作者がユーザーにどのような権利を与えるかを制御できるようにすべきだと主張している。
前者の哲学は、1960年代に始まるハッカー文化にその源流の一部がある。
会計上の扱い[編集]
日本において、使用者(ユーザー)として見た場合、会計処理上(税法上)は、無形固定資産として扱われる。減価償却期間は5年間での定額償却である。
この節を書こうとした人は途中で寝てしまいました。後は適当に頑張って下さい。 |
関連項目[編集]
脚注[編集]
- ↑ () Wordreference.com: WordNet® 2.0 Princeton University [ arch. ] 2007年8月19日
- ↑ software..(n.d.). Dictionary.com Unabridged (v 1.1). 2007年4月13日閲覧, from Dictionary.com website: http://dictionary.reference.com/browse/software
- ↑ John Tukey, 85, Statistician; Coined the Word 'Software', New York Times, Obituaries, 2000年7月28日.
- ↑ 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.
外部リンク[編集]
an:Software ar:برمجية حاسوب arz:سوفت وير ast:Programa d'ordenador bat-smg:Pruogramėnė īronga be:Праграмнае забеспячэнне be-x-old:Праграмнае забесьпячэньне bg:Програмно осигуряване br:Meziant bs:Softver ca:Programari cs:Software cy:Meddalwedd da:Computerprogram de:Software el:Λογισμικόeo:Programaro es:Software et:Tarkvara eu:Software fa:نرمافزار fi:Ohjelmisto fo:Ritbúnaður fr:Logiciel gl:Programa informático gu:સૉફ્ટવેર he:תוכנה hi:सॉफ़्टवेयर hr:Programska podrška hsb:Softwara hu:Szoftver ia:Software id:Perangkat lunak is:Hugbúnaður it:Software iu:ᐊᕿᑦᑐᖅ ᖃᕆᑕᐅᔭᐅᑉ ᑎᑎᕋᕐᕕᖓ/aqittuq qaritaujaup titirarvinga ko:컴퓨터 소프트웨어 ks:सॉफ्टवेयर ku:Nermalav la:Res informatica lb:Software lmo:Software lo:ຊອຟຕ໌ແວຣ໌ lt:Programinė įranga lv:Programmatūra mk:Програмска опрема ml:കമ്പ്യൂട്ടര് സോഫ്റ്റ്വെയര് mn:Програм хангамж ms:Perisian nds:Software new:सफ्टवेर nl:Software nn:Programvare no:Dataprogram pl:Oprogramowanie pt:Software qu:Llamp'u kaq ro:Software ru:Программное обеспечение sah:Софтуэр scn:Software sh:Softver simple:Software sk:Softvér sl:Programska oprema so:Software sq:Software sr:Софтвер sv:Programvara ta:மென்பொருள் te:కంప్యూటర్ సాఫ్ట్వేర్ th:ซอฟต์แวร์ tl:Software tr:Yazılım tt:Sanaq programı uk:Програмне забезпечення vec:Software vi:Phần mềm war:Software yi:ווייכווארג zh:软件 zh-min-nan:Nńg-thé
このページはウィキペディア日本語版のコンテンツ・ソフトウエアを利用して作成されています。変更履歴はこちらです。 |