ミドルウェアとは?定義、意味、特徴を初心者向けにわかりやすく解説

ミドルウェアとは、各業務処理を行うアプリケーションと、コンピュータの基本的な制御を行うOSの間に存在するソフトウェアのことです。アプリケーションが要求する特定の処理や高度な機能を提供します。

ミドルウェアとはアプリケーションとOSの間に存在するソフトウェア

ミドルウェアとは、各業務処理を行うアプリケーションと、コンピュータの基本的な制御を行うOSの間に存在するソフトウェアのことです。名前の通り、アプリケーションとOSの中間(ミドル)に位置します。

ミドルウェアは、アプリケーションが要求する機能を提供します。ミドルウェアが提供する機能はアプリケーションに特化しており、限定的です。

OSもミドルウェアと同様にアプリケーションに対して機能を提供しますが、ミドルウェアに比べて汎用的です。

ポイント

アプリケーション:コンピュータを目的に応じて応用するためのプログラム
ミドルウェア  :アプリケーションに特化した限定的な機能を提供
OS        :汎用的な機能を提供

ミドルウェアはソフトウェアの一種

既に述べた通り、ミドルウェアは、ソフトウェアの一種です。

ソフトウェアは、コンピュータを動作させるための命令や処理手順の纏まり、何らかの処理を行うプログラムを指します。

ソフトウェアの中でも、ミドルウェアは、アプリケーションとOSの間に位置し、アプリケーションが要求する特定の機能を提供するものです。

ソフトウェアの分類は、以下の通りです。

ソフトウェアの分類
  • アプリケーション
  • ミドルウェア
  • OS
  • ファームウェア

ソフトウェアは、アプリケーション側(上位)に近づくにつれて、ハードウェアの違いを意識しない、抽象的な機能を持ちます。一方、ハードウェア側(下位)に近づくにつれ、ハードウェアの違いを意識する、具体的な機能を持ちます。

ファームウェアとは

ファームウェアとは、機器の内部に固定的に組み込まれるソフトウェア。ハードウェアのROMなどに組み込まれ、そのハードウェアを制御する。

ファームウェアについては、以下のページをご覧ください。

ファームウェアとは?意味・定義・特徴をわかりやすく解説

ミドルウェアの役割・用途・メリット

共通部分の開発を省き、開発コストを短縮

ミドルウェアは、アプリケーションの共通部分がパッケージ化されたものです。多くのアプリケーションで使用される汎用的な機能を提供しています。

ソフトウェア開発では、汎用的でありながらOSには搭載されておらず、かと言ってアプリケーションに必要なほど限定的ではない機能が必要となる場合があります。こうした場合、この機能が共通部分としてパッケージ化されたミドルウェアを使用すると、この機能の開発を省くことができます。

結果として、アプリケーションソフトの開発に注力できるため、開発期間を短縮し、開発費を抑えるすることができます。

特定の処理や高度な動作を実現する

ミドルウェアの役割は、アプリケーションとOSの間に入り、お互いの動作を補完することです。

既に述べた通り、OSは汎用的な機能しか持っていないため、OS単体で実現できることは限られています。

OS+アプリケーションだけでも動作しますが、よりアプリケーションに特化した機能を提供しているミドルウェアを使用することで、特定の処理や高度な動作ができるようになります。

OSやハードウェアの違いを吸収する

ミドルウェアの中には、複数のOSやハードウェアに対応しているものもあります。

ミドルウェアを使用することで、OSの違いやハードウェアの違いをミドルウェアが吸収します。これにより、OSの違いやハードウェアの違いが、上位層のアプリケーションに影響せず、異なるOS・ハードウェアであっても同じように動作します。

ポイント
  • ミドルウェアは、共通部分の開発を省き、開発コストを短縮する
  • ミドルウェアは、特定の処理や高度な動作を実現する
  • ミドルウェアは、OSやハードウェアの違いを吸収し、アプリケーションへの影響を回避する

ミドルウェアのデメリットは導入・維持コスト

ミドルウェアのデメリットは、導入・維持コストが発生することです。導入時のライセンス費用や、年間保守費用が発生します。

このため、ミドルウェアを導入しなかった際の開発コストと、導入した際の導入・維持コストを比較した上で、採用を検討することが重要になります。

ポイント
  • ミドルウェアのデメリットは導入・維持コストが発生すること
  • 導入しなかった際の開発コストと、導入した際の導入・維持コストを比較することが重要になる

ミドルウェアとライブラリの違い

ライブラリとは、汎用的に使うプログラムを纏めたものです。

ライブラリとは

ライブラリとは、汎用的に使うプログラム、機能、データを纏めたもの。ライブラリ単独では起動しない。

ミドルウェアとライブラリは、どちらもプログラムから呼び出せるように用意されています。両者の違いは、独立して動作するかどうかです。

ライブラリはアプリケーションと組み合わせることで動作しますが、ミドルウェアは単独でも動作します。

ポイント

ミドルウェア:単独で起動可能
ライブラリ :単独では起動しない

ミドルウェアの代表例

代表的なミドルウェアの例は、以下の通りです。

データベースサーバー MySQL、Oracle、MariaDB
Webサーバー Apache、IIS、Nginx
アプリケーションサーバー Tomcat(Java)、Apache(PHP)、Unicorn(Ruby)、GlassFish(Java)
トランザクションモニター(TPモニタ) Tuxedo、OpenTP1、TPBASE
EAI DataSpider、BizTalk Server

組込み開発におけるミドルウェア

組込み開発におけるミドルウェアも、OSとアプリケーションの中間で動作します。組込み開発におけるミドルウェアは、RTOSにない上位の機能を実現したものが多いです。また、通常はRTOS上で動作します。

ミドルウェアを使用する際、自社で開発することもあれば、ミドルウェアベンダーが提供しているものを使用することもあります。

組込み機器におけるミドルウェアは、一般的にソースコードで提供されます。ミドルウェアが前提とするハードウェア構成やRTOSの環境が、評価対象の構成と異なる場合があります。その場合、ソースコードを対象の環境へと移植(ポーティング)する必要があります。

ポイント
  • 組込みシステムにおけるミドルウェアは、RTOSにない機能を実現する
  • ミドルウェアのハード構成やRTOSの環境が評価対象の構成と異なる場合、移植(ポーティング)が必要

組込み開発におけるミドルウェアの代表例

組込み機器におけるミドルウェアの代表例は、以下の通りです。

  • 通信プロトコル(TCP/IP, USB, BlueToothなど)
  • ユーザーインターフェース
  • ファイルシステム
  • 画像認識・音声認識
  • 数学ライブラリ
  • 日本語処理

弊社製品「μNet3(マイクロネットキューブ)」のご紹介

少ないメモリリソースで動作するコンパクトタイプのTCP/IPスタック「μNet3(マイクロネットキューブ)」

μNet3は、組込みシステム向けのミドルウェアです。弊社製品RTOS「μC3」上で動作するTCP/IPスタックです。

TCP/IPスタックとは(読み方:ティーシーピーアイピースタック)
TCP/IPスタックとは、TCP/IP通信のプロトコルに関するプログラムをまとめて一つとしたプログラム群・モジュールのこと。

IPv4、ICMP、IGMP、ARP、TCP、UDP、FTP、HTTPd、DHCP、DNSのプロトコルをサポートし、オプションでIPv6、PPP、SSL、MQTTなどのプロトコルを用意しています。シンプルな専用APIを採用しており、ネットワークプログラミングの初心者でも容易に導入できます。

多くのミドルウェアは、RTOSの環境やハードウェアに合わせて、移植(ポーティング)する必要があります。

μNet3は、μC3に対応しているため、RTOSに合わせた移植が必要ありません。また、μC3は豊富なCPUに対応しているため、CPU間の移植も必要ありません。

これらの移植工程を省くことで、μNet3を購入後、すぐに利用できます。

更にμNet3は、バイナリだけではなく、ソースコードの提供も行っています。このため、デバイスドライバを独自で開発したい場合、一部のソースコードを書き換えるだけで簡単に利用できます。

わずか12KBのコンパクトなTCP/IP
μNet3は、最小12KBで動作します。マイコンの内蔵メモリでも動作するよう、軽量に設計されています。
20種類もの豊富なプロトコルサポート
最大20種類の豊富なプロトコルサポートを行っています。新たにプロトコル対応にかかる開発工数を省き、コストを低減します。
GUIコンフィギュレーターで簡単立ち上げ
ネットワーク初心者でも簡単にスタート
OpenAMP仕様を採用
Multicore Associationによって標準化されたOpenAMPの仕様に対応しています。
WiFi対応
2.4Ghz, 5Ghzに対応した無線LANモジュールで利用可能です。
産業系ネットワークに対応
PROFINETやEthernet/IPの実装が可能

コンパクトタイプのFATファイルシステム「μC3-FileSystem(マイクロシーキューブファイルシステム)」

μC3-FileSystemはμC3上にFAT16/FAT32/exFATのファイル操作の関数を提供するミドルウェアです。弊社製品RTOS「μC3」上で動作するファイルシステムです。

ファイルシステムとは
ファイルシステムとは、ファイルの管理を容易にするシステムのこと。FATファイルシステムは、マイクロソフトが開発した規格であるFAT(File Allocation Table)を採用したファイルシステム。FATとは、ディスク内のファイルの位置を記録したテーブルのこと。

ANSIのC言語標準ライブラリに加えてディレクトリの読み出しや空き容量の取得などの有用な関数を追加しています。

  • FAT16/FAT32/exFATに対応。パソコンとのデータ交換に最適
  • C言語の標準ライブラリと同じ名前の関数で理解しやすい
  • POSIXライクなファイル操作の関数も使用可能
  • 各種マイコン用のSDカードドライバをオプションで用意