背景など
普段お世話になっているQt関連の記事へのお返しとして、何かQt Advent Calendar 2019に書きたいと思ったのですが、時間が取れなかったので、これまでQtを使って感じたことを残してみたいと思います。
私自身仕事としてのソフトの開発経験は長いのですが、Qtは初体験で理解しきれずに使っている点がほとんどです。ご容赦願います。
また一日遅れの上、技術的な事が何も無い記事になってしまい、申し訳ありません。
調査から環境構築、プロトタイプ作成まで
製品を開発するにあたり、Qtが使えそうか調査し、簡単なプロトタイプを作成するまでに感じたのは次のような点。
- 機能は多く十分。製品に採用されている実績からも、足りないものはなさそうだと思った。
- ただし、日本語の情報が少ない。公式ドキュメントでは機能や文法は分かるが、使いどころや設計のポイントが分からなかった。
- @task_jpさんや@hermit4さんを始めとする日本語の記事が大変参考になりました。
仕様検討から本格開発開始まで
仕様を検討して開発を始めると、機能としては存在しても以下のような細かな問題がありました。
- sshを使うよう設計したが、実装してみたら認証鍵方式限定だった。結果として仕様を変更した。
- 予め自作したタイル画像をローカルに持っておき、ネットのない環境で地図表示する必要がありましたが、どうやってもQtのタイル画像表示がネットのない環境では動かなかったので、タイル画像からの地図表示は自作に切り替えました。
- QtDesignerからだと機能しないスタイルシートが数か所あった。ソース内からsetStyleSheetすると機能する。
- QGraphicsViewが思ったより重かった。大量のラインを毎秒描き足して残す処理があるが、アイテムが多くなると急激に遅くなってしまうので、描き足す際に直前のラインと比較して、人間の目で見てわからない程度の違いなら描き足さず描き直すなど実装を工夫してアイテム数を減らした。
- OfficeをActiveX経由で操作してドキュメントを作る必要があるが、一部の引数が正常に動かず仕様を変えた。例えば、PowerPointでポリゴンを描こうとすると、座標が渡せない。
開発終了に向けて
後一ヶ月ほどで開発を終わらなければならない時期となり、試験やマニュアル作成の人員に実行ファイルを展開していますが、問題の報告、修正の確認の際、どの時点の実行ファイルか識別が必要になった。(本来Qtの問題ではありませんが)
これについては、Jenkinsを使い、SVNのリビジョン番号をexeのファイルバージョンに埋め込んでビルドする仕組みを自動化して対処しています。
最後に
繰り返しになりますが、全然技術的な事が書けずに申し訳ありません。開発が落ちついたら上に書いた問題なども整理して書きたいと思います。