ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プラットフォーム、フレームワーク、ミドルウェア、ライブラリについて用語の意味の違いが分かりづらいのでメモしておきます。間違っていたらコメントで指摘してください。
ロボット界隈では「プラットフォームロボット」という用語を使いますが、これは新規機能の開発、追加が可能な基盤となるロボットのことを指します。
具体的にはRuby on Rails、OpenRestyなどが該当します。
ただ、ソフトウェアフレームワークはユーザーの作成したアプリケーションの機能をフレームワーク側のメインループから呼び出す「制御の反転」の構造になっている必要があります。
論文などでROSはフレームワークであると書いてあるものがありますが、これは厳密には間違いという事になります。
OpenRTM-aistやChoreonoidはフレームワークに該当します。
Lua VMがプラットフォーム、OpenRestyがフレームワークという事です。多分。
.NET Frameworkはフレームワークで、その実行環境のCLRがプラットフォームという事になります。
というか、ほとんどの場合はアプリケーション、OS以外のソフトウェアのことを指します。
具体的にはOpenCV、OpenGLなどが該当します。
Java VMやLua VM等のプログラミング言語の実行環境も該当します。
ただし、ミドルウェアはその名の通りOSとアプリケーションの中間に位置するソフトウェアのため、OSが無い環境のライブラリはミドルウェアには該当しません。例えばArduino用のライブラリはミドルウェアではありません。
フレームワークの場合はフレームワークが主となりますが、ライブラリはアプリケーションに機能を提供するだけのため、アプリケーションが主になります。
適当にソフトウェアを分類すると以下のような感じだろう。
所々どこに分類すればいいのか分からないものもあります。
まずOpenRTM-aistはスタンドアロンRTCとして起動すればライブラリ、RTCDで起動すればフレームワークに該当しそうなので仕分けが難しいです。
これがLove2Dのようにアプリケーションのみの提供であればライブラリには該当しません。
QtはQt Creatorを使えばフォームに追加したウィジェットから直接スロット関数をいじることでフレームワーク的な使い方ができるので、フレームワークでもあると言えます。
Luaは単体で実行したらただのプラットフォーム、組み込んで実行すればミドルウェアでもあるということになります。組み込む側からすればライブラリのようにも見えます。
というわけでライブラリ、フレームワーク、プラットフォームを図で表すと以下のような感じになりますが、プラットフォームの定義がよく分からないので間違っているかもしれません。
- プラットフォーム
ロボット界隈では「プラットフォームロボット」という用語を使いますが、これは新規機能の開発、追加が可能な基盤となるロボットのことを指します。
- フレームワーク
具体的にはRuby on Rails、OpenRestyなどが該当します。
ただ、ソフトウェアフレームワークはユーザーの作成したアプリケーションの機能をフレームワーク側のメインループから呼び出す「制御の反転」の構造になっている必要があります。
論文などでROSはフレームワークであると書いてあるものがありますが、これは厳密には間違いという事になります。
OpenRTM-aistやChoreonoidはフレームワークに該当します。
Lua VMがプラットフォーム、OpenRestyがフレームワークという事です。多分。
.NET Frameworkはフレームワークで、その実行環境のCLRがプラットフォームという事になります。
- ミドルウェア
というか、ほとんどの場合はアプリケーション、OS以外のソフトウェアのことを指します。
具体的にはOpenCV、OpenGLなどが該当します。
Java VMやLua VM等のプログラミング言語の実行環境も該当します。
ただし、ミドルウェアはその名の通りOSとアプリケーションの中間に位置するソフトウェアのため、OSが無い環境のライブラリはミドルウェアには該当しません。例えばArduino用のライブラリはミドルウェアではありません。
- ライブラリ
フレームワークの場合はフレームワークが主となりますが、ライブラリはアプリケーションに機能を提供するだけのため、アプリケーションが主になります。
適当にソフトウェアを分類すると以下のような感じだろう。
ソフトウェアの分類 | プラットフォーム | フレームワーク | ミドルウェア | ライブラリ |
OpenRTM-aist | 〇 | 〇 | △ | |
omniORB | 〇 | 〇 | ||
Qt | △ | 〇 | 〇 | |
ROS | 〇 | 〇 | ||
Choreonoid | 〇 | |||
ODE | 〇 | 〇 | ||
OpenCV | 〇 | 〇 | ||
Lua VM | 〇 | 〇 | △ | |
VMWare | 〇 |
まずOpenRTM-aistはスタンドアロンRTCとして起動すればライブラリ、RTCDで起動すればフレームワークに該当しそうなので仕分けが難しいです。
これがLove2Dのようにアプリケーションのみの提供であればライブラリには該当しません。
QtはQt Creatorを使えばフォームに追加したウィジェットから直接スロット関数をいじることでフレームワーク的な使い方ができるので、フレームワークでもあると言えます。
Luaは単体で実行したらただのプラットフォーム、組み込んで実行すればミドルウェアでもあるということになります。組み込む側からすればライブラリのようにも見えます。
というわけでライブラリ、フレームワーク、プラットフォームを図で表すと以下のような感じになりますが、プラットフォームの定義がよく分からないので間違っているかもしれません。
PR
この記事にコメントする