いきさつ
近頃GoogleのBlocklyやらUnreal EngineのBlueprintsを見ていて「こういうの作ったら仕事が楽になりそうだなぁ」というサボり虫が騒ぎました。特に初期の開発フェーズのプロトタイプには効果がありそう。ということで、では「実際に自作する場合はどうするか」を検討してみる事に。
注意
いろいろ調べてどうやったら実現できそうかをメモしただけです。実際に動作するモジュールだとかアプリケーションは作っていないので、そういったものをお探しの場合は以降の内容を見る価値はありません。
想定する動作環境
基本的に職場はWindowsなのでWPF、もしくはWebアプリケーションも検討する。出力するデータはXMLやJSON、それかCのソースコードを直接出力。
先人の知恵をあたる
ざっとググってみた感じでは以下のページが参考になりそうでした。ノードをコネクターでつないでいくGUIがいいと思っているのでBlocklyのようなものは除外しています。
WPFでダイアグラムを実装する
CodeProjectのこの記事が良かったです。ただ、出来上がりはVisioのようなものになります。
Flood
JavaScriptによる3D Visual Programming環境。ソースコードはGithubでホスティングされているので参考になりそう。GUIはこのノードにコネクターつないでいくのが理想です。
JointJS
JointJSのこのあたりを参考にどうにかならんもんか。
vvvv
聞いたことの無い環境でした。プロジェクトページはこちら。
Processingのコードが出力されるのかな?ともかく参考にはなりそう。
既存のRecord Mapper
そもそも用途が違う気がするので飽くまでGUIの参考として。こんなやつとかです。でも、このサンプルは大分流用できそうな気がします…。
といった具合です。わかってはいましたが、道のりは楽ではないです。
まとめ
理想はFloodなのですが、いかんせん近年のJavaScript界隈は変化が激しすぎるため仕事でメンテし続けるのは辛そうだなと…。WPFのサンプルを参考にContentTemplateやControlTemplateあたりをゴニョゴニョするのが無難かな…。
追記15/05/07
WPFの記事を考察して、更にMVVMベースで改造した方がいました。