ノードベース、流行ってますね。流行っているというより、もはや大きな本流のひとつと言って良いでしょう。
本ブログでは今年からHoudiniやSubstance Designerについて記事を書いていこうと思っていますが、今回はその第0回として、特定のアプリケーションの話ではなく、そもそもノードベースって何が便利なの?というシンプルな疑問について考えて行こうと思います。
今回node.jsのお話はしません。ご了承ください。
ノードベースのメリット
本記事ではノードベースのメリットについて僕が特に良いと思っている点をあげていきます。といっても僕自身まだまだ初学者ですから、知見が深まってきたら書き直すかもしれません。
また考え方の例として図を用意していますが、本ブログでは上から下に向かって処理が進んでいくモデルとします。もちろん左から右へ処理が進んでいくモデルもありますが、処理は一方向に向かっていくというのは重要な考え方ですね。
交換性
突然ですが、たいやき屋さんをやることになったとします。ノードベースのたいやき屋さんです。本当はもっと難しいでしょうが、簡単に書くと処理はこんな感じでしょうか。
このひとつひとつの処理がノードです。オペレータと呼ぶ場合もあります。
ノードベースの良いところのひとつとして、機能が小さなまとまりになっているので交換しやすいという点があげられます。
クリームたい焼きを作るにはどうしたら良いでしょうか?あんこをクリームに差し替えれば良さそうです。
簡単ですね。
さて、おかげさまでたい焼きが好評なので、金型を変更して今川焼きを作ってみることになりました。別の金型(ノード)を用意するのではなく、金型のかたちをオプションで切り替える方が考え方としては自然です。 どちらも同じ金型ですからね。
このノード自体の特性を示す要素(ここでは金型のかたち)をチャンネルやパラメータなどと呼んだりします。
各ソフトウェアによって設計や理念は異なれど、機能を細分化して交換しやすくするというのはノードベースの特徴といえるでしょう。
再利用性
上から下に向かって一対一で繋いでいくだけがノードではありません。以下に日本語を変換するネットワーク*1の例を見てみましょう。
「すすめ」という文字列を、「2文字目を濁点に変換するノード」につないでみました。出力は「すずめ」になります。簡単ですね。次はどうでしょう。
「すすめ」を分岐させて繋いでいます。このようにノードベースのアプリケーションではひとつのソースから違う処理を経て再利用するといった処理が簡単に行なえます。
本例だと最終的なアウトプットは「すすめすずめ」になりますが、少しノードを加えれば「すすめ!スズメ」などもできそうですね。
また前述のたい焼きに関しても同様で、今まであんこやクリーム、チョコは材料を直接型に入れていましたが、高級志向で手作りになったとします。そんなとき、金型の前に手作りの行程(ネットワーク)を入れれば良く、後半の作業は同じものを使いまわすことが可能です。ノード単体ではなく、ある程度の機能のまとまりごとに再利用することも容易となります。
このある機能のまとまりを使いまわすという考え方はプログラミングにおけるクラスやライブラリ、フレームワークなどにも通じるところがあります。
プロジェクト内での制作物が多様化・大量化している昨今、ノードベースはアセットマネジメントの観点からも優秀といえるでしょう。
自己説明性
Houdiniを例にあげて考えてみましょう。たとえば優れたモデラーが作った複雑で美しいモデルも、ポンと渡されただけではどうやって作ったか?が理解しにくく、なかなか初学者にはハードルが高いことが往々にしてあります。
しかしサーフェイスの処理が逐一記録されていたとしたら、順を追って理解することは比較的易しいと言えるでしょう。(もちろん「簡単」ではないですが)
プログラムの世界では「セルフドキュメンティングコード」という言葉があります。これはその名の通り自己説明的なコードを意味し、今この処理は何をしているのか分かりやすいコード、ということになります。
ノードベースアプリケーションのファイルはその仕組み上、自己説明的なものとなり、自然と学習効率が高くなる傾向にあると言って良いかもしれません。
確実性
「処理の記録が残っていること」は問題が発生した際非常に有効な手がかりとなります。これもノードベースの利点のひとつでしょう。
「どこかでポイントスナップが外れていた」など通常のソフトでは追いかけるのは至難の業ですが、ノードベースなら処理の単位が小さく、また結果を最小単位で補足できるため修正しやすいと言えるでしょう。
まとめ
いかがでしょう。ノードベースの魅力をぼくなりにまとめてみました。何かひとつでもノードベースのアプリケーションを学んでおくことは、きっと価値があることと思います。
ノードベース、触ったことがないなぁと思っている方は、この春ぜひチャレンジしてみてはいかがでしょうか。
*1:一連のノードの流れのことをネットワークと呼んだりします