読者です 読者をやめる 読者になる 読者になる

Visual Gesture Builderのソリューションを分割するべきか?

Visual Gesture BuilderではVisual Studioと同じように Solution - Projects の関係でコンポーネントを管理します。 Gesture Builder Database File (.gdbファイル)はソリューション単位もしくはプロジェクト単位で作成することができますが、どのような単位でソリューションを分割することが適切なのでしょうか?

gdbファイルのビルドは(恐ろしく)重い

理想的なことを言えば論理的に把握しやすい単位(例えば対象とするお客様単位)でソリューションを分割することが望ましいと思いますが、現実としてgdbファイルのビルドには恐ろしく時間がかかります。

私が取り組んでいる仕事では、5プロジェクトが登録されているソリューションをビルドするのに30分近くかかります。各プロジェクトに組み込まれているxefファイルの総時間を合計すると50~60分程度ですから妥当といえばそれまでなのですが、これはちょっと厳しい…というのが正直な感想です。

そもそも問題はなにか

現状で問題の原因だと考えていることは以下の2つです。

  • gdbファイルをビルドしないとアプリケーションでテストできない
  • xefファイルを分割する方法がない

gdbファイルをビルドしないとアプリケーションでテストできない

gdbファイルをビルドするのに時間がかかるのに、gdbファイルをビルドしないとアプリケーションからテストできないというのは致命的です。アプリケーションのビルドはさまざまなノウハウがあって時間を短縮しやすくなってきています(サーバでビルドするとか、並列ビルドとか)が、gdbは直列にしかビルドできないのでアプリケーションの変更スピードに全く追いつけないという問題が発生しています。

一方で、単純にgdbが期待した通りの検出をするかどうかはVisual Gesture Builderのpreview機能を利用すれば検証できますので、用途によってはさほど問題にならない場合もあります。

xefファイルを分割する方法がない

ビルド時間はxefファイルの長さに大きく依存するようです。必要な時間のみのxefファイルを作成することができれば、それに越したことはありません。しかし、業務のオペレーションを記録したい場合では、いちいち作業者に止まってもらうわけにも行きません。

結果として長回しになりがちなのですが、xefファイルを分割する方法が現状存在しないので、長いビルド時間を引き起こす原因になります。

現状どうしているのか

現状では長いビルド時間を我慢して1つのソリューションにまとめています。論理単位でリソースを管理したいということの他に、KINECTのアプリケーションから利用する場合にgdb毎にインスタンスを作らなければならなかったりと色々面倒になりそうなことが理由として挙げられます。

もっとビルド時間が長くなってくると贅沢も言っていられなくなるので、どうやっていくのがベストなのか模索する必要があります。 :(