リソースファイル分割のすゝめ

この記事は Qt Advent Calendar 2019 2日目の記事です。

リソースのおさらい

最近の Qt Quick のプロジェクトでは、.qml ファイルや .js ファイル、画像などのアセットなどを Qt のリソースシステム で管理するのが一般的になっています。

そのドキュメントに記載がありますが、リソースは .qrc という拡張子の XML 形式で、.pro ファイル内では

RESOURCES += main.qrc
のように管理されます。

アプリケーションのコンパイル時に、rcc という Qt 独自のリソースコンパイラによってリソースファイルの中身が

qrc_リソースファイル名.cpp
という名前の C++ のコードに変換され、その後 gcc などのコンパイラでコンパイルが行われてアプリケーションのバイナリの一部となります。

リソースは適切なグループに分けよう

1つのリソースファイルにソースコードと画像が含まれる場合、ソースコードの一部を変更する度に、そのリソースファイルに含まれる全てのファイルに対して rcc およびコンパイルの実行が行われます。

小さな画像やテキストファイルなどがほどんとあればあまり気になりませんが、巨大な3Dのアセットなどが含まれる場合、コードを1行変えただけでもコンパイル処理が膨大になってしまいます。

と言うわけで、1つのリソースファイルですべてのものを管理するよりも、適切な粒度に分割した方が開発効率がよくなることが多いです。

以下にオススメの一例を挙げますが、プロジェクトに応じて柔軟に効率よく管理をしましょう。

  • sources.qrc … .qml と .js(毎回コンパイルされる想定)
  • images.qrc … 画像(デザイン更新時のみ再コンパイルする想定)
  • 3dassets.qrc … 3D関連のアセット(同上)