← 一覧

Creative Coding

  • 全てのコードはクリエイティブと言えるが、ひとまず「プログラムを組んで芸術的な表現をすること」とする

    • そこでまた「芸術的とは何なのか」という疑問が起きる
      • 芸術の歴史と接続可能なもの
        • 現状そこまでシリアスでもなく、プログラムで絵や音や映像を作る、くらいの使われ方
    • Creativeという言葉に引っかかる人が多い
      • 単なる言葉でそれだけのこと
      • 他のプログラムがクリエイティブでないとかそういう訳じゃない
      • 英語の受け取り方にも齟齬があるかも
    • 「表現のための仕組み(道具)を作ること」と定義するのはどうだろうか
      • コンピュータに泥臭さを持ち込む
      • リベラルアーツのためのプログラミング
  • Creative Codingと呼ばれる前にもそのようなジャンルは存在した

    • Software Art, Artist-designed Software
      • グラフィックに限らず、電子工作やデバイスも含む
      • コンピュータで作るものの中に、美術的な要素が入ったもの
      • 実用性とは異なる目的のもの
    • 使う言語も表現に特化しているか、非エンジニア向けに簡略化されている印象がある
    • ゲームとの違い
      • インタラクティブである点は共通する
      • 視覚効果も技術的な面で共通する部分は多い
      • NO FIGHT, NO TIME LIMIT, NO HIGH SCORE, NO MONSTERS, NO WINNER, NO LOSER, JUST PLAY – LIA

    • 文芸的プログラミングとの違い
      • 文芸的プログラミングはスタイル
      • 本を書くようにプログラムを書く
    • 趣味のプログラミングとの違い
      • 単にコードを書くのが好きというのであれば、エンジニアは仕事でコードを書き、息抜きでコードを書いている
  • いつからか(2010年代前半?)Designer NewsなどでCreative Coderの募集が出るようになった

    • Googleの検索結果を見ていると2012年くらいに募集が出ている感じ
      • 既に自分でCreative Coderと名乗っている人はいた
        • Creative Technologistという人もいる
    • 内容的にはプログラミングでインタラクティブなWebコンテンツとかアプリ、インスタレーションを作る
      • Processing, openFrameworks, Three.jsなどが使える人材
      • 無目的にコードで何か表現を行う、というのとは違う
        • もともとの意味からは変わって、商業的な狭い範囲を意味するものになってしまった感がある
      • こういうのが単体で仕事になる時代になったんだなぁと思った記憶がある
    • 世代交代というか、ある程度ジャンルとして認知されてからと、その前で目立つ人の指向性や作品の質が変わった気がしている
      • Creative Codingを見てCreative Codingをやりたくなった世代?
        • 自分もそうといえばそうなのだが、ジャンルの外の要素をいかに取り込むかという意識があるかないか?
        • 歴史との接続をしようとしているか否か
          • 接続の仕方、語り方の問題
            • 権威を借りようとしたり、価値を吊り上げようとしたりしているように見える
            • こじつけ
      • 歴史や思想が継承されておらず、作るものや参照点に偏りがある
        • Generative Art, Algorithmic Artと呼ぶ方が近い
        • オンスクリーンに閉じている
        • それはそれで別にいいのだが、自分の興味とは少しずれている
        • Processingは元々Macromedia mindというように、Flash的なものをコードでという意識があった
          • そういう意味では美術やデザインの延長で、コードを使うという方向は納得できる
          • 自分の場合はコンピュータやプログラミングの根源的な部分に遡って、音やグラフィックを考えたい
            • 幾何学図形を使うから美術で、三角関数を使うから数学で、美術と数学の組み合わせであるというのではなく、どちらがどちらであるかがわからなくなる領域
            • あるいは、コンピュータである以上はどこまで行っても数学であることを認め、そこから新たに視覚的な効果を立ち上げる
        • 同じようなことを繰り返しており、深まっていかない
          • 手法の共有、ライブラリ化
      • コンピュータサイエンスに近づき過ぎると、見えなくなるものが出てくる
        • コンピュータで動作する以上は、全く無視することもできない
        • Poetic Computing
          • poeticの意味を真剣に考える
        • アルゴリズムは効率化が目的だが、それ以外に面白さや美しさという指標を導入してみる
          • あるいは原理を理解しやすくするためにあえて最適化しない、など
      • 絵作りの質感に対する実践は進んでいる
        • コードによる試行錯誤
        • パラメータの調整
        • よりフィジカルにコードと向き合う
          • 目で結果を確かめて調整、の繰り返し
        • 他のジャンルからの刺激
    • コードによる表現それ自体ではなく、何かしらの演出など副次的な存在になってしまっている
      • 他に楽に実現可能な代替手段があればコードを書かなくてもよい
      • かといって単に隙間を探し続けるのも不毛
    • Processing以前のBASICなどでグラフィックプログラミングを教える書籍に数学的な概念を応用した例がある
      • 逆にプロトタイプやすぐに絵を出すために作られたはずのProcessing以降にAPIから外に出るようなものが少ない印象
  • HowではなくWhyについて考えたい

    • 我々の世界に対する眼差しをいかに変えたか
      • 道具やメディアによって人間が外部化するもの
      • そしてそれを足がかりにして思考や技術を深めること
      • 今まで自分たちが創造性だと思っていたものがどう変わるか
    • ある手続きに従って自動的に絵なり音響を作るにはプログラミングが適している
      • 人間の力では有限の時間内に終わらないような膨大な手続きを可能にする
      • 人間の身体能力を超えた出力
        • 高速、巨大、極小、正確
      • 元々は自動化が目的だった
        • 大量生産、複製
    • 人間にとって正確に描くことは難しいが、コンピュータにとってはラフに描くことが難しい
      • コンピュータは幾何学が苦手
      • コンピュータにとって円や四角は何なのか
        • 数値の羅列
          • 関数の定義
        • APIを使うことと、自ら定義することの違い
        • 美術における素材やメディウムと向き合うこと
          • コンピュータアーキテクチャへの理解
    • 開発環境の違いによるメンタルモデルの違い
      • OpenGL(API)とGLSL(シェーディング言語)
        • 画家視点とキャンバス視点
      • PixelとVector
        • 印象派、キュビズム、新表現主義などのような括りになる時は来るのか
        • ディスプレイ派
      • 線をどのように引くか
        • line(0, 0, 100, 100);
        • vertex(0, 0); vertex(100, 100);
        • point(0, 0); point(1, 1); ... point(99, 99); point(100, 100);
        • 数学的には
          • 陰関数(The Implicit Form)
            • ax+by+c=0ax+by+c=0
          • 陽関数(The Explicit Form)
            • y=mx+cy=mx+c
          • パラメータ形式(The Parametric Form)
            • x=x0+ftx = x0 + ft
            • y=y0+gty = y0 + gt
          • 数学において、陽関数より陰関数の方が表現力が高いとされる
            • 陽関数で表せない陰関数がある
              • y軸に平行な直線を表現できない
        • シンタックスの解釈と人間の目の解釈の違い
        • 可塑性
          • 途中で色を変えたい、点線にしたい、曲げたい
    • 個人的なモチベーションとしては、色や形をもっと自由に扱いたい
      • ProcessingなどのAPIでは円や四角が既に定義されており、それの描画を組み合わせる
        • あくまで描画だけであり、重なった点を抽出したり領域を塗りたかったりしても、別途形状を定義して計算しなくてはならない
        • 実体があるオブジェのように扱うにはさまざまなプログラムを書く必要がある
  • Creative Codingを支える技術

    • ProcessingやopenFrameworksなどはOpenGLの糖衣構文なり、すぐに視覚的表現が使えるような環境
      • 言語としてメンタルモデルを作るようなものではない
        • グラフィックプログラミング一般的なアルゴリズムに即したもの
      • Design By Numbersは紙とペンというメタファー
      • Paper.jsはデザイナーのメンタルモデルに合わせて作っている
        • 博士論文で自分なりのモデルや計算系を作り、人の認知変容を起こすことを目的にする
      • Pts.jsは線形代数
      • Context Free Art
  • Generative Art

    • 解析的に作られているか数値的(実験的)に作られているかで何らかの分類は可能か
      • この言葉選びが正確かどうかがわからないが、言いたいことを具体例で挙げると
        • 幅100px、高さ100pxの描画領域に、x=0, y=0に1px四方の正方形を描く
        • 毎フレームx座標に+1、y座標に+1動かす
      • というものがあったとして、初期値を与えて指定フレーム分進め、結果を観察することもできるが、これはx=yという式の変数に値を入れてプロットしたものと同じである
        • 逐次実行して結果を表示するものと、すでに結果を知った上でコードにすることの違い
          • データビジュアライゼーションでもexplanatory(説明的)なものとexplorately(探求的)なものがある
            • explanatoryは分かりやすく伝えるために視覚化する
            • exploratelyは何か洞察を得るために視覚化する
      • オブジェクト指向と関数型
      • 決定論
      • 解析的解法と数値的解法
        • 解析的解法が数学的に綺麗とはどういうことか
        • 数値的解法
    • 生成という言葉を簡単に使いがち
      • 何を持って生成とするか
      • 数学における生成
        • R・トム『構造安定性と形態形成』
        • 群における生成元
        • 線形代数の生成系
      • 美術における生成
        • 生命っぽいものを感じるかどうか?
          • 向井周太郎『生とデザイン』
      • これは六角形の各辺の中点を繋いで形を作っていて生成っぽい
      • アルゴリズムの可視化、美術的な技法のシミュレーションの先にある計算された自然さ
        • 未知なる生き物の柄、形態
        • 自己組織化
        • 最適化
    • 画像編集ソフトの機能や効果を使うこととグラフィックライブラリのAPIを使うことの違い
      • 結局は数学に回収されるのか
      • アルゴリズムの選択、考案
      • データ構造
        • 2分木など
          • C言語であれば構造体に2つの変数を持たせて繋いでいく構造で、メンタルモデルとして木をイメージする
      • デジタル・マテリアリズム
      • 直接対象に触れず、コードを介して行う
        • WYSIWYGでない
    • 美術、美学との接点があるもの
      • 点・線・面の定義とその構成
        • 例えば画面や紙に線を引くとすると、次にどこにどんな線を引くかは前の状態に引きずられる
          • 繰り返し処理で一括処理するとそこが考慮されない
          • コンピュータや機械はそのようにプログラムしない限りは以前の状態に引きずられない
        • コンピュータ上でどうモデリングするか
          • そこに作家性が表れるのではないか
      • ソクラテス「形の美」
        • 「何かとのかかわりで美しい」ものと対比「それ自体で美しい」
          • 幾何学図形
      • プラトン「学びに伴う快」
        • 最も重視されるべきは「正しさ」という規準であって「快」という規準ではない
      • アリストテレス「すべての人間的事柄」は「疲労する」ゆえに「持続的ではありえない」
        • 快も持続的でないが、固有の快は活動を促進する
          • 活動は減退せざるをえないとはいえ、活動に伴う快はかえって活動の持続を促す
          • 好きこそものの上手なれ
      • 遠近法など世界の見方を反映したもの
      • キュビズム、印象派、表現主義などの主義や形式による分類
      • 美術においては写実表現の時代が長い
        • 幾何学形態を描くのは事件だった
      • 中西夏之
        • 似たような画面上の現象が一定の規則の中で新たに新たに繰り返されている。一定でありながら何かが新たに、新たになっている。滝のかたちは一定のかたちを保ちながら水はいつも新しい水が流れているように。

      • ファインアートなど、コンピュータを使用しない美術制作においては、目と手と作品が直結している
        • 油絵であればキャンバスに絵の具を塗ること
        • 彫刻であれば石や木を彫ること
        • 素直に対応させれば、エディタに書いたプログラムが作品ということになる
          • しかしそのように考える人は稀だと思う
            • 通常のプログラミングにおいては、コードの品質が重視される
          • ディスプレイに表示されたグラフィック、出力されたものが作品
            • そう考えると写真や映像に近い
              • 特定の媒体、手順を守らなければ存在しえない
          • 指示書、あるいはテキストが作品
        • 造形とアプローチが同義であるデザイン
          • Wim Crouwel
    • Golan Levinは紙からコードで作っている
      • https://twitter.com/golan/status/1472819559791013891
      • 現実の紙を模する必要はないと思うが、要素を自ら定義し構築するのは重要だと思う
      • 古堅真彦は「展覧会を開くとして、その一部をプログラムによって作る」という課題を出す
    • Philip Galanter
    • 長い時間をかけて形づくられていくもの
      • バスの車掌「時間」が溶けこんだ「工藝的なる声」柳宗悦

語源は?

  • ジョン前田『Creative Code』2004年
    • これに対するリスペクト?
  • Ira Greenberg『Processing: Creative Coding and Computational Art』 2007年

批評

  • あまり見かけないのは何故か
    • できる人が少ない
      • 技術が分からない
        • ツール一発でできることやクリシェと新奇性がある部分の見分けがつかない
          • 大量の作品を見るか、細かくシーンを追っていれば分かる部分もある
        • 松浦亜弥の『Yeah!めっちゃホリディ』をユリイカか何かで批評していた人が、「../」から「階層を上がる」という意味を全く受け取れていなくて、的外れな論を展開していた
          • それはそれで面白い誤読とも言えるが、間違いは間違い
      • どう評価するかの基準が不明
        • 単に目立つ人の名前が挙がるだけで批評性がない
        • 何を古典とするか
          • Computer Graphics and Art などのテキストを読む
      • アウトプットの美的な判断はできる
      • コードの善し悪しや実装の難易度は評価に含まれるのか
        • 美術における技法や技巧はどれくらい評価の対象になっているか
        • あるいはコード自体に詩的な要素が入っていたり、機知に富んでいたりすることが評価に値するのか
          • コードが読める人にしか評価できない
          • 詩が批評できるか
        • 動画における撮影や編集技術に近い感覚かも知れない
        • 良いアルゴリズム
          • 人間が読みやすい・理解しやすい
          • 未知の結果を、手順に従えば、誰でも得ることができる
          • たくさんのメモリを消費しない
          • 結果を得るまでの時間が短い
          • どんな入力に対しても必ず停止する
        • GRAPHIC DESIGN MANUALのThe dotをコード化
        • アルゴリズムのネタ的消費
    • そもそも美術の文脈で批評に耐えうる強度を持っていない
      • そんなことはないはず
    • generative art magazine ARTCODE
    • Marius Watz
    • 民藝運動のような既存の美術に対するオルタナティブになる可能性
    • というようなことを博士論文で書けると良いね

参考

リサーチ