アプリケーションソフトウェア
アプリケーションソフトウェア(application software)あるいはアプリケーションソフト(最近は英語では極端に略すとapp(s)アップ)は、ある特定の機能や目的のために開発・使用されるソフトウェアで、コンピュータの操作自体のためのものではないもの。たとえば、ワープロソフト、表計算ソフトウェア、イラスト作成(お絵かき)用ソフトウェア、写真加工用ソフトウェアなど。アプリケーションプログラム(応用プログラム)ともいい、コンピュータ・プログラムの一種である。
アプリケーションと(2番目の語を省略して)も呼ばれ。「アプリケーション」は「応用」という意味なので日本語では「応用ソフト」とも呼ぶ(が、最近は「応用ソフト」と呼ばれることは減った)。2010年代に普及したスマートフォンやタブレット用のものは日本語ではアプリと略され、その状況を見てマイクロソフト社もWindows 10あたりから、アプリケーションソフトのことをアプリと呼ぶようになった(ビギナー向けの説明書や宣伝パンフなどの場合)。
アプリケーション・ソフトウェアという用語・概念と対比されている用語・概念というのは「システムソフトウェア」であり、システムソフトウェアのほうは、計算機のきわめて基本的な機能や資源を管理・提供する役割のソフトウェアであり、譬えて言えば「裏方的な存在」である。
アプリケーションソフトウェアの例としては、たとえば一般的な事務所(オフィス)での基本的な事務作業を支援する分野では、ワープロソフト、表計算ソフト、プレゼンテーションソフトウェア(会議資料作成)、データベース管理システム (DBMS) などが挙げられ、その他の分野では、映像・音声などを再生するためのメディアプレーヤー、ペイントソフト、ソフトウェア、動画編集ソフトウェア、ゲームソフト...と、現在では網羅的に列挙することは困難なくらい膨大な種類のアプリケーション・ソフトウェアがある。特にスマートフォン(という電話機能も持った携帯可能なコンピュータ)が登場し、スマートフォン上で動くアプリが流通するようになってからは、数(個々のソフトウェアの数、本数、個数)もジャンルの数も爆発的に増えてきており、最初はそれぞれ数百個程度の数で始まったのに、2020年時点で、Android上で動きGoogle Play Storeで流通しているアプリは約256万(個、種)、iPhone上で動くアプリは約185万(個、種)という状況である。ジャンルも、個人が仕事抜きで、きわめて私的に使うようなものの比率が圧倒的に増えてきている。→#モバイルアプリケーション
(アプリケーションソフトウェアの能力はさまざまであり)テキストを操作するアプリケーションもあれば、数式、グラフィックス、あるいはこれらの組合せを操作するアプリケーションもある。ワードプロセッサのように特定の作業に特化することで強力な計算能力を提供するものもあれば、個々の作業をこなす能力は低くても、いくつかのアプリケーションを統合したソフトウェアもある。
組み込みシステムやデジタル腕時計、簡易的なゲーム機などでは、アプリケーションソフトウェアとシステムソフトウェアは利用者から見て区別できない場合がある。例えば、ビデオテープレコーダ、DVDプレイヤー、電子レンジなどの制御は、アプリケーションソフトウェアとシステムソフトウェアの組み合わせによって実現されることがあるが、そのような機器内部の組み合わせは、利用者には区別することができない。また、アプリケーションとシステムソフトウェアを分けずに作成されている場合も有る。
なお、世の中の多くの人が共通的に利用できるものとして、汎用化して売り出したものをパッケージソフトウェアと呼ぶ。会計処理や給与計算、製造業・小売業などの多くの分野に対して、業務用や会計用、人事や査定用のパッケージソフトウェアが販売されている。
近年のパッケージソフトウェアには、Jakarta EEとApache Strutsを利用した、ウェブアプリケーションサーバ上で稼働するものがある。2000年代初期より、iアプリなど、携帯電話上で動くアプリケーションソフトウェアも登場した。
アプリケーション・ソフトウェアの制作(開発)というのは、近年では一般に統合開発環境を使って行われている。このアプリケーションを作成するソフトウェアもアプリケーションの一種でもある。→#アプリケーションソフトウェアの制作
オペレーティングシステム(OS)などのシステムソフトウェアとアプリケーションソフトウェアの境界は様々であり、OSの製造者によって異なる。利用者の間でも境界をどう見なすか判断が分かれることがあり、自分が利用しているOSの製造者と同じ考えを採ろうとする人もいるが、OSの製造者ごとに見解が異なるので人々の間でも見解が異なるという結果になり、またOSのインストールパッケージに含まれる物をアプリケーションとするのかしないのか、小規模なソフトウェアもアプリケーションとするのかしないのか、シェルをアプリケーションとするのかしないのか、などは、しばしば議論の元となる。
コンテンツは広義には全ての具体化されたソフトウェアを含むことがあるが、アプリケーションソフトウェアと対比される場合には、該当ソフトウェアが作製、編集、出力、管理する対象物を指す。多くはコンテンツ自体がデジタルデータである。例えば、はアプリケーションソフトウェアであり、作製・編集されたデジタル画像をコンテンツと称する。
該当ソフトウェアがコンテンツと称し、実行ファイル形式で出力する場合もある。また、開発環境と呼ばれるアプリケーションからはコンテンツとしてアプリケーション(実行ファイル)が出力される。
まず、最近特に台数が圧倒的に増え、アプリケーションの数も他の種類のコンピュータよりも圧倒的に増えてきており、その開発に従事しているエンジニアの人数もすでに他種のアプリケーションを圧倒する状態になっている、スマートフォンやタブレット用のアプリケーションから解説することにする。
近年のスマホでは、購入時に、数十ほどのアプリケーションソフトウェアがあらかじめインストールされている(プリインストール)状態になっている。たとえば今仮に、Androidスマートフォンのうちシャープ製でソフトバンクから販売されているものを例にとると、以下のような状態である。
Chrome(Google社の純正webブラウザGoogle Chrome)、Duo(ビデオ通話用アプリ)、Facebook(SNSのFacebookにアクセスするためのアプリ)、Gmail(Gmailを送受信するためのアプリ)、Google(Google検索をするためのアプリ)、Gyao!(映画・アニメ・音楽を楽しむためのアプリ)、Gガイド番組表(テレビの番組表を見るためのアプリ)、Netflix(Netflixで配信されているコンテンツを見るためのアプリ)、OfficeSuit(オフィススイート(プロダクション・スイート)のアプリ)、PlayStore(Google Playに掲載されているさまざまなアプリを検索しそれをダウンロード・インストールするためのアプリ)、YouTube(YouTubeのコンテンツを視聴したり、データをアップロードするためのアプリ)、アルバム(スマホで撮影した写真を閲覧したり、ファイルを整理・整頓したりファイル名を変更するなどのためのアプリ)、カメラ(スマホに内蔵されたレンズやCCDを使い、スマホをカメラとして使い撮影するためのアプリ)、カレンダー(暦の情報や当日が何日か判るカレンダーを確認したり、自分の予定などを記入しスケジュール管理もできるアプリ)、緊急速報メール(気象庁が配信する緊急地震速報や津波警報などを自動受信し、持ち主に知らせてくれるアプリ)、ドライブ(Google Driveでのデータ保存や取り出しを管理できるアプリ)、マップ(Google Mapsで地球上のありとあらゆる場所の地図を見せてくれるアプリ)、プライムビデオ(Amazonプライム・ビデオを視聴するためのアプリ) ....
これでも実際のリストのまだ一部にすぎないが、ともかくこのように、スマートフォンのアプリでは、1980年代や1990年代にアプリケーションソフトウェアを分類していた時の、オーソドックスな(古臭い)カテゴリ枠ではもはや簡単に分類することができないような種類のアプリケーションが多数出現してきている。
さらにAndroidフォンだと、Google Play Storeに掲載されている250万種類以上のアプリケーションから自由に選んで、ダウンロードおよびインストールして使うことができる。しかも、一部に広告が少し表示されることを我慢すれば、ほとんどが無料である。開発者によっては、広告表示も一切無しで、アプリケーションを無料で人々に公開している。
携帯電話(フィーチャーフォン)用のアプリは携帯アプリと呼ばれていた。
コンテンツ開発ソフトウェア (contents development software) とは、他者に発信するための印刷コンテンツや電子コンテンツを制作するためのソフトウェア。グラフィックアート、電子出版、マルチメディア開発などが含まれる。
- ペイントソフト、ドローソフト、ソフトウェア
コンテンツ・アクセス・ソフトウェア (contents access software) は、基本的には編集することなくコンテンツにアクセスするソフトウェアだが、コンテンツ編集機能を持つ場合もある。デジタルエンターテイメントの消費を目的としたり、デジタルコンテンツを出版するのに使われることもある。
電子メディアアクセス - ウェブブラウザ、メディアプレーヤー、プレゼンテーションソフトウェア
娯楽/エンターテイメント - バーチャルペット、スクリーンセーバー、コンピュータゲーム
教育ソフトウェア (educational software) は、コンテンツアクセスと似ているが、教材を提示するだけでなくテストを課すことで学習状況を管理する点が特徴的である。また、グループウェア的要素を持つことが多い。
複数のアプリケーションがひとまとまりにされたもの、一種のパッケージに同梱されたような状態になったものを、アプリケーションスイート (application suite) と呼ぶことがある。例としては、ワードプロセッサや表計算ソフトなどを同梱した、Microsoft OfficeとOpenOffice.orgが挙げられる。スイート内の各アプリケーションの特徴としては、操作のユーザインタフェースに一貫性があり、表計算ソフトで作成したスプレッドシートをワードプロセッサの文書内に埋め込むなど、相互のデータのやりとりが考慮されていることが挙げられる。
インフォメーション・ワーカー・ソフトウェア (information worker software) とは、組織内の個々のプロジェクトで、個人が情報を生成し管理するニーズに対応したソフトウェア。例えば、時間管理、資源管理、ドキュメンテーションツール、解析ツール、グループウェアなどがある。ワードプロセッサ、表計算ソフト、電子メールクライアントやブログクライアント、個人情報管理システム、各種メディアエディタなどは、様々なインフォメーションワーカーの仕事で使われる。
時間/資源管理 - 会計ソフト、プロジェクトマネジメントソフト
データ管理 - コンタクト管理、表計算ソフト、データベース管理システム (DBMS)(個人用)
ドキュメンテーション - ワードプロセッサ、DTP、作図ソフトウェア、プレゼンテーションソフトウェア
解析ソフトウェア - 数式処理システム、数値解析、統計ソフトウェア
財務ソフトウェア - 株式取引用ソフトウェアなど
企業ソフトウェア (enterprise software) は、組織のプロセスやデータフローのニーズに対応したもので、大規模な分散環境であることが多い。例えば、財務管理、顧客関係管理 (CRM)、サプライチェーン・マネジメント (SCM) などがある。部門ソフトウェア (departmental software) は企業ソフトウェアの一種であり、大きな組織内のより小さな部分を扱う。例えば、出張旅費管理、ITヘルプデスクなどがそれに当たる。
企業基盤ソフトウェア (enterprise infrastructure software) とは、企業ソフトウェアシステムをサポートするために必要な共通機能を提供するものを指す。例えば、データベース、メールサーバ、ネットワーク管理、セキュリティ管理などがある。
データベース管理システム (DBMS)
デジタル資産管理 (DAM) ソフトウェア
シミュレーションソフトウェア は、シミュレーションするためのソフトウェア。使用目的は多種多様であり、予報、予測、研究、訓練、娯楽など。航空工学での航空機の流体力学的分析、天体物理学での利用(たとえば個々の惑星や小惑星の動きの予測や過去の位置の再現、銀河の回転のシミュレーション)、気象予報全般(たとえば天候、雨雲位置の予測、気温・風向の予報 等々等々)、気象現象の予測、気候変動の長期予測・研究(たとえばCO2の放出量に応じた気温上昇の具体的な数値の算出など)、応用化学、製薬、マクロ経済やミクロ経済の予測、交通量の予測、感染症が社会や集団に属する人々の間で相互に感染してゆく過程や程度の予測...等々、現代では数えきれないほどのシミュレーションが行われている。たとえばここ数十年の精度の高い気象予報というのは、スーパーコンピューター上で走るシミュレーションソフトウェアの上で、架空の大気空間と地表などを(数億マスなど)多数のマス目で区切り、各マスの気温、気圧、水蒸気量、風向、風の強さ、日照...等々に関するデータを設定し、その膨大な量のデータに対して膨大な量の演算を高速に行い、各マス内の変化と周辺のマス目への影響など、相互作用を、細かい時間に分割して計算することで実現できている。1950年代や1960年代のようにコンピュータシミュレーション抜きの手法、つまりわずかなデータを用いて人の頭脳で大まかな推論や経験や勘で行っては、優秀な予報官ですら、気象予報のおよそ数割から半分強ほどがハズレになってしまう。
現代では、各分野ごとに、さまざまなシミュレーションソフトウェアが開発されている。具体的なシミュレーション・ソフトウェアについてはList of computer simulation software(英語版の一覧)が参照可であり、各ソフトの特徴や使用分野も分かる。シミュレーションソフトの英語版の記事も読め、(日本語版があるソフトウェアならば)日本語版の記事へとリンクも張られているものもある。
なお訓練目的のシミュレーションソフトウェアなどもある(フライトシミュレーション、ドライビングシミュレーターなど)
またゲーム形式に仕立てたシミュレーションゲームもPlayStationなど市販のゲームコンソールやPCなどで動くので、ゲーム愛好者(ゲーマー)たちにさかんに利用されている。
エンジニアリングソフトウェア (engineering software) は、各種製品開発に使われる。
ハードウェアエンジニアリング - CAE、CAD、有限要素法解析ソフトウェア
ソフトウェアエンジニアリング - コンピュータ言語処理系/エディタ/コンパイラなど、統合開発環境 (IDE)
英語:Management software は、各種管理(マネジメント)に使われる。
プロジェクトマネジメント -
ワークマネジメント -
近年では一般に、アプリケーションソフトウェアは統合開発環境(IDE)を使って制作(開発)されている。IDEというのは、プログラマがソースコードを記述する「エディタ」、ソースコードから実行プログラムを生成する「コンパイラ」、コードの不具合を発見・修正するための「デバッガ」など、プログラム開発のためのソフトウェア群(ツール群)をひとまとめにしたもののことである。
無料のものもあり、有料のものもある。複数のプラットフォーム向けに使えるIDEもある。特定のプラットフォーム専用のものもある。
ものすごく原始的で単純な(少ない文字数、バイト数の)ソフトウェアならば、テキストエディタ(と、PCなどにインストールされた素朴なコンパイラ)だけでも書くことは一応でき、コンピュータの歴史の初期にはそうしたやりかたが行われることは多々あったわけで、今日でも初心者に対するプログラミング講習の「最初の一歩」だけは、あえてそうした段階を一度踏ませることでコンピュータ内部で行われていることの現実を初心者にも理解してもらうという手順がとられることも多いが、今日では、その次の段階以降の「アプリケーション・ソフトウェア」と呼ぶにふさわしいくらいの機能を持ったソフトウェアを制作する場合は、基本的に統合開発環境を使って制作するものだと考えてよい。
WindowsやMac,Linuxなど一般的なファイルからOSに読み込まれ実行される形式のOSであれば、上記開発環境で作成されたファイルを実行できる。
Androidアプリ、つまりAndroid上で動くアプリの開発環境としては、たとえば以下のような選択肢がある。
Android Studio(Google社純正。Androidアプリ専用。無料)
Eclipse(IBMに起源をもつ汎用開発環境。無料。)
Titanium Mobile(Eclipse系)
Visual Studio + Xamarin(Microsoft社の系統)
(もっぱらゲームアプリの制作だけなら)Unity
開発に使われるプログラミング言語は、主にJavaやPythonなど。
iOS上で動くアプリの開発環境は、
Xcode(Apple社公式の統合開発環境)
開発に使われる言語は、Swift、Objective-Cなど。
Microsoft Windowsの上で動くアプリケーションの制作(開発)を行う開発環境としては、たとえば以下のような選択肢がある。
Visual Studio(Microsoft社製の統合開発環境。Professional版は有料であるが、Visual Studio Communityというバージョンならば個人使用は無料。)
言語の選択肢としては(2019年版時点で)、C++、C#、Visual Basic、F#、Python、Node.js、HTML/JavaScript、TypeScriptといったところである。
Eclipse(IBM起源。無料)