見出し画像

『数学から創るジェネラティブアート ―Processingで学ぶかたちのデザイン』序文

2019年4月に拙著『数学から創るジェネラティブアート ―Processingで学ぶかたちのデザイン』が刊行されました。こちらにその冒頭部を掲載します。


序文

ジェネラティブアートとは何か?一言で言うならば、それは科学と芸術をつなぐ橋です。そしてこの橋はプログラミングによって作られます。この本では数学の視覚表現に焦点を当て、プログラミング言語Processing によるジェネラティブアートの実践手法を提示しています。この本で扱う数学は高校で学修するレベルの数学から出発していますが、数学からすでに離れてしまった読者にも配慮し、復習的内容を多く盛り込んでいます。理工系以外の大学生から社会人まで多くの層が読むことを想定し、体系的に数学と視覚表現が学べることを目指して書かれています。

本文に入る前に、科学と芸術のつながりについてもう一度考えてみましょう。近年この二つの融合領域は注目を集めていますが、そもそも融合というのはどういったレベルで、どういったバランスで可能なのでしょうか。例えば数学は科学の一部ですが、純粋数学と呼ばれるような理論的な数学分野ではそもそも自然物を研究しているわけではなく、その研究対象すら理解するのが困難です。それがなんらかの生物や物質、自然現象であったりすると、詳しいことは分からないにせよ、それがどんなものなのかイメージすることが可能かもしれませんが、「高次元のかたち」と言われてもなかなかそれをイメージすることができません。なぜならそれそのものは写真に撮ったり、絵に描いたりすることができず、あくまで数学的な概念だからです。数学は数や図形のような極めてシンプルな対象から出発し、それを抽象化・一般化して世界を広げてきました。研究対象を理解するのにも、そういった基礎からの積み上げをたどる必要があります。さらに「何を」研究しているのかが分かったとしても、「なぜ」それが面白いのかを理解するにはさらなる深い理解が必要です。現代の数学の難しさはこういった部分にあります。

一方、芸術は美しさや感動といった人間の感性や感情をその原点としつつも、そこには文脈があります。芸術作品はそれ単体で存在しているわけではなく、それが属する分野での立ち位置や批評性、作家の背景や社会状況が絡んだ上で評価がされます。現代アートはその最たる例で、抽象絵画やミニマルアートが「何を」描こうとしているのか、「なぜ」それが世界的に評価されて重要なのかを理解するには美術史の知識が必要とされます。

このように、現代の科学と芸術は双方ともに高度な文脈の上で成り立っています。科学と芸術の交流という場合、深いレベルでの科学的知見と芸術的価値を両立させるべきですが、それは容易ではありません。科学を説明するための図や取って付けた芸術作品の科学的解釈は両立とは言えないでしょう。そもそも論理に基づく科学的手法と直観に基づく芸術的手法では、一見水と油のように見えます。とくに日本の教育制度ではこの二つは完全に分かれており、両者の間には大きな溝があります。

しかし科学と芸術は全く別物かというと、それは正しくありません。科学の中にも芸術的要素はあり、同様に芸術の中にも科学的要素はあります。数学に関していえば、バッハの音楽やエッシャーの絵画、イスラム文化での装飾など数学との関連性が指摘される作品の例は枚挙にいとまがありません。一方、数学理論には「美」と言わざるをえない驚くべき整合性と調和があります。

科学と芸術の交流可能性を考えたとき、そのキーとなるのが技術です。コンピュータの発展に伴い、情報技術による表現技法は大きく進化しました。ジェネラティブアートはその中で生まれた一つの表現手法、および芸術形態です。その呼称はまだ広く浸透していませんが、ジェネラティブアートは可能性に溢れていると著者は考えています。なぜなら「コンピュータと相性のいい科学分野」は未だ科学全体の中のごく一部であり、科学とコンピュータの間にはまだまだ開拓の余地が残されている、そしてそれは日々刻刻と拡張されているからです。例えば昨今のデータサイエンスの隆盛に伴い、数値計算に関する数学およびコンピュータでの実装は急速に進展していますが、あくまでそれは数学の一側面に過ぎず、その奥に広がる数学の世界にはまだ応用されていないアイデアが数多く眠っています。この本を通して、そういった科学と芸術をつなぐ手法の可能性に触れてみましょう!

本書のねらいと方針

この本は以下のような読者を想定して書かれています。

・数学のアイデアをデザインやアートに応用したい
・プログラミングに使える(実装できる)数学を知りたい
・高校の数学を視覚的に表現したい
・高校の数学よりもう少し先にある数学を知りたい
・平面のタイル張りの数理と実装に興味がある

まずは本書の絵を眺め、気になったプログラムを動かしてみましょう。本書で扱うプログラムの一部は以下のwebサイトで公開されており、プログラミング環境を用意せずともweb上でプの一部は以下のwebサイトで公開されており、プログラミング環境を用意せずともweb上でプログラムを動かすことも可能です。

これらのプログラムの多くはマウスやキーボードの操作に応じて絵が動きます。プログラムの仕組みはコードと呼ばれる命令文に書かれており、またそれはシンプルな数学的アイデアが元になっています。この本では、そういった作例を通じ、プログラミングを使って数学から絵をつくることを学びます。

本書で扱うプログラミング言語Processing はプログラミング初心者向けに設計された、シンプルで分かりやすい、視覚表現に特化した言語です。大学でもプログラミングの導入教育教材としてよく使われています。初心者向けといってもその自由度は高く、プロフェッショナルの現場でも使われているたいへん有用な言語です。本書はプログラミング初心者が読めることを目指して書きましたが、プログラミング学習がその目的ではなく、プログラミングを用いた数学の視覚表現に主眼を置いています。そのため本書はプログラミングの技術解説としては不十分な点もありますが、技術的な部分をカバーしたい場合、他のProcessing の入門書やweb 上の様々な解説サイトを併用して読み進めることをおすすめします。

本書で扱う数学は、2 部構成のうち第Ⅰ部は高校の数学+α、第Ⅱ部は入門的な大学の数学レベルの内容です。学校を卒業してから数学に触れていない読者にとっては、数学といえば計算や証明によって正しい答えを導く作業を思い出すかもしれません。確かに数学は厳密な学問であり、その理解には地味な作業の積み重ねは必要不可欠なのですが、それは一つの側面に過ぎず、自然現象を理解する枠組みにもなれば絵を描く道具にもなるとても根本的な学問です。方程式、三角関数、ベクトル、数列など、高校で習う数学はどれも味気ないものに感じるかもしれませんが、ここに挙げたものはすべて本書の絵作りの骨格をなすものです。プログラミングを通じてそれらを使うことで、その有用性に触れることをこの本では目指しています。高校の数学を忘れてしまった読者にも配慮し、簡単なおさらいや理解を助ける図もなるべく多く載せました。

プログラミングや数学に慣れている読者への補足

Processing はJAVA をもとにしています。JAVA をグラフィックスに特化し、簡易的にしたものがProcessing です。そのためJAVA やそれに似たプログラミング言語に慣れている方にとっては、習得は難しくないでしょう。またこの本ではとくに平面グラフィックスに焦点を当てています。Processing のすべての機能に万遍なく触れているわけではなく、3D や画像処理、映像については本書で触れていません。

数学に関して、本書では代数学に関する話題を中心に扱っています。数学の可視化に関しては、微分幾何学や解析学、データサイエンスなど他にも様々なアプローチがありますが、それらについては扱っていません。本書からつながるさらに進んだ話題への導入を註として簡単に書いていますので、興味を持った読者はここから深めていくことをおすすめします。本書の性質上、数学的に厳密な議論については省略している箇所が多々ありますが、それらを補うための参考文献は巻末に記載しています。

サンプルコードについて

この本で使うサンプルコードは、先に挙げたOpenProcessing サイト上で一部公開されていますが、OpenProcessing ではすべてのサンプルコードプログラムを動かすことはできません。以下のサイトでは本書で使うすべてのサンプルコードをダウンロードすることができます。

これらをPC上で動かすためにはProcessing開発環境を用意する必要があります。本書第0章ではその導入方法を簡単に書いています。また本書のサンプルコードは、2019 年3月時点でのProcessing安定リリース版であるver3.4、ver3.5.3で、Mac・Windows上において動作確認をしています。

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