Maxでつくった秋葉系VJソフトウェア「あのタグで待ってる」by コバルト爆弾αΩ をオープンソースとしてGithubで公開しました。Maxのお勉強や何かのお役に立つことがあれば幸いです。bpatcherを使いまくっているのは、お恥ずかしい話なんですが、subpatch化の方法をマジで知らなかったためです(^_^;)
ところんで、ルールを決めていかないと途中で完全にスパゲティコードになりそうだったため、私的なコーディング規約を考えて実装していました。ルールを書き出しておこうと思います。あのタグをつくっていたのは昨年の秋頃でしたので、今となっては古いと思う部分は、アップデートした事を書いておきます。
私的コーディング規約
- サブパッチに値を入力・出力場合、prepend等を用いてメッセージ名を頭につける。
- サブパッチのinletにはroute / routepassを接続して、受けられるメッセージを明確にする。
- サブパッチからの出力を受けるメインパッチ側でもroutepass / routeを接続し、何のメッセージを利用するかを明確にする。
- メッセージを利用する直前で、メッセージ名をrouteして値を取りだす。routepassはサブパッチの中で受けとった値をさらに下層のサブパッチへ受け流す場合等、どんなメッセージが流れているか説明する場合に利用。
- アプリケーションの構成は、MVC構造を意識してつくる。
- Viewは入力インターフェイス+出力インターフェイスが合体したものと考える。入力した値は一旦Modelへ送って、ModelからのフィードバックをViewにsetする。
- Modelで値を保持したり、アルゴリズムを動作させる。
- ControllerがViewとModelのコミュニケーションを仲介する。
- 人間 → View(Input) → Controller → Model → Controller → View(Output) のフローを基本とする。
- send オブジェクト・receive オブジェクトは異なるパッチ間では使わない。画面の下方の出力から、上方のパッチに値を戻したい場合に、画面が煩雑に成らないために利用。
- Maxの命名規則はオブジェクトもメッセージも小文字始まり。オブジェクトの命名をするときに階層は.(ドット)でつける。
- Maxのメッセージは全部小文字がルールのようだが、例外的にlowerCamelCaseにした。(趣味)
上図は、適応してみた例です。Maxって素早くプロトタイピングできる所が良いのに、相当めんどくさいパッチになります。ViewとかModelとか知ったように書いてますけど、MVCモデル聞きかじりなので、プログラム設計を勉強するのに良い本あったら教えて欲しいです!