この記事は、Qtのオフィシャルテクノロジー&サービスパートナーであるFELGOによるゲストブログ記事です。
Felgoは、長年にわたりQtエコシステムに積極的に参加し、Qt開発者の日々の作業をサポートする専門的な製品を開発しています。これには、クロスプラットフォーム開発を簡素化する200以上のコンポーネントを持つFelgo SDKや、QML Hot ReloadやFelgo Cloud Buildsなどのツールがあります。Qt 4をベースにしたFelgoの最初のリリース以来、チームはQtの新しいバージョンに常に目を配り、最新の変更を取り入れ、Felgo製品とFelgoユーザーに新しい進歩をもたらしてきました。Felgoとその製品の性質上、チームは新しいQtリリースの評価と取り込みに精通しています。しかし、Qt 4からQt 5、そして今回のQt 6への移行のような大きなバージョンアップには、特別な注意を必要とする大きな変更がいつも伴います。さらに、Felgoは、自社製品だけでなく、Felgo SDKに依存してソフトウェアを構築している世界中の顧客にもスムーズに移行できるようにしなければなりません。
Qt 6 がリリースされるとすぐに、Felgo は移行の実現可能性と利点の評価を開始しました。チームは、パフォーマンスの向上、開発者の使用感、既存のコードベースとの互換性などの要素を考慮しました。この投稿では、製品に Qt 6 を使用し始めるための主なステップ、Felgo が移行中に直面したいくつかの課題、新しいテクノロジーを活用するメリットについてまとめています。
移行にはある程度の計画と開発工数が必要ですが、Qt 6 の利点は移行時の手間をはるかに凌駕しています。Qt 6 を取り入れた Felgo は、パフォーマンスの向上、開発ツールの強化、将来的なクロスプラットフォーム互換性など、多くの進歩を享受できるようになりました:
Qt 6 は正しい設計を選択し、パフォーマンス、安定性、アーキテクチャが改善され、これまで以上に強力になりました。Qt 6 に移行することで、開発者はテクノロジーの最前線に立つことができ、新たなチャンスをつかみ、ユーザーの進化するニーズに応える優れたアプリケーションを提供することができます。
ソフトウェア製品を Qt 6 に移行する前に、最も重要なステップは、既存のコードベースと使用されている Qt コンポーネントやモジュールを綿密に評価することです。これにより、リファクタリングが必要な部分を特定し、移行のロードマップを作成することができます。
Qt 6 への移行は、既存のプロジェクトの整合性を保ちながらスムーズに移行するために、いくつかの変更を伴います。Qt 6 のフレームワークに合わせるために、以下のトピックに対応する必要があります:
CMakeはqmakeに比べて多くの利点があるため、現在では好ましいビルドシステムとなっています。CMake はプロジェクトのコンパイルを高速化し、QML モジュールとプロジェクトリソース(QRC)の管理を簡素化します。また、Qt Quick Compiler の最適化機能の向上などにより、Qt のアプリケーションパフォーマンスを大幅に向上させることができます。
CMake と Qt の CMake ヘルパーは、バージョンレスターゲットなど、同じプロジェクトのソースコードで Qt 5 と Qt 6 を並行してサポートすることも容易にします。
さらに、必要なビルドツール、IDE、ビルド自動化システムは、ターゲットプラットフォーム用の Qt 6 と CMake プロジェクトのビルドをサポートするために、最新の要件に合わせて更新する必要があります。これらの課題に早い段階で取り組むことが最善です。そうすれば、CI/CD システムを信頼して、しっかりとした開発プロセスを確保し、品質保証の手段を取り入れ、移行中に迅速なデプロイサイクルの恩恵を受けることができます。
さまざまな Qt コンポーネントの API が変更されました。そのため、Qt 6 でプロジェクトをビルドし、正常に実行するためには、これらの変更を取り入れる必要があります。ほとんどの場合、必要な変更を適用するのは簡単です。詳しくは Qt 6 の Qt モジュールの変更点を参照してください。いくつかの例があります:
Qt 6 の基本的なアーキテクチャが変更されたため、様々な機能が異なる動作をするようになり、プロジェクトのソースコードを変更する必要があります。以下にいくつかの例を示します:
Qt Quick コードでは、モジュールのインポートに特定のバージョンを必要としなくなりました。また、パラメータが定義されていないシグナルハンドラは非推奨であり、置き換える必要があります。この例ではバージョンレスのインポートを使用し、MouseArea::clickedシグナルのマウスイベントオブジェクトにアクセスする方法を示します:
import QtQuick MouseArea { acceptedButtons: Qt.LeftButton | Qt.RightButton onClicked: (mouse) => { if (mouse.button === Qt.LeftButton) { console.log("left clicked"); else { console.log("right clicked"); } } } |
Qt 5とQt 6を並行してサポートする必要がある場合は、"2.x "インポートバージョンをコードに残すことができます。
Felgo SDKは、さまざまなQtモジュールや機能を活用しています。6.0がリリースされたときに、すぐにQt 6を主要なターゲットバージョンとすることは現実的ではありませんでした。
そこでFelgoは、まずFelgo SDKの最小限の機能セットを含むベースバージョンを作成し、段階的な移行アプローチを取ることにしました。新しいQtがリリースされるたびに、FelgoはSDKがすべてのコア機能とモジュールをサポートするまでバージョンを更新し、2021年末にはQt 6.2リリースですべてのコア機能とモジュールをサポートできるようになりました。
残りのすべてのFelgo機能を追加するために、チームはFelgo 4リリースの仕上げとなるQt 6.4.1リリースまでこのプロセスを繰り返しました。
さらに、Felgo QML Hot Reload や Felgo Cloud Builds などのツールが移行プロセスで役立つことも明らかでした。そのため、チームはまずこれらのツールを Qt 6 用に準備することに集中しました。この決定により、Felgo SDK コンポーネントに関する今後の作業やチーム内のコラボレーションがより容易になり、迅速に進めることができました。
Felgoのツールとコア機能が完全に移行された直後から、Felgoは社内と一部顧客に対して、ソリューションの隅々まで入念なテストを開始しました。
Felgo SDK とツールは Qt Quick に強くフォーカスしており、QML Hot Reload は Qt 6 への移行中、Felgo にとって非常に貴重な存在であることが証明されました。この機能により、開発者は QML コードにリアルタイムで変更を加えることができ、現在の状態を失うことなく、更新が実行中のアプリケーションに即座に反映されます。これにより、時間のかかる再コンパイルや再起動が不要になりました。
生産性が向上したことで、FelgoはQML APIを迅速に開発し、さまざまなデザインを試すことができるようになりました。これにより、Felgo SDKのコントロールやUIコンポーネントのリファクタリングや移行がより簡単になりました。
また、Qt 6 の機能を利用することで、継続的な改善と微調整が容易になりました。QML Hot Reload for Qt 6 の最新バージョンでは、エラー画面や、変更やエラーをロールバックしてシームレスなリロードを行う機能などの新機能も追加されました。
QML Hot Reload に加えて、Felgo は Qt 6 アプリケーションのビルドとデプロイのための便利で効率的なソリューションとして、Cloud Builds の力を活用しました。
クラウドビルドにより、Felgo の開発者は拡張性のあるクラウドインフラを活用して Qt プロジェクトをコンパイルすることができます。これにより、移行プロセスが加速され、多くの異なる顧客プロジェクトに Qt 6 を統合することが可能になりました。
複数のプラットフォームを同時に構築できる Felgo Cloud Builds のおかげで、迅速な開発サイクルを確保し、効率的に納品とテストを行うことができました。
これまで述べてきたように、Qt 6は品質と使いやすさにおいて大きく前進しており、多くのプロジェクトは以前のQtバージョンから移行することで恩恵を受けるでしょう。Felgoは、ツールとQtのエキスパートを組み合わせて、Qt 6の利点をいち早く享受するための理想的な支援を行っています。
QML Hot Reload や Cloud Builds といった Felgo の強力なツールは、開発を効率化し、Qt 6 の採用を加速しました。また、この移行は将来のプロジェクトの基礎となり、高品質なアプリケーションと Qt 6 の機能の効率的な利用を可能にします。
Felgoは、トレーニング、コンサルティング、ツール、エキスパートを提供し、Qt 6への移行をお手伝いします。マイグレーションに関する知識をお探しの方も、開発時間を確保するためにマイグレーションをお任せになりたい方も、Felgo は Qt 6 への移行をお手伝いします!
ベルリンで開催されるQt World Summit 2023に参加される方は、ぜひFelgoのブースにお立ち寄りください。独自の製品や効果的な開発についてもご紹介しています。
------
Felgoは2014年からQtテクノロジーパートナーとして、Qt開発者の生産性向上を支援しています。
FelgoはQtのサービスパートナーとして 開発サービス、Qtトレーニング、ワークショップなどを提供しています。 Fergoについてより詳しい情報はウェブサイトもしくは2023年11月28日-29日にベルリンで開催されるQt World Summit 2023のブースでご確認ください。