- 2024.05.08
-
- Qt
オンライン資格確認対応顔認証付きカードリーダー「マイナタッチ」の開発
当社が開発・提供する「Sma-pa マイナタッチ」(以下、マイナタッチ)は、マイナンバーカードと健康保険証のどちらでもオンライン資格確認(※1)ができる顔認証付きカードリーダーです。当社ではマイナタッチのフロントエンドのUI(ユーザインターフェース)とUX(ユーザ体験)開発に、クロス・プラットフォーム・アプリケーション・フレームワークの「Qt」(キュート)を活用しました。それにより、開発コストと開発時間を大幅に削減するとともに、開発効率とメンテナンス性の向上、さらには高い開発品質も実現しました。今回はそのQtを活用するに至った経緯と導入の効果についてご紹介します。
※1:マイナンバーカードのICチップまたは健康保険証の記号番号等により、オンラインで資格情報の確認を行うこと。
開発言語の乱立で人材リソースの最適配置が困難になり開発環境の整理に着手
患者さんの医療情報を有効に活用し、安心・安全でより良い医療提供を行うための医療DXの基盤となるオンライン資格確認の導入が2023年4月から原則義務化されました。その準備段階で、当社は顔認証付きカードリーダーの開発に参入してマイナタッチを開発。TVや雑誌、Webニュースなどのメディアに度々取り上げられ、大きな話題となっています。
マイナタッチは、マイナンバーカードの顔写真データをICチップから読み取り、本機搭載のカメラで撮影した本人の顔画像と照合して、本人確認を高精度で行う顔認証機能が最大の特徴となっています。また、独自機能としてオンライン資格確認を行った後に、紙の公費医療券(※2)や各種保険証の読み取りを行えるほか、それらの画像データの保存(※3)、8インチの大画面とわかりやすい画面設計、2.5D赤外線カメラ(※4)によるなりすまし防止など、他社製品に比べて数多くの優位性を持つ注目のモデルとなっています。
※2:「子ども医療費受給者証」「ひとり親家庭等医療証」「心身障害者医療費受給資格証」の読み取りに対応。
※3:レセプトコンピューター・電子カルテシステム側の対応が必要です。
※4:赤外線により立体検知を行います。これにより、スマホや写真をカメラにかざして顔認証を行おうとしても、平面である事から顔認証を実行せず、なりすましや不正利用を防止します。
マイナタッチの開発において特に重視したのは、
1)OCR(光学的文字認識機能)の読み取りを高精度にすること
2)顔認証を迅速かつ高確度に行えること
3)高齢者にも見やすく分かりやすい画面設計にすること
の3つでした。
マイナンバーカードは複雑な模様の下地に細字の明朝体で文字が表記されており、券面を正確に読み取るには高度な技術が必要です。そこで当社はAIを使った独自のOCRエンジンを開発しました。幾度もチューニングを重ね、最適化を行った結果、マイナタッチのエラー率は数%程度に収まり、より優れた読み取り精度とスピードを実現できるようになりました。
また、AIやOCRエンジン、顔認証エンジンをハイスピードで動かすために、当社ではOSにDebian Linux(※5)を選択。そのDebian Linuxをベースに各種機能を効率的に開発することを優先したのが開発環境の統一化でした。理由としては、50年以上数多くのシステムを開発する過程で社内に開発言語が乱立し、近年では製品ごとに開発言語が異なるほどの状況になっていたからです。
※5:安定性と自由なソフトウェアを原則としたオープンソースのLinuxディストリビューションのひとつ。
開発言語が無秩序に増えたことで属人化が進み、人材リソースの最適配置ができなくなるなどの課題がありました。
開発効率を上げるためには開発環境のモダン化とリファクタリング(整理)が必要です。そこで、マイナタッチのUI・UX開発にQtを活用し、成功実績を積むことで徐々に使用する言語を統一しようと考えました。
マルチプラットフォーム対応の柔軟性とタスク分散化による開発の迅速化でQtを選択
マイナタッチのUI・UX開発にQtを採用した理由は主に3つありました。 第1はマルチデバイス・マルチプラットフォームに対応した柔軟性です。Qtは単独のソースコードでWindowsはもちろん、Linuxの組み込み系デバイスなど様々なプラットフォーム上で稼働するアプリケーション開発が可能な点に優位性があったのです。また、マイナタッチはARMプロセッサを採用しているため、ARMにも対応するQtが望ましかったという側面もありました。
第2はタスク分散化による開発の迅速化です。マイナタッチの開発では、QML(Qt Modeling Language;JavaScriptをベースとした宣言型言語)でフロントエンドのUI・UXを、C++でバックエンドを、Go言語でビジネスロジックを開発するなど、3方面が同時並行で共同作業しながら進めることにしました。そうすることで開発速度を高めることが期待できるからです。また同時に、開発環境をQtに集約することでアーキテクチャをドキュメントに残しやすくし、特定の開発者に知見が偏在しない属人化を防ぐことも目指しました。
第3はマイナタッチとの相性の良さです。マイナタッチの顔認証機能はC++で開発されているため、C++と相性の良いQtを利用するのが最も効率的だと考えました。また、Qtはグラフィックの描画速度や画面切り替えのレスポンスが優れるほか、OpenGL(Open Graphics Library;2D及び3Dのグラフィックスを描画するための機能を提供するライブラリ)に対応し、レンダリングのスピードが圧倒的に速い点も評価しました。
QML活用で効率的な開発が可能になりコスト・時間の短縮と開発品質性向上も実現
マイナタッチは2021年3月から提供が開始され、全国の病院、診療所、薬局などで広く活用されています。マイナタッチ開発においてQtを活用したメリットは、主に以下の4つの効果が挙げられます。
1、学習時間の短縮
Qtは全ての機能を把握しなくても、QMLの基本部分だけ学習すればアプリを開発できるのが特徴です。以前は新人エンジニアが開発に参加できるようになるまで数ヶ月~数年もかかっていましたが、Qt導入後は早ければ3週間ほどで開発できるようになっています。
2、開発コストと時間の削減
マイナタッチの初期モデルの画面デザインは、現行機種と全く異なるものでした。様々な要求に応じる過程でデザイン変更を繰り返すことになりましたが、ボタンの配置や、大きさ、デザイン、画像などもQMLによって全て効率よく、かつ短期間でのブラッシュアップが可能になりました。Qtでローコストな開発が可能と証明されたため、今後はデザイナーにもQMLを活用してもらい更なる効率化を目指す考えです。
3、開発効率とメンテナンス性の向上
当社には、歴史的に異なる言語で開発され、20数年にわたりメンテナンスをしているシステムが現在でも複数存在します。そのため、高機能なフレームワークによりソースコードの行数を減らして可読性を向上させるとともに、フレームワークのメジャーバージョンアップにおいてマイグレーションのコストを低減させることも重要でした。Qtでは、QMLを用いることによってUI部のソースコード行数を抑えることができるため、改修箇所の特定が容易になり、僅かな時間でマイナタッチのカスタマイズが完了できるようになりました。また、近年のQtはマイグレーションがしやすく進化しているので、将来的に次機種の開発でQtのメジャーバージョンアップを行うことになっても不安はないと考えています。
4、高い開発品質の実現
好評をいただいているマイナタッチは、既に全国へ数万台規模で出荷されており、開発工数よりテスト時間が数倍多くなっている状況です。そうした中でもQtを活用することでテストにより多くの時間を充てられるようになり、品質の維持・向上が可能になりました。また、Qtによる開発ではほとんどエラーが出ないことも最大のメリットのひとつだと捉えています。
5、開発へのモチベーションアップ
Qtを統合開発環境にしたことで、エンジニアのプログラミングに対する抵抗感が少なくなり、すぐに実際の製品開発に関われるようになるため、開発に面白さを感じるエンジニアが増えた印象です。マイナタッチ開発においてQtが使われた実績が、既存のQtエンジニアやQtに興味を抱く若い技術者への新たな動機付けやモチベーションアップにつながってくれることを強く期待しています。
今後当社では、マイナタッチに加えてこれからリリースされる予定の新しいKIOSK端末や新製品のUI・UX開発にも全てQtを活用し、開発環境の統一化をさらに進めて開発リソースの最適化と有効活用を目指します。