今回のEnterprise Article Challengeの記事は、C++Builderの事例です。C++アプリ開発者のCourant氏は、SAMD(Software As A Medical Device)と呼ばれる医療機器向けソフトウェアの開発経験を紹介します。それは、これまでまったく聞いたことがなかった分野のことであると認めなければなりませんが、非常に特別な分野におけるストーリーは興味深いものでした。このアプリ「Eatsofree」は、文字通り、口に食べ物を入れ、食べることができないほど衰弱している人々の体験を改善するのに役立つものです。食べることは必要不可欠な日常であり、誰もがそれを当然のことだと思っています。それゆえ、食べ物があるのにそれを消費できない人がいるかもしれないということを、私たちは想像できないのかもしれません。
Table of Contents
エンタープライズ プロジェクトの出発点
私の研究室は、台湾のバイオテクノロジー企業から委託を受け、その製品の 1 つである医療補助機器に接続できるソフトウェア システムの開発を検討していました。この医療補助機器は、米国 FDA によって低リスクのクラス I 医療機器であるとみなされており、こうしたソフトウェア システムは、SAMD(Software As A Medical Device)と呼ばれ、最近の医療テクノロジー業界で最も活発な領域であると言えます。幸いなことに、台湾ではこのような補助機器は医療機器とはみなされておらず、ISO 13485の設計/開発管理プロセスや IEC 62304の医療ソフトウェア検証に準拠させる必要はありません。これは、開発における大幅な負担軽減となります。
多くの規制を回避
このソフトウェアは台湾では医療機器製品とみなされないため、開発に多額の費用を投資することはありません。実際、最小限の予算で最も強力な製品を開発することは、クライアントの最大の目的となります。彼らは、Bluetooth 経由で自社製品のいずれかに接続し、製品から生成される信号を収集し、個人の健康管理システムと同様にクラウド データベースにアップロードできる、クロスプラットフォームのモバイルアプリ(Android と iPhone の双方に対応)を開発してほしいと考えていました。つまり、このプロジェクトには、スマートフォンアプリの開発、セミウェアラブルデバイス(医療支援機器)、センサー(支援機器に組み込まれた加速度センサー)、無線伝送(Bluetoothモジュール)、クラウドプラットフォーム、Webなどのテクノロジーがすべて関係しています。
使用した開発技術
私たちが必要とした開発チームの構成は、次のようなものでした。Java または Kolin プログラマー、Swift プログラマー (または前者の 2 人に代わる React Native または Flutter プログラマー)、バックエンド SQL DBA、AWS、GCP、またはAzure クラウド プラットフォーム アーキテクト、jQuery、Bootstrap、Node.js、React、Vue.js などに精通したフロントエンド プログラマー。この医療機器向けのクロスプラットフォームのフルスタック ソフトウェアを開発するには、これだけの人員が必要でした。それだけでなく、ソフトウェアが複数の施設における臨床試験に適用される場合には、デジタル信号処理、スペクトル解析、振動解析、神経学分野のノウハウも考慮しなければなりませんでした。これに対し、予算は 70,000 ドル未満だったため、自身でこれらのタスクを完了させることにしたのです。
対象の医療ハードウェア
今回対象となる医療補助機器は振動抑制スプーンと呼ばれるもので、その開発コード名は「Eatsofree」で、「食事を自由にできる」という意味になります。本態性振戦、パーキンソン病、糖尿病、脳卒中などの患者は、無意識のうちに手の振動が制御不能になる可能性があり、食事が困難になります。食事中、スプーンを持って食べ物をすくっても、手が震えてしまって食べ物を正確に口に持って行けず、途中で落としてしまうという状況が分かるでしょうか。
パーキンソン病患者に貢献するスプーン
Eatsofree スプーンは、マイクロプロセッサ、小型モーター、加速度計、Bluetooth 無線送信機で構成されており、スマート ウォッチやフィットネストラッカー、リストバンドのようなウェアラブル デバイスと同じようなハイテク スプーンです。振戦患者が Eatsofree スプーンを使用して食べ物を食べているときに、制御不能な手の振動をスプーンが検出すると、内蔵モーターが駆動して力のフィードバックが与えられるため、食べ物が安定してスプーン内に留まり、患者は、食べ物を運びやすくなり、口にまで届けることができるのです。デジタルカメラに搭載された光学式手ぶれ補正機能に似ていますが、持続時間がはるかに長くなります。Google にはすでに Liftware と呼ばれる成熟した製品があります。
当社のクライアントは、同じ臨床上で解決されていないニーズに対応するため、異なる革新的なテクノロジーを使用し、特許申請を行っています。私たちの課題は、Eatsofree に接続して 90Hz のサンプリング レートでデータを受信し、後処理シーケンスの後にクラウド データベースにアップロードするスマートフォン向けアプリ(Android と iOS の双方のプラットフォームに対応)を作成することです。つまり、次の数値演算を数ミリ秒以内に完了する必要があります: 1. フーリエ変換、2. スペクトル解析、3. ノイズ低減、4. 逆フーリエ変換、5. 時間領域信号処理、6. 二重積分 / 微分。そして、React Native や Flutter ソリューションは考慮されないほどの効率性とスループットを実現する必要があり、それが可能なのはネイティブ コードだけであると考えました。
エンタープライズ プロジェクトにC++Builderを選択した理由
さて、私は学生時代に Turbo C を学んだのち、定位放射線手術の治療計画におけるニューラル ネットワーク機械学習の使用に関する修士論文を完成させ、博士号を取得しています。放射線手術における線量計ゲル内の第二鉄イオンの拡散現象に関する論文では、すべての開発をTurbo C、Borland C++、OWL、VCL、BDE、MIDAS、CORBA、SOAP Web サービスによって完成させています。C++Builder は私を決して失望させないツールです。そして、RAD Studio / C++Builder 11を使用してEatsofree アプリを開発すれば、一度記述したものを、どこでも実行させることができます。FireDACと DataSnapを使用することで、Eatsofree はローカルのSQLiteと、リモートのAzure SQL Serverにデータを保存することができます。Atozed IntraWebを使用して、クロスプラットフォームのフルスタック医療ソフトウェアを正常に完成させることができました。エンバカデロに感謝しています。
エンタープライズ ソフトウェア エクスペリエンスについての最終的な考え
私のそれほど長くないプログラミング経験とセミプログラマーとしての経験からすれば、開発テクノロジーが非常に複雑化し、インターネット上に非常に多くのフレームワークや開発ツールが存在する現在、スマートフォン向けクロスプラットフォーム アプリ、バックエンド データベース、クラウドアプリケーションからフロントエンド Web ページに至るまで、すべてをカバーするエンタープライズ ソフトウェアを完成させるのに、たった 1 つのプログラミング言語と 1 つの開発ツールで事足りるというのは、ほぼ不可能に近いことです。
RAD Studio を使用すれば、特に製品開発で数多くの喫緊の課題に直面している人でも、最短時間で最小のコストで開発を完了させることができます。あなたのプロジェクトが私のプロジェクトと似たような特徴を有しているなら、あなたのクライアントは、明確な要件を持っておらず毎週変更される可能性があり、さらに悪いことに、複雑なアルゴリズムや数学または物理上の定理が存在する問題を解決するための方法さえ明確に説明できません。限られた時間と CPU リソースで実装する必要さえあるのです。私は、迅速な POCプロトタイピング、検証と妥当性の確認に最適なソリューションとして、Embarcadero RAD Studio / C++Builder をお勧めします。
この記事は、Enterprise Article Showcaseへ投稿されたものです。RAD Studio、Delphi、C++Builderと関連技術を用いて構築した開発プロジェクトの成功事例をお持ちの方は、ぜひご連絡ください。詳細はこちらをご覧ください。