2020-04-09

Raspberry Pi3を使ったリアル波形描画(10) アーキテクチャの設計思想について(2)

本特集記事の「Raspberry Pi3を使ったリアル波形描画」を実現するにあたり、採用したアーキテクチャの設計思想を説明しようと思う。前回は、全体のシステムの中の入力部分の説明をした。

今回は、このシステムの重要な要素(=商品価値=コアコンピタンスとなりうる部分)の説明をする。

アイテム構成にうち、他社に真似できない商品価値となる部分(コアコンピタンス)のソフトウェアを再利用可能な資産にすることができれば、商品の価値となるソフトウェアアイテムをベースに派生製品を作ることができる。それらの商品群は個々の商品の競合力が高く、かつ、商品群としても強く、さらに、効率よく派生開発が可能となる。

コア資産部分がUIやI/Fに依存していなければ、コア資産をベースにさまざまなI/FやUIを持った派生製品を作ることができる。汎用I/Fや、UIは時代とともにどんどん代わっていくので、それらに対応していき、コア資産の実力をじっくりと高めていけば、商品群は競争力を高いまま維持することができるはずだ。

コア資産が他社の追随を許さない性能を持っている、または特許で知財が保護されていれば、競合しても勝つことができるし、仮に営業力で負けても、長いこと使っていればユーザのその性能の差に気が付き、戻ってくるだろう。

本システムは、基本的には、心電図を入力し、デジタルフィルタで波形を整えて、心電図のQRS(ピンと上に跳ねる部分)を検出して、心拍数を算出し、その結果や波形や付帯情報をディスプレイに表示します。

先の一番下のレイヤーがデータソースレイヤーで心電図の入力部、真ん中がドメインレイヤーで、デジタルフィルタや心拍数計測部、一番上がプレゼンテーションレイヤーで結果を表示する部分です。

今回は、重要な不整脈の解析などは入れていませんが、それがあればドメインレイヤーに含まれ、解析性能が良ければコアコンピタンスになります。

ちなみに、デジタルフィルターやQRS検出の部分も、それなりにノウハウがあるはずなので、コアコンピタンスになります。

左記の緑のクラスがそれに相当します。

EcgAcLineNoiseFilter クラスは、心電図に重畳する50Hzや60Hzの電源ノイズを除去するフィルターで、EcgDriftFreeFilter クラスは、呼吸やその他の基線変動要因を取り除き、心電図を見やすくし、心拍数計測の精度を高めるために必要なアイテムです。
EcgHighCutFilter はアナログフィルターで取り除いてもなお、残っている40Hzより高域のノイズ成分を取り除くフィルターとなります。QrsDetectorTypeTest1 クラスは、心電図のQRSを検出するためのクラスで、このシステムの中ではもっとも複雑性が高く、システムの性能に寄与するアイテムです。TypeTest1としているのは、QRS検出のソフトウェアは試行錯誤しながら精度を高めていくことが多く、1回で完成することはなく、いろいろな試行を繰り返すことになるからです。

このクラス図では、派生クラスにしていませんが、インタフェースを共通にしておいて派生させていろいろなタイプを作って差し替えながら、性能を検証していくのがよいと思います。

また、デジタルフィルタについても、一度固まってしまえば変更することはあまりないと思いますが、こちらもベースクラスから派生させておいて、後々差し替えられるようにするのもよいと思います。

実際、デジタルフィルタは C言語で数行で表現できてしまうケースもあるため、技術者研修ではわざわざクラスに分けたり、派生させたりしないことが多いようですが、商品としてまた、コアコンピタンスとしてデジタルフィルタを位置づけるのであれば、ソフトウェア資産として独立させて、再利用することに意味があります。

そのソフトウェアシステムのうち、競争力を生み出すコア資産が何か、そのコア資産が再利用しやすくできているか、そこができているかどうかが、競争力の高い商品でかつ、効率のよい開発ができるかどうかの分岐点になります。

詳しくは、『リアルタイムOSから出発して 組込みソフトエンジニアを極める[改装版]』の第三章をお読みください。

0 件のコメント: