UIとロジックを分離する

最近、ツールの設計ということに目が向くようになってきました。Pythonが主流になったことによると思います。

Pythonでのツール開発の場合、やはりUIとロジックは厳格に分離した方が良いです。なぜかと言えば、UIはQtDesignerを使って感覚的に作り、ロジックはエディタでゴリゴリと書きたいからです。途中でUIの仕様が変更になったりした際に、UIを書いているPythonファイルに動作のロジックも書いてしまうと都度書きなおしになるため、QtDesignerでのUIカスタマイズができなくなってしまいます。

そのため、UIのクラスを継承してツールのクラスを作る、というようなことから始めました。

次に、汎用性のあるツールの開発で、全く同じ機能を持つツールを3dsmaxとMotionbuilderの両方で使いたい、という要望が出てきました。当然の要望と言えます。

そこで、UIは完全に共通にし、それを継承したクラスとして共通の処理をもつ抽象クラスを作り、さらにそれを継承して3dsmax用とMotionbuilder用を作る、というような構造にしました。これが非常に便利です。

そんなもの当たり前だという話なんですが、これまで「継承」という発想のないMaxScriptが開発の主軸だったため、こういうオブジェクト指向ならではの効率化にまったく目が向いていなかったのです。

Pythonでこれをやりだしてから、MaxScriptオンリーでツールを書く際にもUIとロジックの分離ということを意識するようにしました。

“UIとロジックを分離する” の続きを読む