この記事は、Delphi開発者のFabrice Deprez氏の投稿です。彼は、Dedalusのベルギー支社でソフトウェアアーキテクトを務めています。 記事では、Delphi言語とそのランタイムライブラリの明快さと安定性がどのようにクロスプラットフォーム開発を強化し、少しのミスが患者の生命に直結する複雑な麻酔管理の分野に適用されているのかを語っています。
Table of Contents
Delphiとの出会い
私は、Embarcadero RAD StudioとDelphiの初期バージョンの頃からのユーザーで、もう手放せないツールです。1992年に高校でPascalを学び始めました。その頃は、Borland Pascal の初期バージョンでしたが、それがDelphiのファーストバージョンとなり、Visual C++やVisual Basicに代わる、独自のRAD技術を使用してWindowsデスクトップアプリケーションの可能性を広げたときです。私はその言語とツールに惚れ込んで、それ以来愛用し続けています。
ツールはテクノロジーの進化に都度適応し、Linux上でのKylix、RAD PHPを経て、現在では、FireMonkeyにより、Windows 8/10/11、macOS、Android、Linuxなど数多くのプラットフォーム向けの開発を実現しています。このツールとその進化に対する信頼は揺るぎません。
Pascal言語の特性により、Delphiは他のC言語ベースのツールでは見ることのできない、可読性の高い開発を実現しています。私は、常に最新のソフトウェア開発技術をキャッチアップしているため、Java、JavaScript、PHP、Angular、React、Python、C#、C++、LUA、WLanguageなど、数多くのプログラミング言語に取り組んできました。しかし、Delphi は今でもベストチョイスです。特別なランタイムフレームワークを必要とせず、100%スタンドアロンバイナリを生成できるのは魅力です。
日々の業務
私は医療アプリケーション開発を行っている巨大グループ企業Dedalusで働いており、Delphiを使用してバイオメディカルのデバイスと通信し、患者のバイタルの収集、処理を行って、その波形を取得して、アラートの発行を行うといった処理を記述しています。
Dedalusグループは、国際的なチーム構成で、非常に多くの人が働いています。
Dedalusは、多くの病院インフラ、研究所、研究などに関与しています。元来は、さまざまな分野に特化した複数エンティティによって構成されるグループで、それぞれの研究分野における多様な技術とアプリケーションを専門としていました。
Delphiの適用範囲
私が所属していた会社は麻酔を専門としており、Dedalusグループに買収されました。現在、私たちは子会社であるDedalus Healthcare BVの一員です。私たちはずっとDelphiを使用してきており、Delphi 7とParadoxをBDE経由で使用したのが最初です。その後すぐにSQL ServerとOracleに移行しています。当時、コンピューター化された麻酔シートは画期的でした。重要なパラメーターをリアルタイムでプロットする独自のチャートコンポーネント ライブラリを開発していたからです。Delphiは、キャンバス処理でGPU機能を使用するようにチューニングされていました。
このエルゴノミクスは麻酔科医にすぐに評価されました。患者に接続されたすべてのバイオメディカルデバイスからのデータを、完全に1つの画面で表示できるようにし、イベント、投薬、注射の実施、手順レポート、請求書を作成し、情報を患者ファイルに送信できるようになったのです。
なぜこうしたアプリケーション開発にDelphiが最適だったのか
それだけにとどまらず、デバイス、モニター、人工呼吸器、C.E.C. コンソール、シリンジポンプ、血液透析装置などのバイタルパラメータを収集することも要求されました。これは、通信プロトコルが異なるさまざまなメーカーの機器に対応しなければなりませんでした。そのため、これらのデバイスとの通信ツールを開発したのです。これは、BPLパッケージ(Delphiが提供する革新的な機能のひとつです)により、実際に動的にロードされた時点で、ドライバのロードが行われるというものでした。
ハードウェアとの通信は、極めて簡単に実装できました。Delphi には制限がなく、COMポート、USBポート、RJ45ポート、 http、TCP、UDPなどのさまざまなプロトコルとの通信に何の問題もありませんでした。完全に独立した実行可能ファイル(パッケージを含む)を提供することで、メンテナンスも容易になりました。フレームワークの互換性などの問題は発生しません。
カスタムハードウェアの開発
また、バイオメディカルデバイスのドライバ情報を含む小さな電子カードを備えたUSBケーブルも開発しました。これにより、プラグ&プレイ接続が可能になりました。このケーブルは、Phil Design Studioというデザイナー企業 によって作成されており、医療用樹脂を用いて飛散防止を実現しています。私たちは、Delphiとの包括的な通信プロセスの開発を達成したのです。
Delphiを使えば何でも開発することができます。うまく活用すれば、そのコンパイラは世界で最も高速なコンパイラの1つなのです。
使用したデータベース
その後、独自のORマッピング機能を開発・統合し、さまざまなデータベースに接続できるようにしました。もちろんそれもDelphiで実装できるからです。Oracle、SQL Server、MySQL、SQLite、PostgreSQLなどに、ADOコンポーネントレイヤーを使用して接続しました。その後、FireDACを使用するように変更しています。
私たちは長い間、Delphi 2006を使用していました。 Delphiはかなり安定した完全なツールなので、特定のバージョンでも、長期間にわたってそのツール使って市場にソフトウェアを供給し続けることができるためです。その後、XE2、XE4、そして最終的にRAD Studio 11に切り替えています。これは、第一にネットワークコンポーネントでのSSL証明書の機能が変更されたためです。例えば、さまざまな通信プロトコル(http、ftpなど)をサポートするIndyなどにおいてです。
クロスプラットフォームアプリの開発
次に、行ったのはdxSMA(Smart Mobile Assistant)の開発です。これは、看護師の回診中に患者のベッドサイドでバイタルパラメータの収集を可能にするアプリケーションです。私がDelphi XE4のFMXを用いて開発したアプリケーションは、生物医学測定デバイス(血圧、飽和度、心拍数など)が設置された台車に取り付けられたタッチ操作対応の医療用タブレットで使用します。医療スタッフは、RFIDバッジ、認証(ログイン/パス)、または顔認識によって個人識別が可能で、患者はブレスレットのスキャンによって識別されます。
パラメータの収集は、当社の通信ツール(Delphiによって開発)を介して行われました。認証が完了すると情報は失なわれることなく、そのデータは、一定間隔で自動的に、あるいは介護者の制御によって手動で、患者ファイルに送信されます。
集中治療や患者蘇生で活躍するDelphi
そしてすぐに、病室から集中治療室と蘇生室へと開発の対象は移ります。そこではデータが集中管理され、その情報は、主にHL7プロトコルを介して送信されるゲートウェイによって収集されています。次に、開発したのはDxCentraleです。これは、ADMと同じことを行うのですが、複数のベッドに対して連続的に10秒ごとでフルサービスを提供しています。DxCentraleは、あらゆる方向に実に多くのコントロールを備えたマルチスレッドアプリケーションなのです。これもすべて、Delphi(XE4+FMX)で作成されています。
Dedalusグループになったことでの変化
ソリューションとテクノロジーの均質化を目指すグローバルグループの一員となったことで、私たちのアプリケーションは、マイクロサービスアーキテクチャへと変換する必要が生じたのです。これには、mORMotフレームワークを選択しましたが、RAD Serverも有効なソリューションでした。ただ、いくつかの古いDelphiバージョンのコードがまだ残っています。こうしたアーキテクチャの変化により、私たちのアプリケーションはバックエンドに置かれ、フロントエンドはAngular、React、Pythonで開発されるようになりました。しかし、Delphi はこれらの他のテクノロジーとも適合し、通信にも問題はありません。私は実際、このテーマで最初の書籍『Delphi & mORMot, the Full-stack Developer’s Guide』を執筆しています。
現在、API、Webソケット、マイクロサービス、レポート生成、すべての既存データベースへの接続、モバイルアプリケーションの作成などを、LinuxやmacOS など、Windows以外のOSでも行っています。
この開発ツールに限界はないようです。
他のエンタープライズ開発者へのメッセージ
私は、このテーマで、mORMotフレームワークを利用する例を紹介する書籍を執筆することに、いくらかの時間没頭してきました。
私は、信じられないほどの進化を続け、劇的な開発時間の削減を可能にしてくれるこの言語とRADツールに惚れ込んでいます。称賛の言葉以外、考えられませんね。
この記事は、Enterprise Article Showcaseへ投稿されたものです。RAD Studio、Delphi、C++Builderと関連技術を用いて構築した開発プロジェクトの成功事例をお持ちの方は、ぜひご連絡ください。詳細はこちらをご覧ください。