![見出し画像](https://assets.st-note.com/production/uploads/images/46773889/rectangle_large_type_2_329cfd398a9f4bd4105fd8f6bb309ac4.png?width=800)
【IT基礎】一般的なソフトウェアの種類
対象の読者
・これからソフトウェアを開発しようと考えている人
・ソフトウェア開発について基礎的な勉強したい人
・ソフトウェアについて基礎的な勉強したい人
このチャンネルを初めてご覧の方は以下の記事を一読いただけると幸いです。
はじめに
ソフトウェア開発の工程について勉強する前にまずは『世の中に存在するソフトウェアにはどのような分類があるか』について簡単に理解しておきましょう。
エンジニアではないプロジェクト責任者やディレクターでも、ソフトウェア開発を進めていく中では技術的な会話は必ず発生します。
そんなときに、概念だけでも理解しておくと開発をスムーズに進めることができるでしょう。
一般的なソフトウェアの分類
ソフトウェアといってもその分類は多種多様です。
スマートフォンのアプリケーション、ホームページ、VRやAR、ゲーム、カーナビ、WindowsPCで動くアプリケーションなど種類は膨大に存在します。
ここでは、一般的に良く開発されるソフトウェアの分類について概要を説明します。
※ 例えば、人工衛星の制御システムや企業固有の工場内のシステムなど一般に詳細な技術が公開されていない分類については、現時点では重要ではないため記載しません。
1.Webアプリケーション
Webアプリケーションとは、『スマートフォンやPC上のウェブブラウザの上で動作するアプリケーション(システム)』です。
ウェブブラウザとは、※ Microsoft Edge, Safari, Google Crome, Firefoxなどのアプリケーションのことです。
※ これらは各ベンダーが開発しているアプリケーションの名前で、ウェブブラウザという種類に分類されています。
スマートフォンやPCを持っている人であれば、日常的に何かしらのウェブブラウザは利用していると思います。
iPhoneを使っている人であれば「Safari」、WindowsPCであれば「Microsoft Edge」など、その機器を開発しているベンダー(AppleやMicrosoft)がブラウザ自体を提供していることが多いです。
最近のWebアプリケーションでは様々な技術が使われていますが、基本的には『HTML』『CSS』『Javascript』などの技術が中心となって作られています。
比較的昔から浸透している「ホームページ」や「ブログ」といったシステムもWebアプリケーションに分類され、基本的にテキストや画像をHTMLとして表現してブラウザで閲覧するシステムです。
ブラウザは、元々HTMLというテキスト構造を表示するためのものでしたが、現在では動画を配信したり、CGコンテンツを表示するなど使用できる技術の幅が広がっています。
ブラウザの進化に伴い、Webアプリケーションも単に文章を読むだけでなく、動画閲覧やゲームなどリッチな機能を開発できるように進化しています。
2.モバイルアプリケーション(ネイティブアプリケーション)
モバイルアプリケーションとは『スマートフォンやタブレット上の固有のシステムによって動作するアプリケーション』です。
別名として『ネイティブアプリケーション』と呼ばれることもあります。
モバイルアプリケーションは、『iPhone(を含むApple端末)』『Android』などOS(ベンダー固有のシステム)の上で動作します。
このようなOSを提供するベンダー(AppleやGoogle)は、アプリケーションを提供するための独自の配信プラットフォームを用意しています。
※ Appleは「AppStore」Androidは「Google Play」
混乱させてしまうかもしれませんが、前述のWebアプリケーションで説明した「Safari(ウェブブラウザ)」もまたモバイルアプリケーションとして端末にインストールされています。
Safari機能上で動作するアプリケーションは、Webアプリケーションですが、Safari自体はモバイルアプリケーションになります。
モバイルアプリケーションには、(Webアプリケーションと比較すると)端末の固有機能についてシームレスにアクセスできるというメリットがあります。
例えば
『独自の決済システム』
『独自の通知機能』
『位置情報(GPS)』
『Bluetoothなどの無線技術』
『機械学習』
など簡単なプログラミングで端末の機能にアクセスできる仕組みをOSが提供しています。
この仕組を利用することでよりリッチなアプリケーションを開発することが可能です。
開発に使用される技術は、OSを提供するベンダーごとに異なります。
iPhoneのアプリを作る技術とAndroidを作る技術は基本的には別々に習得する必要があります。
※ 最近では、iPhoneとAndroidアプリを一緒に作れる技術もいくつか存在しています。
3. デスクトップアプリケーション
デスクトップアプリケーションとは『MacやWindows、LinuxなどのPC上で動作するアプリケーション』です。
基本的な考えとしては、モバイルアプリケーションと同じで、OS(固有のシステム)が提供している環境上で動くPC(デスクトップPCやノートPC)のアプリケーションを指します。
4. 組み込みソフトウェア
特定の機能を実現するために、家電や産業用機械などに組み込まれるソフトウェアを『組み込みソフトウェア』と呼びます。
イメージとしては、エアコンの制御システムやカーナビゲーションなど専用の目的で作成された機械に組み込まれるソフトウェアを指します。
最近だとIOTと呼ばれる製品(スマートスピーカー、スマート電球など)にも組み込みソフトウェアが利用されています。
組み込みソフトウェアは専門的な目的に特化していることが多いため、必要な技術は目的によって異なります。
温度、距離、明るさ、音など専門的な目的に特化した、よりハードウェアに近い分野での技術を必要とするのが組み込みソフトウェアです。
5.サーバーソフトウェア
サーバーソフトウェアとは『モバイルアプリケーションやWebアプリケーションのように直接人間の操作を介在しないサーバで動作するソフトウェア』を指します。
代表的な例としては、メールを配信するためのメールサーバーや、IPアドレスとドメイン(ホスト名)を紐付けるDNSサーバーなどがあります。
あるアプリケーションからデータのリクエストを受け取り、対象データを返すことを目的とする「APIサーバー」と呼ばれるようなソフトウェアもサーバーソフトウェアに含まれます。
※ 明確な境界は難しいため、概念としてイメージできれば構いません。
まとめ
その他、例えばブロックチェーンや機械学習など様々な分野にソフトウェアは使われています。
そのひとつひとつを正確な分類を理解するのはなかなか難しいですが、ここに書かれているような一般的な分類については理解しておくとよいでしょう。
各々特性が異なり、必要な技術も異なるため、ソフトウェアエンジニアも全ての分類について開発できるわけではありません。
まずは、自分がつくりたいソフトウェアがどのような分類に含まれるのかをざっくりと理解し、今後の開発に役立ててください。
アンケートのお願い
このチャンネルでは、これから提供していくコンテンツやサポートの内容を改善していくために、アンケートをお願いしています。
ぜひアンケートにご協力ください。
アンケートはこちらから
この記事が気に入ったらサポートをしてみませんか?