ミドルウェア: Middleware)は、コンピュータの分野で、コンピュータの基本的な制御を行うオペレーティングシステム(OS)と、各業務処理を行うアプリケーションソフトウェアとの中間に入るソフトウェアのこと。

通常はオペレーティングシステムの機能の拡張、あるいはアプリケーションソフトウェアの汎用的(共通的)な機能を集めたものである。アプリケーションソフトウェアはミドルウェアに要求を出すと、ミドルウェアがオペレーティングシステムに必要な要求を出し、結果をアプリケーションソフトウェアに返す。あるいはミドルウェア自体が各アプリケーションソフトウェアの起動・停止・監視などを含めた制御を行う。

代表的なミドルウェアには、データベース管理システム(DBMS)やトランザクションモニターなどがある。

また別の意味として、Django、Laravel、ASP.NET CoreなどWebフレームワークの一部において、HttpリクエストからControllerに至るまで、およびControllerからHttpレスポンスを返すまでの共通処理を層状に追加する概念である。

概要

編集

アプリケーションプログラムが動作するにあたり、ネットワーク上の他サーバデータベースとのやり取りなど、普遍的で面倒な手続きを要するものがある。これらとのやり取りの手順や管理をその種別単位にまとめ、ひとつの機能管理パッケージソフトウェアとしてまとめたものがミドルウェアである。

企業システムや社会インフラシステムなどのエンタープライズ領域のシステム構築では、分散されたソフトウェアやアプリケーションソフトウェア間のデータのやり取りなどを司る。ミドルウェアとしては、それぞれの管理分野の専用ソフトウェアが用いられる事が多い。

カスタマイズの幅も大きく、それぞれのシステム特性に合わせた最適化設定が必要となっている。

最近のシステム構築においては、オペレーティングシステムとこのミドルウェアをシステムプラットフォーム(またはシステム基盤と呼ぶ)としてひとつの管理単位として定義し、専用のエンジニア/ITコンサルタントに設計構築を依頼する事が多い。

歴史

編集

1960年代後半にはIMSなどのデータベース管理システムトランザクションモニターが登場した。これらは主にメインフレームミニコンピュータを中心に発達し、特に重要な基幹業務の性能・信頼性確保などのために使用された。

1990年代ダウンサイジングの潮流により分散システムを中心としたシステムが普及すると、ミドルウェアの使用も一般化した。特にUNIXWindowsなどのOSは標準ではごく単純なファイルシステムや管理権限設定しか持っていないことや、標準化の潮流もあり、ミドルウェアを併用したシステム構築が普及した。

ミドルウェアの区分と代表的なパッケージソフトウェア製品

編集
メッセージ通信基盤
サーバ間及びコンピュータ・クラスターのノード間の通信に使用され、アプリケーション側からはその手順の複雑さや制御が見えないようにラッピングするための共通機能を提供する。
統合運用管理
システム内のサーバやネットワークの監視、バッチ処理のスケジューリング、資源配布等を統合して行える機能を提供する。
高可用クラスタ
クラスターに参加しているノードの管理やサービスアプリケーション及びミドルウェアサービスを監視し、障害や異常停止が発生した場合に、他ノードに自動的に切り替え、サービスの継続を図る共通機能を提供する。
データベース管理システム
システムの固有データや管理情報などを統括的に管理し、検索サービスを提供する。
Webサーバ
クライアントからのHTTP要求を解釈し、HTMLコンテンツを応答したり、他のサーバーサイドスクリプトを呼び出したりする。
アプリケーションサーバ
アプリケーションが動作するサービスを管理し、提供する。
トランザクションモニター
TCP/IPやその上で動作するHTTPによる通信トランザクションと業務処理要求である処理トランザクションとの関係を把握し、管理する共通機能をサポートする。
データ連携, EAI, BPM

組み込みシステムにおけるミドルウェア

編集

システムによって必要とされる機能が異なるため、より少ないリソースで動作させるために、OSの基本機能の他に機能ごとにオプションとなっている製品が商品化されている。

Webフレームワーク文脈におけるミドルウェア

編集

WebフレームワークがHttpリクエストを受け取り、個々の処理(MVCフレームワークであればController)に到達する前に共通処理を実現したい場合がある。これを実現する仕組みの内、以下の2点を備えるものをミドルウェアと呼ぶ。

・個々の処理に到達するまでと、個々の処理から返却する過程の両方で1対である

・ミドルウェア自身は層の概念であり、重ねることができる

似た概念としてフィルターと命名されることの多い概念があるが、フィルターの場合は個々の処理に到達するまでしか考慮されていないことが多い。

この呼称は少なくともDjango1.0[1]の時点で存在しており、Laravel5.0[2]、ASP.NET Core1.0[3]でも採用された。

また、近年ではSlackのbolt-js[4]内など、単に層状の中間処理機構の事をミドルウェアと命名しているケースも少なくない。

単なる、GoFデザインパターンにおけるDecoratorパターンあるいはProxyパターン状の構造もミドルウェアと呼ばれる場合があり、バズワード化が進んでいる。

出典

編集

関連項目

編集

📚 Artikel Terkait di Wikipedia

サービス指向アーキテクチャ

Fiorano SOA Platform レッドハット JBoss Enterprise SOA Platform サン・マイクロシステムズ Sun Java CAPS Oracle SOA Suite SOA using ESB based on executable UML ESB Mule(オープンソース)

WebAssembly

... A contraction of “WebAssembly”, not an acronym, hence not using all-caps." WebAssembly Specification Release 1.1 (Draft, Mar 12, 2021) 2021-03-26閲覧

PlayStation Vitaのシステムソフトウェア

[自動スタンバイ]に[10分後]を追加。 LiveAreaで新しいアクティビティがある場合、新着アクティビティーが表示。 文字入力時、ShiftボタンでCaps Lockが使えるようになった。 「Unit13」をプレイ中に音切れや画面が停止する症状を改善。 ゲームソフトの追加データのインストール時にゲージが表示されるようになった。

スタックマシン

Collins Radio のミニコンピュータ Collins Adaptive Processing System (CAPS, 1969) と Rockwell Collins の Advanced Architecture Microprocessor (AAMP, 1981)

Emacs

ユーザーは様々なアプローチでEmacs小指に対処してきた。ソフトウェア側の手段には以下のようなものがある: CapsLockキーをコントロールキーの代わりにするようにキーレイアウトをカスタマイズする。類似のテクニックにはCapsLockキーを追加のコントロールキーに定義したり、コントロールキーとメタキーを代わりにする

Mozilla Firefoxのバージョンの変遷

ファイルがの再生および pdf ファイルの表示を行うようになった capability.policy.* を利用してサイト特有の許可設定を行う CAPS が削除された。checkloaduri は唯一の例外として、以前と同様、file:// URL からのロードの許可のために利用できる 日本語ロケール:検索エンジンに

OLPC XO-1

から」だと言っている。OLPCがこのギャップを埋めるために行った具体例の1つとして、エチオピアのアムハラ語用のキーボードを作った。 ネグロポンテはCapsLockキーを持たないキーボードにするよう要求した。これによってキーが1つ空くので、それを将来 “view source”キーなどに利用したいという。

連環データ分析

Java32ビットへの対応問題 連環データ分析は64ビット対応のため、PCに32ビット版のJavaが存在すると起動しない問題が発生する。そのため、32ビット版のJavaを削除する必要がある。 Javaのバージョン対応問題 JRE(Java Runtime Environment)6以上、Java8までの対応となっている。