クリエイティブコーディングへの導入1:【ツール】

プログラムを行うにあたって、私も多くの言語やエディタ、開発環境を使ってきました。計算速度のパフォーマンス、プラグインやライブラリの豊富さなど、それぞれの一長一短を知ることは重要であり、考慮に値しますが、まず小さな単位、可能な限り最小の単位で実験的にロジックや設計原理を実装することが一番だと考えます。

プログラムを実装した後で、どうにもならないボトルネックになりえるもので一番に思い浮かぶのは計算のパフォーマンスでしょう。確かにパフォーマンスの向上にはそれはそれで、膨大な経験と技術が必要となりますが、核となるロジックが成立すれば、なんらかのライブラリや特別なコンパイラの力を借りたり、技術力の高い技術者、研究者の協力を得たり、現代においては基本的な力を借りるためのコミュニケーションの道具が出来ます。

このような立場と仮定のもと、本格的かつとにかく早く動くプログラムをつくるために、私がいろいろと使ってみて良かったツール、このnoteで例題に使用予定のツールを以下に設定しました。

[ツール]
Visual StudioProcessing等手に入れやすいIDE(統合開発環境)を可能な限り使用します。これらのIDEはインストールが簡単で、長い間多くの人に使われており、動作も安定し、簡単な設定ですぐにプログラムを始めることができます。

すぐに始められることと、多くの試行錯誤と多くのミスを修正する場数を踏むことが上達への早道です。そのためには色々なライブラリや実行の設定をまずは容易に完了させる状態をつくっておく必要があります。

プログラミングやコードの設計はバグ自体が少なくなることが一番良いですがいろいろなバグを経験し、その修正方法を自らの頭で考えたり、インターネットや友人に考え方を問うことが実務上の難しい要件に落ち着いて対処することに役に立つでしょう。

そして、ここでは、なるべくビジュアルに成果を表現することを重視します。コンソールやコマンドラインの数値や文字列の羅列で計算結果を見ることも重要ですが、映像や図形で成果が感じられると応用方法が具体的に浮かび易いのではないかと思います。

言語は
・C#, Python : 図形描画のためにRhinoCommon SDK + Grasshopperを使用 
・Java  : Processing
・HTML + CSS + javascript + php 等: webプログラミングの後ろから前までを網羅

を用いて、ビジュアルに伝えていきたいと思います。

[以上のツールを使用する理由]
RhinoCommon SDK + Grasshopper
https://www.rhino3d.co.jp/
https://developer.rhino3d.com/guides/rhinocommon/what-is-rhinocommon/

CAD/CAM/NurbsモデラーソフトであるRhinocerosに付属している開発用の各種ライブラリです。これを使う理由は

・高品質なCADとしては比較的安価
・幾何学ライブラリとして、必要十分
・CAD系の開発コミュニティとしては割合に大きいコミュニティをもっている
・ビジュアルプログラミングとテキストプログラミングの両方のインターフェースを持っていて、組み合わせて使うことができる
・C#やPythonでも書くことができ、基本的なアルゴリズムを必要に応じて、再利用、別のアプリケーションのために書き下すことができる。
・豊富な入出力機能により、CADとしての機能はもとより、可視化ツール、VJ、CAM、アニメーションツールなど多様な使い方が可能

Processing
https://processing.org/https://processing.org/https://processing.org/

クリエイティブコーディングの統合開発環境の近年の草分けであるProcessing。これを使う理由は

・歴史がある程度長く、コミュニティが発達
・とにかく始めやすい
・時系列のアニメーションベースのアーキテクチャに慣れる
・オブジェクト指向言語とオブジェクト指向設計に慣れる

HTML + CSS + javascript + php

サーバーまたはその仮想実行環境が必要なものの、webブラウザとテキストエディタがあれば、テストできます。この頃では多くのプロダクトがデスクトップ型からアプリ型、ネットワーク型に変化してきており、エンジニアというと今はこちらの技術に精通する人をさすことが多い気がします。

重要な点は

・MVC, MVVMのパターンの理解
・サーバー・クライアント型のアーキテクチャの理解
・無数にある技術のミックス
・ネットワークを介したリアルタイムデータを使ったプログラミング

であり、デスクトップ型のソフトウェアとは多くの点で異なったアーキテクチャの構築を理解することができます。

【まとめ】
これらの多少に用途の違うプログラムで、それぞれ自分が自信をもてる仕組みが出来ていると、その頃には頭の中にプログラム言語の構成をするための構造が出来上がっていると考えられます。他の言語に挑戦したり、新しいシステムに挑戦する場合に、仕組みが思い浮かぶようになります。

ある自然言語は他のある自然言語をルーツにもっているように、コンピュータ言語にも考え方のルーツがあり、派生的につくられています。派生的な言語は覚えやすいので、学習コストは比較的下がります。

繰り返しになりますが、まずは、動かしやすい環境をつくり、プログラムの構成が容易に出来るような脳の回路をつくり、息を吸うようにプログラム出来るようになることが重要だと思います。


この記事が気に入ったらサポートをしてみませんか?