2025年12月9日火曜日

【QT】QTについての雑記

ここ10年くらいの仕事のメインになっているQtについて
ちょっと書いておこうかなあ。




Qtってなんだっけ?

クロスプラットフォームなアプリケーションフレームワークで
WindowsやLinux、macOSなどのアプリケーションや
Androidなどのスマートフォンのアプリケーションの開発ができる。

ヨーロッパ圏での使用例が多いらしく、日本ではあんまり主流じゃないと思う。
車のナビシステムとかで使用されていることが多いのかな?
主流じゃないのになぜ自分は使っているのか…?


情報が少ない

日本であまり主流でないのも相まって、日本語で引っかかる情報が多くない。
Qtフレームワーク内でアプリケーションの作り方も
オプションの何を指定したかでけっこう変わるせいで、
見つかった情報がそのまま使えるとは限らない。

また、バージョンによって内容が結構変わっていることもあり、
新しいバージョンにしたら古いバージョンの機能がなくなっていることも。
「Qt」かつ「自分の使っているバージョン」で一致する情報が見つかることはマレ。
古い情報などを調べつつ試したり、
やむなくQt公式のフォーラムへカチコミすることも。


難しい

前職から現在にかけて、自分のメインで触っているプラットフォームになってて
あまりポジティブな意見ではないのだけど、ひと言目に出てくるのは
「ぶっちゃけむずかしい」

マルチプラットフォームなフレームワークで、
MVCモデルでシステムを構築するシステム。
ViewはQMLといわれるjavascriptの拡張言語のようなもので、
ModelやControllerはC++で開発するのだけれど、
このQMLとC++の間をとり持っているQtライブラリのところが問題。
開発していると、この部分でいろんな問題が発生してくる。

QMLとC++っていう異なるプログラムでやり取りしているのが原因なんだろうけど、
手続きの仕方を間違えると、ここでいろんな問題が発生する。
QMLとC++で双方向でアクセスできるようバインディングした変数なのに
片方でメモリ開放されてアクセス違反が発生したり…
構成している2つのシステムでメモリ管理がまったく違うせいなんかな?

このQtライブラリのところでアクセス違反が発生して、
AccessViolationなどでアプリケーションがクラッシュすることが多々ある。
自分はもうかなりの期間触っているから、
「こうしない方がいい」という方法が分かってきているけど、
会社にすすめられるまま、あまり知らないままに触り始めた人とかは
最近C++の経験自体がない人もちらほらいるせいか、
こういうのがいたるところで発生し始める。

しかもこの問題、どこで発生しているか判別がメチャクチャ難しい。
分かっていないとまともに解けない問題と同じくらい難しい。
まあ、そのせいで自分はこの仕事を請け続けていられるのだろうけど…

「おれ、Qtエンジニア(デーモン)になっちゃったよー」
って言いたいくらいだよ
いやまじで


いいところ

多分、そんなでもQtが使われ続けているのは、
コア部分がC++で処理速度が必要な場合などに有利で、
OpenGLなどで3D描画などもやろうと思えばバリバリできる点があると思う。
難しいけど、それだけのパワーはある。

前職では、3Dで点群表示するビューアーとか作ってて
3rdパーティー製ライブラリと合わせて動かしても
けっこうパフォーマンス出てたしね。

あと、日本では若干マイナーな点を公式さんも分かっていてなのか、
これから支持者をどんどん増やしたいからなのか、
サポートがかなりあったけえというのはいいところだと思う。

最近だとQtのQMLとC++という構成の難しさをサポートするためか
Squishなどの解析ツールも提供されてきている。Qtはじまったな
ライセンス料が高くて、自分の会社では導入されてないんスけど…。

最近だとPhysicalAIの導入も検討されているらしい。

やはり難しい

Qt5からQt6にバージョンアップされるにあたって
けっこう仕様が変わった部分がある。

Qt5ではプロジェクト管理を
Qt独自のproファイルというプロジェクトを管理するものと
リソースを管理するqrcファイルで行っていたのだけど、
これがQt6になって、C++などで扱われるCMakeファイルに変わったこと。

Qt6ではまだproファイルもqrcファイルもサポートされているのだけど、
これも今後、完全にCMakeファイルに移行するのかなーと。
プロジェクトを管理するファイルが変わり、管理の仕方も変わって大変。

まあ、サポートが切れる直前までQt5で渋るんじゃなく、
もっと早い段階で移行すべきなんですけどね。
会社の意向だし…と言い訳しとく。

下書きのまま11月投稿せずでした。
とりあえずこんな感じのをあげておこうと思う。
久し振りに書くと、なんかまとまりがないな…


0 件のコメント:

コメントを投稿