Qtブログ(日本語)

レガシーコードを最新の組み込みシステムに統合するためのベストプラクティス

作成者: Qt Group 日本オフィス|Dec 22, 2024 5:55:04 PM
本稿は「Best Practices for Integrating Legacy Code in Modern Embedded Systems」の抄訳です。
 

Qt GroupがForrester Consultingに委託した調査によると、回答者のほぼ半数(49%)が、新しいテクノロジーを統合しながらレガシーシステムの整合性を維持することが、プラットフォームエンジニアリングにおける大きな課題であると回答しています。

このブログでは、これらの課題に取り組むための戦略を探り、統合のためのベストプラクティスを共有し、今後起こり得る事態に備えるための手助けをします。

レガシーシステムにおける主な課題

組み込みソフトウェア開発者は、レガシーシステムを扱う際に、しばしば3つの大きな課題に直面します。 それでは、以下にその課題を説明します。

既存のコードの管理

異なる言語やアーキテクチャで構築された時代遅れで膨大なコードベースに新しいテクノロジーを統合することは容易ではありません。 例えば、大手自動車メーカーは、レガシーシステムを維持しながら、自動運転技術を追加することに苦労しています。 これらのレガシーシステムを管理することは、多くの場合、開発やイノベーションを遅らせる依存関係や互換性の問題に対処することを意味します。

コンプライアンスとリスク管理

厳格な規制やセキュリティ要件を満たしながら、革新性と機能性を両立させることも、大きな課題です。 医療業界などでは、新しい機能はすべて高いシステム信頼性を備え、安全基準を満たさなければならず、厳格なテストが求められます。

高齢化する労働力

経験豊富なエンジニアが退職すると、銀行業務における Fortran のような時代遅れのテクノロジーに精通した新しい人材を見つけることが難しくなります。この知識のギャップは、技術的負債を生み出すリスクがあります。新しいエンジニアはレガシーのコードベースを理解できない可能性があり、その結果、システムダウンタイムやパフォーマンスの問題が発生する可能性があります。

レガシーシステム統合のベストプラクティス

レガシーシステム統合の複雑性を軽減する方法はあります。Qt Group の経験から、以下のベストプラクティスをお勧めします。

インクリメンタルアップグレード

新しいツールやサードパーティ製ライブラリを統合する際には、システム全体を再構築するよりもインクリメンタルアップグレードを優先します。 経営陣は、長期的にシステムの変更が適応可能であることを保証するために、段階的な革新に投資すべきです。 短期的な利益追求型の戦略は、必要なアップデートやシステムの改善を妨げる可能性があるため、避けるべきです。

急激な技術刷新は失敗に終わることが多く、例えば、ノキアは、既存の大きな開発者エコシステムを管理し、シームレスに移行するための統一戦略を持たずに、自社のシステム刷新を試みました。これとは対照的に、アップルとAndroidは、自社のプラットフォームの成功を支える強力なコミュニティを構築しました。統合は徐々に行うべきであり、新しい技術は既存のシステムと並行して統合し、スムーズな移行を確保します。

テストのシフトレフト

完全な実装の前に、低リスクのシステムで新しい統合テストすることから始めます。例えば、企業は既存の C++ バックエンドとともに、新しい 3D レンダリング機能として Qt Quick のハイブリッド統合を試すことができます。これにより、チームは主要な業務を中断することなくプロセスを改善し、専門知識を構築することができ、主要なシステム全体にわたってスケーラビリティと適応性を確保することができます。

設計による変更のサポート

プラットフォームをアップグレード可能に設計することは、長期的な成功にとって極めて重要でありながら、見落とされがちな側面です。多くのプラットフォームが失敗するのは、一貫したアップデートを計画していないためであり、これは組織がLinuxカーネルのアップデートを管理する際に共通して見られる問題です。企業が定期的に上流のカーネルに従うのであれば、アップデート中に重大な問題が発生する可能性は低くなります。

しかし、すでに古いバージョンのカーネルを選択し、数年後にアップグレードを試みる組織は、しばしば困難なフルシステムのオーバーホールに直面します。最初から定期的な段階的なアップグレードを計画することで、重大な支障のリスクを軽減し、長期的に見てよりスムーズなシステムの進化を実現することができます。

互換性の高いツール

組み込みハードウェアの互換性のないツールは統合を複雑にすることがよくありますが、ハイブリッドアプローチは効果的なソリューションを提供します。QMLやQt Quickとレガシーバックエンドを組み合わせることで、開発者はこれらの問題に対処できます。例えば、かつてはC++ウィジェットに依存していた心拍数モニターが、今では3Dインターフェイスを必要としている場合などです。C++バックエンドと並行してレンダリング用にQt Quickを統合することで、レガシーへの投資を維持しながらシームレスな体験を提供できます。

今後、レガシーシステムが直面する主な課題

AI革命により、新しいチップセットが急増し、ハードウェアの状況が断片化しています。企業は、AppleのカスタムチップからARMベースのWindowsデバイスまで、増え続けるプラットフォームをサポートする必要があります。システムが新しいハードウェアに適応できない場合、陳腐化し、競争上の優位性を失うリスクがあります。

また、レガシーシステムの課題は部門横断的なワークフローにも及びます。 技術に関する意思決定が各部門で個別に行われることが多く、その結果、設計、開発、品質保証の各チーム間で摩擦が生じます。 成功する製品には、すべての部門にわたるシームレスな連携が必要であり、ワークフロー、ツール、プロセスが円滑に統合されていることが求められます。

局所的な領域ではなく、チーム全体で最適化を図ることで、生産性と拡張性が向上します。 ワークフローが適切に統合されていれば、新しい技術やアップデートが登場しても、メンテナンスや適応が可能なプラットフォームを選択することができます。

EUのサイバーレジリエンス法や米国FDAの要件のような規制の変更は、さらに複雑性を増します。 これらの規制では、デバイスに長期サポートとセキュリティパッチの提供が義務付けられており、組み込みシステムチームは、納期を守り、製品の完全性を維持するよう強いられています。

- - -

組み込みソフトウェアにおけるレガシーシステムの課題を克服するには、戦略的かつ段階的なアプローチが必要です。 慎重かつ協調的なアプローチにより、企業はレガシーシステムへの投資を維持しながら、イノベーションと将来の成長を促進することができます。

 

➤ 詳しくはこちら: