マイクロカーネル
必要最小限の中核部分(マイクロカーネル)と、それに追加する拡張部分とを分離するアーキテクチャパターン。拡張部分を差し替えたり足したりすることで、変更の要求に柔軟に対応できる。
イマシルちゃんの解説
スマホを思い浮かべてみて。
本体には電話やカメラみたいな基本の機能だけが入っていて、あとはアプリを入れて機能を増やしていくよね。
マイクロカーネルは、そんな「小さな本体+あとから足せる拡張」という作り方なんだ。
本体をいじらずに機能を増やせるから、変更に強いんだよ!
より深い解説
定義
マイクロカーネルは、POSAで紹介されたアーキテクチャパターンの1つで、システムの中核部分と拡張部分を分離する。中核部分(マイクロカーネル)には、どの使い方でも必要な最小限の機能だけを置き、それ以外の機能は拡張部分として追加する。
構成要素
| 要素 | 役割 |
|---|---|
| マイクロカーネル | 最小限の基本機能と、拡張部分どうしをつなぐ仕組みを提供する |
| 内部サーバ | マイクロカーネルの機能を補う、追加の中核的な機能 |
| 外部サーバ | 利用者や用途に合わせた機能を提供する |
| アダプタ | クライアントと外部サーバの間をつなぐ |
利点と欠点
| 利点 | 欠点 |
|---|---|
| 中核を変えずに機能を追加、変更できる(拡張性) | 部品の間のやり取りが増えるので、性能が落ちやすい |
| 用途ごとに必要な機能だけを組み合わせられる | 中核部分の設計が難しい |
例
- オペレーティングシステム:カーネルにはプロセスの管理など最小限の機能だけを置き、ファイルシステムやデバイスドライバを、カーネルの外で動かす(マイクロカーネル方式のOS)
- プラグインの仕組み:統合開発環境やWebブラウザの拡張機能のように、本体にプラグインを追加して機能を増やす
POSAのほかのパターンとの見分け方
| パターン | キーワード |
|---|---|
| マイクロカーネル | 中核部分と拡張部分の分離、拡張性 |
| パイプとフィルタ | データストリーム、段階的な処理 |
| MVC | GUI、データ・表示・入力の3つに分ける |
| ブローカー | 分散環境、サービスの登録と検索、仲介 |