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

目次

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

アプリケーションソフトウェアとは、コンピュータ上で特定のタスクを実行するために設計されたソフトウェアのことです。つまり、ユーザーがコンピュータ上で直接操作し、利用するソフトウェアのことを指します。

一般的に、テキスト処理、表計算、グラフィックス、ビデオ編集、ゲーム、インターネットブラウジングなどの目的で使用されます。

アプリケーションソフトウェアは、プログラマーによって開発され、一般的にOS(オペレーティングシステム)の上で動作します。

「アプリケーション」という言葉の語源は?

アプリケーション(application)とは、もともとの意味は英語で「応用・適用」を表す言葉です。

アプリケーションソフトウエアは、オペレーティングシステム(OS)上で動作して使用されるソフトなので、「application(応用)」の名がつけられています。
※そのため、日本語では、基本機能を果たすOSを「基本ソフト」、表計算などの付加される機能を「応用ソフト」と呼んでいた過去があります。

最近は略称が広く用いられており、日本語ではアプリ、英語ではapps(アップス)などとよばれることが多いです。(例えばiOSのApp Storeなど)

ジョブとタスク

ジョブ(Job)とタスク(Task)は、共にコンピュータにおける処理の単位を表す言葉ですが、それぞれ異なる粒度の作業単位を指します。

ジョブは、複数のタスクを含む、一連の処理を表します。例えば、大量のデータを処理するプログラムや、長時間の計算を必要とするプログラムがジョブとなります。ジョブは、一度に実行されるわけではなく、通常はキューに入れられて順番待ちします。

一方、タスクは、ジョブ中にある個々の処理単位を表します。例えば、データベースの検索や、文書の印刷などがタスクにあたります。タスクは、ジョブによって呼び出され、コンピュータによって実行されます。

このように、ジョブは複数のタスクを含み、タスクは個別の処理を担当するという役割分担が行われています。

ジョブは人間から見た仕事の単位で、タスクはコンピュータから見た仕事の単位と言えます。

ジョブとタスクの例え話

ジョブとタスクを料理を例にとって説明してみましょう。

ジョブとは、料理の全体的なプロセスを指します。たとえば、「パスタを作る」という全体的な目標がジョブになります。パスタを作るためには、材料を買ってくるところから始まり、パスタを茹でて、ソースを作り、盛り付けるまで、全体的な流れが必要です。

一方、タスクとはそのジョブ(この場合は「パスタを作る」)の中に含まれる具体的な作業を指します。たとえば、「材料を買いに行く」「パスタを茹でる」「ソースを作る」などがそれぞれ独立したタスクとなります。これらのタスクは一つ一つが特定の目標を持っており、全体のジョブを進行させるための一部分を担当しています。

このように、コンピュータの中でもジョブは一連のタスクから成り、各タスクはそれぞれ独立した一部分を担当して全体のジョブを進行させると考えることができます。

マルチタスク

マルチタスクとは、1つのコンピュータで複数のタスクを同時に実行することができる機能のことです。複数のアプリケーションを同時に開いたり、複数のタスクを同時に処理したりできます。

例えば、ウェブブラウザでページを閲覧しながら、音楽を再生することができます。

マルチタスクは、一つのCPUが複数の作業を次々と切り替えて実行することで実現されます。

具体的には、CPUが一つのタスクを少し進めた後に次のタスクへと素早く切り替わり、それを繰り返すことで、まるで多くのタスクが同時に行われているかのように見せます。この技術により、コンピュータは複数のプログラムを同時に走らせているかのように働くことができます。

マルチタスクのイメージ

一方で、コンピュータが物理的に処理できるタスクの上限がありますので、同時に実行できるアプリケーション数やタスク数には限度があります。また、マルチタスクを行うためには、オペレーティングシステムが適切にタスクのスケジューリングを行う必要があります。

マルチタスクの例
  1. 音楽のストリーミング:パソコンで音楽をストリーミングしながら、ウェブブラウザでインターネットサーフィンをするといった場合、それぞれのアプリケーション(音楽プレーヤーとウェブブラウザ)は異なるタスクとして管理され、OSはこれらをマルチタスクとして処理します。
  2. データのダウンロード:大きなファイルをダウンロードしながら、エクセルでスプレッドシートを編集するといった状況もマルチタスクの一例です。

マルチスレッド

マルチスレッドとは、複数の処理を同時に行うことができるプログラミングの手法のことです。これにより、複数のタスクを同時に処理し、処理速度を高めることができます。

通常、1つのアプリケーションプログラムは1つの処理を実行しますが、マルチスレッドでは1つのアプリケーションプログラム内で複数の処理(スレッド)を同時に実行します。各スレッドはそれぞれ独自の処理を持ち、他のスレッドとは独立して動作します。これにより、複数の処理を同時に実行でき、処理速度の向上が期待できます。

シングルコアCPUのマルチスレッド
マルチスレッドとマルチタスク

マルチスレッドは複数のアプリケーション間で行われるマルチタスクの発想を、一つのアプリケーションの内部にまで適用したものと考えることができます。

さらに、CPUがマルチコアであった場合、各コアが独立して異なるスレッドを同時に処理することができます。

マルチスレッドプログラムでは、複数のスレッドが作成され、各コアがそれぞれのスレッドを実行します。これにより、真の同時処理を実現することで、システム全体の処理能力を大きく向上させることが可能となります。

マルチコアCPUのマルチスレッド

ただし、複数のスレッドが同じリソース(メモリやファイルなど)にアクセスする場合、データ競合が発生し、処理の正確性や性能に影響を与えることがあります。そのため、適切な同期や排他制御が必要となります。

マルチスレッドの例
  1. ワードプロセッサ:ユーザーが文書を入力している間、ワードプロセッサは別のスレッドでスペルチェックや文法チェックを同時に行います。こういった作業を同時に行うことで、ユーザーは一つのアプリケーション内で複数の作業を同時に行うことが可能になります。
  2. ウェブブラウザ:ウェブブラウザもまたマルチスレッドを活用しています。例えば、一つのタブでウェブページを読み込みながら、別のタブで動画を再生するといったことが可能です。これは各タブが異なるスレッドで動作しているからです。
例え話「シングルコアのマルチスレッドとマルチコアのマルチスレッド」

料理を作ることを例にとって、シングルコアのマルチスレッドとマルチコアのマルチスレッド処理を説明してみましょう。

シングルコアのマルチスレッド

シェフ1人がキッチンで複数の料理を同時に進行させて作成する様子を考えます。彼はパスタを茹でながら、ステーキを焼き、サラダを切るといった作業を同時進行で行います。しかし、実際には1つの作業を少し進めたら、次の作業に移るという風に切り替えを繰り返しています。一見、すべての料理が同時に進んでいるように見えますが、実際にはシェフが高速で作業を切り替えているだけです。

マルチコアのマルチスレッド

4つのキッチンステーションがある大きなキッチンを想像してください。それぞれのステーションにはシェフが1人ずつ配置されています。一方のシェフはパスタを茹で、別のシェフはステーキを焼き、さらに別のシェフはサラダを作成しています。この場合、それぞれの料理は真に同時に進行しており、全体としての料理の完成が早まることが期待されます。

この例から、マルチコアのマルチスレッド処理の方が多くのタスクを真に同時に進行させることができるという点で優れていることが理解できます。

目次