以前の記事で、 IT 技術を一定の分類で理解し、自分が学習・利用する技術がどこに分類されるかを把握するを推奨しました。
同記事ではシステムに関わる一通りの技術について上げていましたが、各技術について深く触れていませんでした。せっかくなので記載した技術の大枠を捉えられたらシステムに対する理解が深まるのではないかと思い補足記事を書くに至りました。
各用語を順番に解説していきたいのですが、今回はそれらを理解するための前提事項として以下を解説します。
ハードウェア・ソフトウェア・ミドルウェア
まずハードウェアですが、PC の物理的なパーツの総称です。PC に内蔵されているところで、ファイルを保存する HDD、計算する CPU 、情報を一時格納するメモリはいずれもハードウェアです。その他にはキーボードやマウス、スピーカもすべてハードウェアです。PC を構成するもので物理的、つまり目視可能なものはすべてハードウェアに分類されます。
続いて、ソフトウェアですが、ハードウェアとは逆に目視できない要素の総称です。例えば、Excel、Word といったソフトがそうですし、その他インストールして(ときにインストールしないものもありますが)利用するソフト(アプリ)はすべてソフトウェアと呼ぶことができます。外観を持たない、あくまでも論理的な概念と理解してください。
最後にミドルウェアですが、その他のソフトウェアを制御するソフトウェアを表します。例えば今後説明する OS 、データベース、Web サーバが該当します。実際の業務ではミドルウェアを厳格に使う機会は少ないですが、もし耳にした場合は「ちょっと重めのソフトなんだなぁ」と理解する程度で充分でしょう。
クライアント・サーバ
クライアントは通信において要求を出すマシンを表し、サーバはその要求に応じて動作するマシンを表します。これらを組み合わせたシステムをクライアント・サーバシステム(略してクラサバ)と呼称しますが、多くのシステムがクラサバと思って問題ありません。
みなさんがお持ちの PC、スマホはすべてクライアントと言うことができます。アプリであれ、ブラウザであれ、必要な情報をネットワークを通じて要求します。尚、PC にインストール(配置)が必要なアプリをネイティブアプリ、ブラウザで利用するアプリを Web アプリ(Web システム)と呼称するので、この機会に覚えておきましょう。
サーバはすで一定のリクエストを受ける前提でマシンにプログラムを搭載し、公開しておきます。逆に普段利用している PC やスマホが他のクライアントからの要求に応じて何か情報を返すことはほとんどないと思います。ここではサーバには一定の設定が必要とだけ理解しておいてください。ここまでの説明を図にすると以下のようになります。
また、特定のクライアントを持たず、どこからのリクエストにも応じるサーバを公開 API (Application Programming Interface)と呼びます。天気情報を取得する API や全国の市区町村情報を取得する API がその例です。
補足:アプリケーションとソフトウェアについて
補足記事の補足でややこしいのですが、書いている途中で、アプリケーション(アプリ)とソフトウェア(ソフト)についても説明があったほうがよいと思ったので追記します。
アプリとソフトはその境界が曖昧です。上記の記載ではアプリとソフトを慣習に従って感覚的に使い分けていましたが、基本的には同じ意味に捉えて問題ありません。
アプリとソフトは厳密には定義が異なりますが、業務上の慣習として厳格に区別して使われることはほとんどありません。慣習として、アプリはクライアントとサーバ含む、システムそのものを表すこともありますが、プログラムの一定の単位を表すこともあります。一方ソフトは主にクライアントを指すことが多いです。注意が必要なのは、一般で言うアプリはスマホアプリを表しますが、それが通用するのはスマホアプリを開発しているプロジェクトに限られる、ということです。スマホアプリはネイティブアプリに分類されますが、業界としてはアプリ=スマホアプリとならないことも多いのでご注意ください。
上記をベースに次回からシステム関連の技術について説明していきます。