プラットフォームとアプリケーションの違い

プラットフォーム、アプリケーション、ソフトウェア、ハードウェア。これらの用語には関連する点や重なり合う点があります。この記事では、アプリケーションとプラットフォームの定義を見ていきます。また、ソフトウェア開発者にとってどのような意味があるかを説明します。

アプリケーションとは

アプリケーション(ソフトウェアアプリケーション)は、特定のタスクの遂行を目的とした、OSとは別のコンピュータプログラムです。機能を1つに絞り込んだものも、複数のプログラムを含むものもあります。

エンタープライズアプリケーションは3層のアーキテクチャに分かれています。

  • プレゼンテーション層は、ブラウザによって提供されます。
  • アプリケーション層には、アプリケーションのコア機能をサポートするビジネスロジックが含まれます。
  • データ層は、アプリケーションが必要とするデータへのアクセスを提供します。

アプリケーションはサーバーまたはコンピュータシステムのローカルで実行されます。他のアプリケーションとの通信には、アプリケーションプログラミングインターフェイス(API)を利用します。

アプリケーションには多くの機能があります。複雑なデータベースシステムやデプロイメントツールもあれば、ワードプロセッサや画像エディタのようなシンプルなプログラムもあります。

モダンアプリケーションとは

レガシーシステムに縛られ、サイロ化したアーキテクチャに依存している企業はいまだに多くあります。こうしたアーキテクチャは変更が難しく、保守コストもかさみます。そこで、これらのシステムを変革して新しい要件に対応しようと考える企業が増えてきています。

端的に言うと、モダンソフトウェアの特徴は柔軟性と拡張性の高さです。モダンソフトウェアは、ITチームと事業部門チームとの隔たりをなくすアジャイル手法 によって作成されます。この手法を使用すると、ソフトウェアを迅速に作成し、日単位でイテレーション開発を行うことが可能になります。結果として、変化の激しいエンドユーザーニーズに応じてアプリケーションを進化させられるようになります。

近年、サービスとしてのソフトウェアがデリバリーモデルの主流になってきています。柔軟性、効率性、拡張性を実現できることがその理由です。この方式では、ソフトウェアはクラウド上でホストされ、ユーザーはそれにリモートでアクセスします。つまり、企業がハードウェアに投資する必要がなくなるのです。また、ソフトウェアのアップデートをシームレスにインストールすることもできます。

よく利用されているクラウドプラットフォームとしては、AWS、Microsoft Azure、Google Cloudなどが挙げられます。ところで、プラットフォームとは何でしょうか。

プラットフォームとは

プラットフォームはハードウェア(サーバーなど)とソフトウェア(OS)の両方で実行され、アプリケーション実行の基盤となります。プラットフォームは基盤であり、外部システムと接続します。

つまり、ハードウェア(フォームファクタ)とOSを持ち、他のシステムと接続するスマートフォンは、プラットフォームであるといえます。

アプリケーションもプラットフォームになりうるか

プラットフォームの機能を「組織内で有意義な作業を実行すること」と定義した場合、アプリケーションも「プラットフォーム」と呼ぶことができます。

その好例が、リレーショナルデータベース管理システム(RDBMS)です。これはソフトウェアアプリケーションの一種であり、リレーショナルデータベース内のビジネスデータの保存、管理、クエリ、取得を行う際に使用されます。RDBMSはCRMやERPと通信します。つまり、RDBMSはアプリケーションではありますが、プラットフォームとしての機能も果たしています。

別の例として、Webサーバーアプリがあります。これは、企業がパートナーポータルなどのWebアプリプラットフォームを運用する際に利用されるようになってきています。

プラットフォームとソフトウェア開発

開発にあたっては、以下のいずれかを選択できます。

  • 特定のプラットフォーム向けのソフトウェアを開発する: 1つのプラットフォーム向けのアプリケーションを開発します。
  • クロスプラットフォームのソフトウェアを設計する: 事前定義された複数のプラットフォーム上でアプリケーションを動作させます。
  • プラットフォームに依存しないアプリケーションを作成する: ソフトウェアをどのプラットフォーム上でも実行できるようにします。この場合、通常はWebブラウザ経由でソフトウェアにアクセスすることになります。

多くの企業はソフトウェアを様々なプラットフォーム上で作成したいと考えます。しかし、複数のプラットフォームに対応できるほどの予算的な余裕がありません。そこで利用が増えてきているのが、「サービスとしてのプラットフォーム(PaaS)」と呼ばれるクラウドコンピューティングの一種です。

サービスとしてのプラットフォーム(PaaS)

PaaSはクラウドコンピューティングの一種です。Gartnerは、「サードパーティから企業へのアプリケーションインフラの提供」と定義しています。PaaSはインターネット経由で提供され、ベンダーが管理するものとセルフマネージドのものがあります。また、マルチテナントのものと専用のものがあります。

PaaSを利用すると、効率的な開発機能や新しい自動化機能を活用できます。

これらのツールはアプリケーション開発にとても役立ちます。PaaSを利用する場合、開発者はローカルインフラを用意せずにすみます。これにより作業負荷を大幅に減らせます。また、アプリケーション開発の妨げとなりがちな開発プロセスや社内プロセスを効率化することもできます。

PaaSは、アプリケーションを正しい方向に一歩進化させます。5年先、10年先のエンドユーザーのニーズは誰も予測できません。PaaSは、新たなニーズや市場環境に応じてすばやく変更可能な、適応性の高いアプリケーションの基盤になります。

PaaSの詳細については、「PaaSとは」 および「aPaaSとは」の記事をご覧ください。