loading

永良新「Shader in the CY――VJシステム〈GARA〉の開発に関するノート」

永良新「Shader in the CY――VJシステム〈GARA〉の開発に関するノート」

◆内容紹介

2026/7/31・8/1の「CY」でVJとしての鮮烈なデビューを飾った永良新によるVJシステム〈GARA〉の開発記をお届けする。明滅するピクセルの群れと交錯する人間模様が星座を成し、われわれの時間を照らしたあの日に至るまでの道のり。この記事の公開と同時にGitHub上に公開されたVJシステムを継承し、次に星々を結ぶのはあなたたちかもしれない。(編・てーく)

以下、記事の本文です。

地下

 

imagesを使っているとpresetsを呼び出すときにバグが生じるときがあります。至急直してください

2026年7月31日。北千住BUoYブイの地下スペース。コンクリートの柱と剥き出しの配管、湿った空気。低音は、床から来る。その一角のVJブースで、開演したライブの、アクトとアクトの狭間に、ぼくはこの一文をチャット欄に打ち込んだ。宛先は人間ではない。LLM――大規模言語モデル――である。正確には、Claude Codeという開発エージェント。

 

数分後、返信が来る。「原因は特定。修正して検証も済ませ、本番サーバーの中身も差し替え済。画面を読み込み直してください」――ぼくはブラウザをリロードし、直っていることを確かめ、フェーダーに手を戻す。ステージでは次のアクトのサウンドチェックが始まっている。

 

VJ――ヴィジュアル・ジョッキー――という職能について、先に説明しておく。DJが音でやることを、画でやる職能である。会場のスクリーンに、音に合わせて映像を流し続ける。曲が煽れば画も煽り、曲が引けば画も引く。基本的にあまり表舞台に出ることはないが、クラブやライブの、あの背後で明滅している映像には、リアルタイムで手を動かしている人間がいるのである。

 

そのVJのブースというのは、ふつう、完成したセットを持ち込む場所である。ぼくの場合は違った。持ち込んだのは55日前には存在しなかった自作のシステムで、それは開演中もなお書き換わり続けていた。

 

ソフトウェアの世界では、変更履歴のひと区切りを「コミット」と呼ぶ。原稿にたとえるなら、改稿を一回ぶん保存して、日付と摘要を添えて綴じておくことだ。会場のプロジェクタに映像を送り続けるMacBook Airの画面の隅で、その綴じ込みの時刻は、公演のタイムテーブルと並走していた。公演の2日間だけで、コミットは70個積まれた。

 

先に自己紹介をしておくと、ぼくは映像制作というものを一度もしたことがない。本業は漫画家である。ただし表向きは、anon pressのグラフィックデザイナー――それもエディトリアル、つまり本や誌面を組むほうのデザイナー――として動いている。ややこしいが、この文章に効いてくるのはデザイナーとしての手癖のほうなので、以下しばらく、そちらの顔で話す。

 

ちなみに、After Effectsという映像業界の標準ソフトには、触ったことすらない。VJの経験も、当然ゼロ。クラブにも学生時代に年一、二回行っていた程度で、今も知り合いに呼ばれたら行くくらいだ。ただひとつ、ウェブデザイナーでもあったので、「シェーダ」――後述するが、GPUで画面のピクセルを塗るプログラム――だけは、以前から少しだけ書いていた。

 

この文章は、そんないちデザイナーが、VJシステム「GARAガラ」をLLMと組んで自作し、anon press presents「CYサイ」という公演で使うまでの記録である。開発の話であり、道具の話であり、そして半分くらいは、失敗の話である。

 

誌面から画面へ

順序として、まずVJの話が先にあった。

 

anon pressは、ぼくがデザイナーとして関わっているSFメディアで、2026年7月31日と8月1日、トリビュート作品集『TOKYO CYBERPUNK TRIBUTE』物理版の刊行を記念したパーティ「CY」を開催することになっていた。

 

CYは「サイ」と読む。CYBERPUNKのCYであり、同時に、犀であり、祭であり、差異であり、彩である――さいは投げられた、くらいの勢いの名前だと思ってもらえばいい。会場は北千住BUoYの地下、2日で計12時間半。ライブアクトにDJ、インスタレーション、パフォーマンス、トーク。そのVJを、なぜかノリでぼくがやると言ってしまった。繰り返すが、映像制作の経験は一度もない。

 

まともな判断力があれば、ここでResolumeのような既製のVJソフトウェアを買う(このResolumeというソフトウェアの存在も今調べてはじめて知った)。世界中のVJが使っている定番で、何万人ものユーザーに踏み固められた道であり、本番で落ちる確率は自作より桁違いに低い。

 

このソフトにぼくが手を伸ばさなかった理由は、能書きを剥がせば単純で、After Effectsにすら触ったことのないぼくが、唯一「映像らしきもの」を作れる手段が、シェーダだけだったからである。既製ソフトの何が必要で何が必要じゃないのか、それを判断する知識すらない。わかるのはシェーダの書き方だけ。ならば、シェーダを核にした道具を自分で組むのが、遠回りに見えて最短である――と、当時のぼくは考えた。その見立ての正否は、この文章の最後まで保留しておく。なお「自作の装置が本番で落ちたらどうするのか」という当然の問いには、最後まで正面からの答えがなかった。答えの代わりに用意した大量の保険については、後の章で書く。

 

シェーダという土台には、あとから振り返って、二つの利点があった。

 

第一に、ライセンスの問題がない﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅。自分で書いた数式は、誰の権利も踏まない。VJという営みは、既製の映像素材を流すかぎり、常に他人の著作物との距離を測り続けることになる。数式から生成される画には、その測量が要らない。

 

第二に、重ねがけができる﹅﹅﹅﹅﹅﹅﹅﹅。シェーダの出力は、次のシェーダの入力になる。レンズを重ねた望遠鏡のように、エフェクトの上にエフェクトを、変換の上に変換を、いくらでも積める。本番では、1枚の画面に至るまでに24パスが重なっている瞬間もあった。それを回していたのが、VJをするにはあまりにも非力な、M2チップのMacBook Airである。非力な機体でも毎秒60枚を刷り続けられるよう、装置を痩せさせることも設計の一部だった。素材を「再生」するのではなく、画を毎フレーム「組版」し直す――エディトリアルデザイナーの手癖に、これほど合う土台もなかった。

 

文字を組み、図版を裁ち落とし、グリッドを敷いては崩す。誌面でやってきた操作が、そのまま時間軸の上で動いたら、それはもうVJなのではないか。静止した誌面しか作ったことのない人間の、うぬぼれである。そして、うぬぼれには根拠が、装置がいる。だから、作ることにした。

 

シェーダとは何か

本題に入る前に、この文章に繰り返し出てくる「シェーダ」という語の説明をしておく。ご存知の方は、この節ごと読み飛ばしてほしい。

 

シェーダとは、GPU――画面描画を専門とする計算装置。パソコンの中で、映像のためだけに働いている部品――の上で動く、小さなプログラムである。この文章で扱うのは正確には「フラグメントシェーダ」といい、その仕事はただひとつ。「画面上のこの位置のピクセルは﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅いま﹅﹅何色であるべきか﹅﹅﹅﹅﹅﹅﹅﹅?」という問いに、答えること。

 

たとえ話をする。フルHDの画面には、ピクセルが約207万個ある。シェーダとは、その207万人の塗り職人の全員に配られる、たった一枚の指示書である。職人は、自分の持ち場の住所(座標)と現在時刻だけを頼りに、指示書の数式を計算して、自分の一点を塗る。隣の職人とは相談しない。全員が同じ指示書を持ち、けれど全員が別の場所に立っているから、計算の結果は一人ひとり違う色になる――それが集まって、一枚の画になる。これを、毎秒60回、全員が一斉にやり直す。

 

動画ファイルとの違いは、印刷にたとえるとわかりやすい。動画とは、刷り上がった紙を束で保管しておいて、一枚ずつめくる方式である。シェーダは、版下はんしたと刷りの指示だけを持っておいて、毎回その場で刷る﹅﹅﹅﹅﹅﹅﹅﹅方式だ。だからファイルは数キロバイト――原稿用紙数枚ぶんの数式――しかないのに、二度と同じ模様の来ない映像が無限に出てくる。数式に時刻を混ぜれば画は動き、音量を混ぜれば音に反応し、座標の扱いをねじれば画面が渦を巻く。たとえば「現在時刻のサインを取って明るさに足す」と一行書くだけで、画面全体が呼吸のように明滅を始める。一行でも、もう映像なのである。

 

そして重要なのは、このフラグメントシェーダの周りに、四半世紀ものの文化が堆積していることである。

 

源流にはデモシーン――数キロバイトという極端な容量制限の中で、実行ファイル一つから音楽つきの映像を生成してみせる、1980年代からのプログラマたちの競技文化――がある。その血を引いて、2011年頃に「GLSL Sandbox」が現れた。ブラウザでシェーダを書くと、その場で動き、URLがそのまま作品になる。コードは剥き出しで、誰でも他人の作品を複製して書き換えられる。続いて2013年、「Shadertoy」が立ち上がる。デモシーンの伝説的な書き手Iñigo Quilezらが作ったこのサイトには、世界中の書き手による作品――数式だけで描かれた炎、海、雲、都市、生命――が集積していて、そのほぼすべてが、コードを読める状態で公開されている。数式で立体を彫る技法も、ノイズで雲を湧かせる技法も、誰かが発見し、公開し、別の誰かが改良してきた。要するにこれは、数式の書き手たちの巨大な公開図書館ライブラリである。

 

ぼくが「少しだけ書いていた」シェーダも、この図書館で読み覚えたものだ。だからGARAは、Shadertoy形式とGLSL Sandbox形式のシェーダを、ほぼそのまま読み込めるように設計した。この装置は、あの共有文化の棚の上に立っている。つまりGARAとは、数式で毎瞬間刷り直される版画を、2枚重ねて混ぜるための印刷機であり――その版木の彫り方は、ほとんど全部、開かれた図書館で教わったものである。

 

2026年6月4日――VJ study開始

最初の投稿は6月4日に遡る。X(Twitter)に「VJ study」とだけ書いて、30秒の動画を上げた。

 

映っているのは、後に「GARA」になるものの前身――「hinotori-vj」である。もとはといえばVJのために作ったものですらない。EYRIEエイリーというプログレッシヴ・ジャズバンドが、手塚治虫『火の鳥』を題材にしたコンセプトアルバムを出しており、その収録曲の(ごく簡素な)PVのために組んだ装置だった。中身は、p5.js――絵を描くことに特化した、入門者にも人気のプログラミング道具――のスケッチが1本と、1,824行のフラグメントシェーダが1本。素材は「hinotori.png」、火の鳥の墨絵が1枚。画面に墨絵が敷かれ、その黒い線の上だけを、同心円状の弧が拍に合わせて回る。リングは拍のたびに抽選されて現れては消え、弧はリングごとに違う速度で滑走する。機能は、ほぼそれだけの装置だ。

 

VJの話が持ち上がったとき、ぼくの手元にあった「映像の実績」は、これひとつだった。だからGARAの系譜は、正確にはこうなる――一本のPVのための使い捨ての装置が、汎用のVJシステムへ育てられた。

 

「study」という語は謙遜ではなかった。BPM――音楽のテンポを表す数字。1分間に拍がいくつ打たれるか――に画を合わせるという行為の一切が、ぼくには習作だった。以後、公演当日までに「VJ study」の投稿は20本近くになる。習作を人前に晒しながら進めるのは、締切と観客がないと何も完成させられない人間の、ささやかな生存戦略である。

 

2026年6月8日――Initial commit

6月8日、hinotori-vjとは別に、新しいリポジトリ――プロジェクトの全ファイルと全変更履歴を収めた保管庫――を切った。最初のコミットには、こうある。

 

2026-06-08 Initial commit: VJ tool snapshot

ここからのGARAの育ち方は、生き物じみていた。餌をやるたびに、器官がひとつ増えるのである。最終的な姿を先に述べておく――映像スロットはAとBの2系統で、ミキサーのフェーダーを倒すように、2つの映像を混ぜ合わせる。スロットに入るのは、シェーダのビジュアルが117本と、コードで動く専用エンジンが16本、あわせて133種。ほかに、ループ動画の素材が28本。BPM同期、タップテンポ、マイク入力で音に画を反応させるオーディオリアクティブ、MIDIコントローラ対応、録画、プロジェクタ用の別窓出力。合成後の画には30種類を超えるポストFX――後がけのエフェクト――がかかる。付け加えると、このポストFXも、2枚の画の合成ミックスも、切替の遷移トランジションも、正体はすべてシェーダである。スロットに入る117本に、ポストFXやトランジション、Overlayのブラシ、各エンジン内部のぶんまで数えていくと、この装置のために書かれたシェーダは200本近くなる。

 

白状すれば、設計の根っこにあった理想は、もっと偏屈である。究極的には、シェーダだけで完結するVJソフトにしたかった。素材の動画を並べて再生する装置ではなく、全ピクセルに配られる一枚の指示書だけが、毎フレーム、その場で画を生む装置。実際、117本のシェーダは、合わせても写真数枚ぶんのテキストにすぎない。数キロバイトの数式が届きさえすれば、画はいつも現地で、上映のたびに新しく生まれる。素材を運ぶのではなく、レシピだけを運ぶ。後の章で装置は動画や図版を飲み込んで膨らんでいくが、あれは半分が理想への裏切りで、半分が締切のある人間の現実である。枝はずいぶん茂った。それでも幹は、いまもシェーダである。

 

そして、その実装がどうなっているかというと、以下の通りである。

 

フレームワーク、なし。フレームワークとは、ソフトウェアの世界の「建売の骨組み」である。間取りの定石が組み込み済みで、ふつうは何かしら使う。ビルドシステム、なし。ビルドとは、人間の書いた原稿を機械向けに組版・製版する工程で、現代のウェブ開発では「印刷所を通さないと刷れない」のが常識である。TypeScript、なし。これは誤植を組む前に見つけてくれる、校閲機能つきの原稿用紙のようなもの。それらを全部使わず、素のJavaScript――ブラウザがそのまま読める、生の原稿――が61,999行。うち本体のapp.jsというファイルが単体で17,600行。サーバー側は、レンタルサーバーに置いたPHPというプログラムがたった1枚で、番頭のように保存と同期だけを引き受けている。デプロイ――完成したファイルを本番のサーバーに運び込む作業――は、FTPという1970年代生まれの引っ越し便を使ったシェルスクリプトが1本。リポジトリの置き場所は、あろうことかDropboxの直下である。仕事用の共有フォルダに、原稿がそのまま置いてある状態だ。

 

2026年のエンジニア感覚からすれば、ほぼ全項目で赤点が入る構成だと思う。ただ、この構成には「ビルドが通らない」という状態が原理的に存在しない。印刷所を通さない手書きのビラは、書き上がった瞬間が完成品である。保存した瞬間のファイルが、そのまま本番。ライブという一回性の現場に持ち込む道具として、これは思いのほか、太い安心だった。

 

赤入れ

ところで、コミットの日付を数えると、55日のうち実際に手を動かした日は18日しかない。残りの37日は、本業の締切と生活である。序盤の6月に骨格を組み、中盤は数日おきに素材と機能を足し、最後の一週間で全体の4割を積んだ。締切のある人間の、見慣れた燃え方のグラフである。18日で6万行――この速度の説明として、もうひとつの事情がある。17,600行の単一ファイルは、正直、人間の保守能力を超えている。

 

Claude Codeについて説明しておく。チャット欄のついた開発道具で、中身はLLM――ChatGPTの同類――なのだが、ただ質問に答えるだけではない。「エージェント」と呼ばれるタイプの道具で、指示を受けると、自分でファイルを開き、コードを書き換え、動かして確かめ、サーバーに運び込むところまで、一連の作業を自分の判断でやり切る。人間のぼくがやることは、日本語で注文を言い、出てきた画を見て、駄目を出す。それだけである。GARAの187コミットのうち、ぼくが自分の手でコードを書いた行は、ほぼゼロ。実装と検証とデプロイは、すべてLLMがやった。

 

この関係は、デザイナーには馴染み深いものだった。要するに、校正こうせいである。上がってきたものに赤字あかじを入れる。トル。イキ。ここツメる。この色ではない。――55日間、ぼくがやり続けたのは、動く誌面への赤入れだった。ただしこの入稿先は、赤字を戻すと数分で再校を出してくる。しかも文句を言わない。終電もない。

 

任せ方の感触を、実例で示しておく。公演2日目の朝、ぼくはこう打っている。

 

imagesですが、drawモードのときのトランジションの間隔を選べるようにしてください。あと、droneモードのときは切り替えなしで。あと、imagesモードがアクティヴスロットになっているときだけ、そのスロットの画像をカーソルの左右で送れるようにしてください

三つの要求を一息に、しかも「drawモード」という、ぼくがその場で捏造ねつぞうした存在しない用語まじりで。数分後には三つとも動いていた。なおその数時間後、ぼくは「droneでもページ送りはありで」と前言を翻している。それも数分で反映された。校了間際の差し替えに嫌な顔をしない現場は、貴重である。

 

別の日には、こうも打っている。

 

Overlayにもmdなどと同じようにRandom🎲を付けてください

絵文字である。仕様書に絵文字を書く人間がどこにいるのか――ここにいる。なぜならそれで通じてしまうからだ。「他の機能に付いているあのサイコロのボタンと同じものを、こっちにも」という文脈を、相手はコードの側から読み取って実装する。つまり、注文の正確さよりも、注文の意図が通る速さで、開発が回っていく。会話がそのまま仕様書になり、コミットログがそのまま制作ノートになる。55日ぶんの会話ログは、この装置のもうひとつのソースコードである。

 

念のために書いておくと、この相棒は万能ではない。ふつうに間違えるし、こちらの言葉足らずは、そのまま誤読になって返ってくる。ただ、間違いの回転が速い。人間同士の外注なら一往復に三日かかる赤字の戻しが、ここでは三分で済む。品質より先に、回転数が仕事の構造を変える。うまくいかない実装は「直させる」より「三回作り直させて選ぶ」ほうが早い――そういう、人間相手には失礼で不可能な進め方が、ここでは標準になる。

 

増殖

6月から7月にかけて、GARAは素材と機能を飲み込みながら膨らんでいった。飲み込まれたものを、四つに分けて書く。

 

  1. 図版。MANGAモードは、漫画のコマをDelaunay三角形分割――ばらまいた点のあいだを、できるだけ均整のとれた三角形の網で繋ぐ数学の手法。ステンドグラスの鉛線のような網ができる――で砕いては、コラージュし続ける装置である。コマは285枚。出典は手塚治虫『火の鳥』――前身のhinotori-vjから続く縁で、EYRIEに関わるVJで使うことに限って、許可をいただいている素材である。つまりこのモードは、装置の中にありながら、EYRIEのステージのためだけの一室ということになる。コマはビートのたびに撃ち込まれ、Enterキーを押し続けると連射される――この機能の内部名は「機関銃掃射マシンガン」という。裁ち落とし、トリミング、面付け。誌面でやってきた操作が、毎秒60回の速度で暴走する。ほかにも、写真をランダムな矩形に千切って3D空間に浮かべるPHOTOPLANE、画像を層状に重ねるLAYER、フォルダの画像をただ順繰りに全画面表示するIMAGE――この最後の、いちばん芸のない一本が、本番ではいちばん頼りになった。

  2. 文字。TEXT DEFORM、うごめき、SPACE TYPE、NOVEL。文字列を組んでは歪め、3D空間に彫刻し、画面のうえに流す4兄弟である。エディトリアルデザイナーがVJ装置を自作すると、モード一覧の4分の1がタイポグラフィになる。そういうものだと思う。たとえばNOVELには、小説を丸ごと流し込める。画面は端末ターミナルになり、テキストが猛烈な打鍵の速度で流れていく。ライブの最中、観客の頭上を、誰にも読み切れない速度で小説が通過していく――読めないのに、たしかにそこに文章がある、という画は、思いのほか強い。

    この文字系のコードを足すきっかけになったのは、anon pressのsynomareくんが作った「Type deformer」――文字を変形させるツール――の影響である。人の作った道具に触発されて、自分の装置に文字の血が入った。そしてぼくはぼくで、開発の過程でsynomareくんや、CY一日目に出演した灰街令さん、そして二日目のSecret GuestのVJとしてパフォーマンスをお願いした小林健太くんにも、ツールメイキングそのもののおもしろさを勧めて回っていた。作品を作るより一段手前――作品を作るための道具を作る――の楽しさは、どうやら伝染する(この記事も感染爆発パンデミックを起こすつもりで書いてはいる)。

    素材のテキストは、テキストごとに変形パラメータを保存できるようにした。このテキストにはこの崩し方、という対応は、本文書体の選定と同じで、作品ごとに固有だからである。詩には詩の崩れ方が、小説には小説の崩れ方がある。ここで難敵だったのがUnicodeの豆腐――コンピュータにその文字のかたち(グリフ)が入っておらず、□という白い豆腐が並んでしまう現象――だった。ライブで流すテキストには異体字も記号も絵文字も混ざる。最終的には全モードのフォント指定の末尾にUnifontという、世界中の文字を8×16ピクセルで網羅した無骨なビットマップフォントを敷いて解決した。どの書体にも見放された文字だけが、この最後の網に受け止められてドット絵の姿で現れる。サイバーパンクを掲げるイベントの文字表示の最後のとりでが、1998年生まれのビットマップフォントだった。

  3. 動画。VIDEOモードはmp4のループ素材を流す。素材の動画は、自分で描いたイラストやグラフィックをMidjourneyに食わせて生成した。ここは正直に書いておきたいのだが、これは省力化というより、不能の埋め合わせである。ぼくは一枚絵しか作れない。誌面のために止まった画を組むことはできても、その画を自力で動かす術は、ひとつも持っていない。だから、自分の絵がモーターを与えられてぬるりと動き出すのを最初に見たときは、技術的な感慨より先に、単純な喜びが来た。動かないものしか作れなかった人間の、ささやかな義肢ぎしである。

    機能の側で効いたのは、再生そのものより、兵站へいたん――運用の自動化である。moviesフォルダに動画を放り込んでデプロイスクリプトを叩くと、自動で圧縮され、原本が退避され、一覧に登録される。画像フォルダも同様で、フォルダを作って画像を置けば、それだけで画面に出せるようになる。ライブ前夜に素材を追加する人間にとって、「置くだけ」と「登録作業が要る」の差は、睡眠時間の差である。

  4. 借り物。シェーダ117本のうち十数本は、Shadertoy――先の公開図書館――からの移植に始まる。初期のログには「H24」「H27」といった管理番号が並んでいて、借りてきた作品が改造されて別物になっていく過程が、そのまま履歴に残っている。6月9日から10日にかけての2日間だけでも、こうだ。

    H24は4次元の超立方体テッセラクトの回転体になった。H25は磨りガラスの材質を与えられ、残像を引くようになった。H27――クロームの管が流れるトンネル――は肋骨に置き換えられ、翌日には「肋骨をティラノ型に作り直し」というコミットとともに、ティラノサウルスの胸郭をくぐるトンネルになった。H34は骨の足場スキャフォールドを組んだ「Bone Tunnel」として新造され、H39、H40と移植は続く。番号は最終的にH57を超える。図書館で借りた本に、遠慮なく書き込みをしていくような日々である。

    ただし、借り物には返し方の作法がある。6月10日、開発3日目のログにこうある。

H35 を自前実装に置換 (似た見た目・ライセンスフリー)

H35は液体金属のシェーダで、気に入って配色まで調整していたのだが、原作のライセンスでは持ち出せない。だから、似た見た目の別物をゼロから書き直した。地味な作業だが、これを初週からやっていたことが、後で効いてくる。借りたものは返す。返せないなら、自分で作る。

 

Post FX

Post FX――合成後の画にかける後処理――の棚も、のぞけるだけ覗いておく。エフェクトには実装した人間(AI)と注文した人間(ぼく)の性癖が出る。

 

Feedbackは、直前のコマの画を今のコマに薄く混ぜ込む残像装置で、ズームと回転を仕込むと、合わせ鏡の奥に吸い込まれるように画面が渦を巻いて崩壊していく。Datamoshは、壊れた動画配信の画面を偽装する。圧縮動画が壊れたときのあの独特の、動きの軌跡だけがずるずると塗り残される崩れ方を、健全な画面の上でわざと再現する。KaiserOrigamiは画面を紙のように折る。Pollockは画面を溶かして絵具の飛沫ひまつに変える。Barcodeは画を縞に走査して明滅させる。Boltzmannは画面を粒子に分解して溶かす――切替の瞬間に前の画を「溶かして」次に繋ぐ場面転換としても使う。

 

Feedback
Datamosh
Origami
Kaiser
Pollock
Barcode
Boltzmann

色の系も書いておく。Grad Mapは、画面の明暗だけを残して、色をパレットで刷り直す機能である。どんな極彩色の画も、グラデーションの帯を差し替えるだけで、単色の版画にも、毒々しいネオンにも化ける。誌面でいえば特色刷り――CMYKを捨てて、インキを2色だけ選び直すような操作だ。Hue Shiftは、画面全体の色相環をぐるりと回す。この2つは常に「その場がけ」で、値を戻せばいつでも元の色に帰れる。そう作り直した経緯は、後の章で書く。

 

Grad Map

それから、Overlay。これはFXというより筆である。画面のピクセルを筆先で拾い、ビートに同期して、画面の上にストローク――WARP、RISE、SMEAR、SMUDGE――を撒き散らす。

 

IMAGON

実はこの筆には、もうひとつの出自がある。GARAより先、5月31日に、ぼくは「IMAGONイマゴン」というツールを公開していた(imagon.app)。ブラウザで動く画像加工ツールで、読み込んだ画像をGLASS、RISE、WARP、SPIKE、SMUDGEといったブラシでこすり、歪め、滲ませる――画像の表面を、ガラス越しに指の腹で撫でたり、内側からとげで押し上げたりする、静止画のための変形専門の筆箱である。筆先も丸、平、Gペン、指と切り替えられる。

 

このIMAGONこそ、ぼくがLLMと組んで作った最初のツールだった。着手は5月下旬。つまりGARAの55日が始まる前に、ぼくは1週間ほどの助走で、LLMとの道具作りを一度通しで経験していたことになる。日本語で注文し、画で駄目を出し、即デプロイする――GARAの開発体制は、そっくりそのままIMAGONで組んだ型の再利用である。構成も同じ思想で、本体はindex.htmlというファイルが1枚、1,920行。ビルドなし。それどころか調子に乗って、CapacitorというラッパーでiPhoneとAndroidのアプリ化まで試している。スマホの指先でSMUDGEを引くと、これがけっこう、気持ちいいのである。

 

GARAのOverlayは、このIMAGONのブラシエンジンをビート同期に改造して積んだものだ。つまりGARAの系譜図には、hinotori-vjと並んでもう一本の前身が刺さっている。静止画を歪める筆(IMAGON)と、墨絵の上を回るリング(hinotori-vj)。二つの小さな装置が合流して、VJシステムになった。

 

IMAGONはいまもβ版のまま公開されていて、ときどき、見知らぬ誰かが作った画像がハッシュタグ付きで流れてくる。7月21日にも一枚流れてきて、ぼくは「うおおおおおおお! 美しい。ご利用いただきありがとうございます!」とだけ返信している。自分の道具の中で、他人の手が動いている。この感覚については、最後の章でもう一度書く。

 

ぼくがVJでいちばん多用したブラシはSMUDGE、指でこすったような滲みで、要するに、湿った画面に指を突っ込みたかったのだと思う。静止した誌面では、それは許されていない。

 

Warp
Smear
Swoosh
Smudge (平筆)

これらすべてが、MIDIコントローラに割り付けられる。MIDIコントローラとは、つまみとボタンとフェーダーだけが並んだ、画面を持たない操作盤である。楽器店で売っている。盤上のつまみとソフトの中のパラメータを紐付けておくと、マウスでスライダーを探す代わりに、手が直接パラメータを握れる。ぼくが使ったNovation Launch Control XL 3には、無限に回り続けるつまみが24個並んでいて、その白い盤面が、動く誌面の版面はんづら指定になった。

 

装置には、耳も付けた。

 

ステージの音がVJブースまで配線で届くとは限らない。だからGARAは、MacBookの内蔵マイクで会場の音をそのまま拾う。拾った音は低い帯域と高い帯域に分けられ、音量の波はなだらかに均されて、各シェーダに配られる。キックが鳴れば画面が脈打ち、上物が騒げば粒子が散る――数式のどこに音を差し込むかは、シェーダ一本ごとの設計である。

 

もっとも、マイク入力というのは野蛮な信号でもある。会場のPAの音圧は、自宅の机の上とはまるで違う。歓声も拍手もMCも、機械には等しく「音」として飛び込んでくる。だから感度と閾値いきちの調整を操作盤に出しておき、当日、会場の爆音の中でつまみを回して合わせた。サウンドチェックという言葉があるが、あの時間はぼくにとって、バンドの音作りと同じ意味での、装置の耳作りだった。

 

音への反応のさせ方には、二つの人格を用意した。beatは拍で画面を蹴る人格。droneは持続音にゆっくり揺れる人格。Dキーひとつで切り替える。アンビエントのアクトの背後で、画面だけが律儀に拍を刻んでいたら間抜けだからである。

 

拍のほうは、タップテンポで掴む。曲に合わせてTキーを数回叩くと、装置がテンポを割り出す。以後、画面の明滅も、コマの撃ち込みも、ブラシの一撃も、すべてその拍に乗る。DJがテンポを揺らせば、Tを叩き直して追いかける。機械に耳は付けられたが、拍を数える腰は、まだ人間の仕事である。

 

規律

任せる、とはいえ、渡さなかった領域がある。開発の中盤から、ぼくとAIの間には不文律が固まっていった。

 

説明しておくと、GARAには「プリセット」という仕組みがある。動機は単純で、アーティストごとに出す画をあらかじめ組んで、テンプレートとして取っておきたかっただけである。いま画面に出ている画――どのシェーダを、どんなパラメータで、どんな色で――を丸ごと保存し、本番、そのアクトが始まる前にワンタッチで呼び出す。装置の記憶の中枢である。

 

第一の不文律は、シェーダの工場出荷値はAIが変えない。 調整の流れでAIが「良かれと思って」既定値を書き換えると、その値を前提に保存された過去のプリセットの画が、全部変わってしまう。既定値の変更は人間の確定操作だけに限る、と決めた。

 

第二に、保存したプリセットには﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅その時点のシェーダのソースコードをまるごと焼き込む﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅。 後から元のシェーダを改造しても、保存済みの画は保存時のまま再現される。写真に写した料理は、レシピを後で書き換えても変わらない――そういう保存の仕方である。

 

要するに、「いま」の探索は大胆に任せ、「過去」の再現性は制度で守る。校正で言えば、ゲラにはいくら赤を入れてもいいが、校了紙には触らない、ということだ。この規律は、後の章の主題にそのまま流れ込む。

 

箱に詰める

7月12日、開発折り返しのあたりで、ひとつの節目がある。

 

07/12 Add Electron desktop app (mac/win standalone build)

GARAはブラウザで動くウェブアプリだが、この日、Electron――ウェブ技術で作ったものを、ふつうのデスクトップアプリとして梱包する枠組み――で、macとWindowsのスタンドアロンアプリにもなった。動機は単純で、本番でブラウザのタブに命運を預けたくなかったからである。誤操作でタブを閉じる、アップデートの通知が出る、拡張機能が割り込む。ブラウザは日常の道具であって、舞台の道具ではない。

 

ところが、箱に詰めた途端に新しい敵が現れた。Windowsである。

 

手元のWindows機で走らせると、重いシェーダを開いた瞬間に画面が凍り、数秒後にドライバごと再起動がかかる。調べると、Windowsのグラフィックには「2秒応答がなければGPUを強制リセットする」という保安装置があった。ブレーカーである。ブレーカー自体は正しい。問題は、ブラウザ由来の描画層がシェーダをWindowsの言葉(DirectX)に翻訳してから渡していることで、この翻訳者がくせ者だった。シェーダの中の繰り返し処理を、几帳面に全部ほどいて書き下してから翻訳するため、翻訳量が爆発する。「10回繰り返せ」という一行の指示を、同じ文を10回書き写して渡すようなものだ。macでは3秒で通るシェーダが、Windowsでは翻訳の途中でブレーカーに撃たれる。対策は、シェーダの書き方そのものを翻訳者に優しい形に改めること――繰り返しの上限を刻み、書き下されても死なない粒度に砕くこと。7月12日のログにある「Windows/ANGLE reliability fixes」の一行は、そういう地味な戦いの墓碑である。

 

最終的にアプリは、動画も画像もシェーダも全素材を抱き込んで486MBになった。公演直前には、生存のための仕掛けを重ねた。描画のプロセスが死んだら数秒で自動再読込。1分間に3回死ぬような重体なら、アプリごと再起動。45秒応答が消えたら監視役が異常と判定。落ちても、ウィンドウの位置も大きさも作業状態も、直前の姿のまま蘇る自動復旧リカバリ。そして終了操作の誤爆に対する確認――「本当に終了しますか?」。装置は、落ちない前提ではなく、落ちても客席から気づかれない前提で組んだ。VJの現場で一番怖いのは、派手なバグではない。ウィンドウを閉じるショートカットの上に置かれた、自分の左手である。

 

死なない

公演前日の7月30日、この日だけでコミットは46個積まれた。オフライン対策、プリセットの整理、素材の追加。そして日付が変わった未明、ぼくはチャットにこう書いている。「明日(というか今日)が本番なので」。ここから本番までの48時間に積まれた70コミットの大半は、新機能ではない。ライブ中に死なないためのコミット﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅である。戦況を報告する。

 

会場のWi-Fiは弱い。 GARAはプリセットやパレットをサーバーと同期シンクする作りで、ネットが死ぬと記憶を失う。事前情報で会場の電波が細いことはわかっていた。よそのサーバーから借りていた部品を全部手元に同梱し、サーバーに繋がらないときは手元の控えで動くよう改修し、最後には動画も画像もシェーダも全部を486MBのアプリに焼き込んだ。ネットワークという変数を、消した。信頼性は足し算ではなく引き算で作る。

 

消したプリセットが、蘇る。 前日に発覚した怪奇現象である。削除したプリセットが、リロードするたび一覧に戻ってくる。調べると二段構えだった。開きっぱなしの古いタブが、記憶している古い一覧をサーバーへ書き戻して、死者を蘇生させていた。対策として削除時に墓標トゥームストーン――「これは意図して消したのだ」という記録――を立て、同期のたびに照合する方式を入れた。それでも直らない。さらに掘ると、サーバー側に昔置いた「一覧が大幅に減る保存は事故とみなして拒否する」という安全装置が、墓標による正当な埋葬まで拒否していた。安全装置同士が衝突して﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅幽霊ゴーストを保護していた。 本番当日の昼、サーバーには墓標と一致する死者が11体並んでいた。「これは意図した削除である」という署名を添えて葬り直し、ようやく成仏した。

 

色は、戻れなければならない。 GARAの色相ヒューシフト――画面全体の色味を、色相環に沿ってぐるりと回す機能――は当初、「回して決定した瞬間に色を焼き込む」仕様だった。画像編集なら妥当でも、ライブでは致命的だ。一度回すと、元の色に二度と戻れない。初日の朝、この仕様を捨てた。色相回転は常時その場がけ――ノブを戻せば色も戻る。幸い色相回転は数学的に素直な変換で、回してから混ぜても、混ぜてから回しても、同じ色になる。数学に救われた。ライブの操作は可逆でなければならない。戻れない操作は、操作ではなく事故と呼ぶ。

 

Hue Shift

記憶は、端末に囚われる。 ブラウザ版とアプリ版でMIDIの割当が食い違う。設定を保存したのに別の端末に反映されない。原因はすべて同じで、それぞれの端末が自分専用に持つ引き出しローカルストレージに、共有すべき状態を置いていたことだった。引き出しは便利だが、隣の机からは開けられない。MIDIの割当、保存デフォルト、諸々の設定を片端からサーバー同期に載せ替え、どの端末を「正」とするかを明示するPush/Pullボタンまで付けた。組版データの「どれが最新版か問題」は、印刷所とのやりとりで散々やった。動く誌面でも、結局同じ問題を踏むのだった。

 

アクティブスロットは、絶対に間違えたくない。 公演2日目の朝の、ぼくの発言そのままである。GARAは操作対象スロット(AかB)を選んでからパラメータを触るのだが、「メイン画面をクリックすると操作対象がAに戻る」という初期からの親切機能が、ドラッグ操作の終わりやウィンドウの切り替えクリックのたびに発動していた。Bを触っているつもりで、いつのまにかAを触っている。ミキサーで言えば、目を離した隙に手元のフェーダーが別のチャンネルに繋ぎ替わっているようなものだ。対処は切除の一手――以後、スロットが替わるのは明示的なボタンとキーだけになった。ライブの現場では﹅﹅﹅﹅﹅﹅﹅﹅賢い自動より愚直な不動のほうが優しい﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅。 この一文には、教訓として傍点を打っておく。

 

亡霊はバッファに棲む。 「パラメータをいじると、以前表示していた無関係の映像が一瞬映る」という怪談めいた報告を、ぼくは2日目に上げた。犯人は残像エフェクトの内部バッファ。エフェクトを切った時点の映像を裏で保持し続け、数十分後にノブを上げた瞬間、しまい込まれていた過去がフラッシュバックする。修正は一行に要約できる。スイッチを切ったら、記憶も消す。

 

画面の裏の、余計な親切。 「動画が反応しなくなるときがある」という報告の犯人は、ぼくでもAIでもなく、ブラウザエンジンだった。プロジェクタ出力を全画面にすると、手元のメインウィンドウはその裏に隠れる。するとブラウザエンジンは「このウィンドウは誰も見ていない」と判定し、電力節約のために、音声のない動画――Movie素材は全部そうだ――を静かに一時停止する。シェーダは動き続けるのに、動画だけが止まる。日常のブラウジングでは美徳である省電力機能が、舞台では妨害工作になる。「隠れていても全力で動け」という設定を掘り出して封じた。道具を日常から舞台へ持ち込むというのは、こういうしつけの総取り替えなのだと思う。

 

抜けられない検索バー。 ビジュアルの検索バーはEnterキーで文字入力に入る仕様だった。ところが、入ったが最後、EnterでもEscでも出られない。しかも文字入力の最中は、SpaceもTも数字キーも、ショートカットの全部がただの文字として吸い込まれる。つまりEnterの誤爆一発で、装置全体が「文字を打つだけの箱」に化ける。原因は、キー処理の順序――「入力欄にいるときはショートカットを無視する」という門番が、「Enterで入力欄から出る」という脱出路より手前に立っていた。門番が脱出路を封鎖していたのである。こういうバグは、機能一覧には決して現れない。押すべきでないキーを押した人間だけが落ちる穴で、ライブ中の人間は、押すべきでないキーを必ず押す。

 

冒頭のバグの正体。 開演中に打った「presetsを呼び出すときにバグが生じる」の犯人も、書いておく。プリセットを呼び出した瞬間、画像モードが素材を読み込み直し、同時に切替の遷移トランジションが二重に発火して、状態が濁る――単体では無害な二つの処理が、同時に走ると事故になる。交差点で、青信号が二方向に同時に出ていたようなものだ。信号機の順序をひとつ直して、解決した。そのほか、抄録。アプリの二重起動で保存領域が別物になり、全設定が消えたように見える罠。MIDIコンが認識されない、という報告に至っては、ソフトの問題ですらなかった――システムの深部まで調べたAIの診断の結果、USBケーブルが抜けていた。「挿し直してください」というAIの診断を、人間が実行した。

 

目に見える機能は、開発の半分でしかない。残り半分は、見えない床板を一枚ずつ踏んで確かめる作業である。55日のうち、少なくとも10日ぶんは床板だった。

 

2026年7月31日――円環

初日の開場は16時30分。その3時間前、13時37分のコミットログに、こうある。

 

07/31 13:37 Hinotori Rings シェーダ追加 (旧 hinotori-vj の同心円リング移植)

会場入り前の隙間で、ぼくはひとつだけ「攻め」の注文をしていた。

 

hinotori.pngを読み込んで、その上を同心円状に回る線のシェーダがあったと思うのですが、それをシェーダモードとして実装してください

――前身hinotori-vjの、あのリングである。AIは旧フォルダから1,824行のシェーダを発掘し、リングの抽選、速度の異なる弧の滑走、拍頭のフラッシュといったロジックを、GARAの新しい基盤に移植した。墨絵の透過部分は透過のまま抜け、スロットBに置けば、他の映像の上に黒い線と色付きの弧だけが重なる。名前は「Hinotori Rings」。もっとも、移植の一発目では墨絵が上下逆さまに出た。画像の縦軸をどちら向きに数えるかという約束事が、旧装置と新基盤で逆だったのである。「画像が上下反転している」と赤字を入れ、数分後、火の鳥は正位置に戻った。

 

この移植には、もうひとつの因縁が畳み込まれている。hinotori-vjは、EYRIEの『火の鳥』コンセプトアルバムのPVのために作った装置だった。そしてこの日――7月31日――のCY初日のステージには、そのEYRIEが立つのである。一本のPVのための使い捨ての装置が、汎用のVJシステムに育ち、元の依頼主が出演する公演の機材として帰ってくる。6月4日にすべてが始まった一枚の墨絵と一本のシェーダは、公演初日、133番目のビジュアルとして装置に戻ってきた。GARAは前身を飲み込んで、円環を閉じた。画題が、死んでは蘇る火の鳥であることの出来すぎは、ぼくのせいではない。

 

開場

そして7月31日16時30分、CY開幕。初日の出演はEYRIE、諭吉佳作/men、kidlit、灰街令はいまちれい、Shuta Hiraki。VJはぼくのほかに、yonayona graphics、米澤柊よねざわしゅう、そしてSecret Guest。

 

GARAのmoviesフォルダには、いまも出演者の名を冠したファイルが並んでいる。kidlit.mp4。haimachi.mp4。tcpt.mp4――『TOKYO CYBERPUNK TRIBUTE』の頭字語である。アクトごとに画を仕込む作業は、特集ごとに扉ページを組む仕事に似ていた。その人の音のための、その人の画。

 

内心の話をする。やるべきことはやった、と思っていた。同時に、ずっと不安だった。この装置はUIの挙動の一枚一枚まで含めて自作――市販ソフトなら何万人が踏み固めた床を、ぼくとLLMの二人しか歩いていない。穴がないはずがない。実際、あった。開演後の18時10分と18時27分に、修正のコミットが刻まれている。冒頭の場面――開演中のバグ報告――である。

 

ところが不思議なことに、緊張はまるでしなかった。一周回って、という言い方がいちばん近い。不安の総量がある閾値いきちを超えると、人は緊張という贅沢な機能を手放すらしい。

 

そして、これは書いておかなければならないのだが――前半のぼくは、演者として端的に下手だった。ミスを多発した。切るべきでない画を切り、出すべきでない画を出した。映像制作経験ゼロの人間が、道具だけ55日で仕上げて、演奏の技術が付いてくるはずもない。ミスの中身は、いま思えばぜんぶ「出しすぎ」である。素人は、足すことしかできない。画面が忙しければ、仕事をした気になれるからだ。それが後半、ほとんど破綻なくやれるようになったのは、隣でVJをしていたyonayona graphicsさんのおかげである。スイッチャー――複数のVJの映像のどれをスクリーンに出すかを切り替える機材――でぼくの画と自分の画を行き来させ、混ぜる「かけ合い」のVJをしながら、実演でぼくに教えてくれた。ここで引く。ここで重ねる。ここでは、何も出さない。スクリーンの中で自分の画とyonayonaさんのグラフィックが混ざるのを見ながら、ぼくは55日間AIとペアで装置を作ってきて、最後の最後、VJという行為そのものは人間とのペアで教わっているのだった。今回の公演でいちばん楽しかった時間を挙げるなら、ここになる。

 

2026年8月1日――感動

2日目は12時30分開場。r0tten、lil peace、MON/KU、HAIZAI AUDIO、JACKSON kaki、UNCIVILIZED GIRLS MEMORY、Yaporigami、夢咲みちる。この日のぼくの行動は、コミットログとチャットログで分単位に再構成できる。抜粋する。

 

  • 00:45 前夜の撤収後。「シェーダが減っている」「Slot Bが変えられない」という初日に踏んだ穴をまとめて修正

  • 「imagesですが、drawモードのときの――」の三連注文。前夜のライブで欲しくなった操作を、開場前に実装させる。あわせて新しいループ素材(system.mp4)を追加――フォルダに置いてスクリプトを叩くだけである

  • 09:40 「昔の映像が一瞬混ざる」――残像エフェクトの亡霊バッファを成仏させる

  • 09:49 プロジェクタ出力のFキー全画面切替を実装(会場のプロジェクタ運用に合わせて)

  • 11:07 「アクティブスロットは絶対間違えたくない」――暗黙のスロット切替を切除

  • 午後 会場入り。「今ライブ会場にいます。適切なAudio FXのパラメータを探りたいです」と打つ。マイクが拾う会場のPAの音圧に合わせて、音声検知の感度を詰めていく。装置のチューニングとサウンドチェックが、同じ時間帯に同じ場所で走る

  • 14:37 プロジェクタ全画面中に動画だけ止まる省電力問題を修正

  • 15:35 「VJ中に特定の操作ができなくなるなど、問題がありそうなところがあれば今のうちに直してください」――個別のバグ報告ではなく、まだ起きていない事故を探せ﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅﹅という注文に切り替える。AIは監査用の分身エージェントを並列に走らせ、6万行を総ざらいする。描画を凍らせる確認ダイアログが2箇所。無限再起動に陥り得るループが1つ。ウィンドウを閉じる誤爆でショーが止まる経路。アプリ版で名前の変更が一切無反応だった箇所が4つ

  • 15:46 監査で確定した残り4件を修正、デプロイ

  • その直後 ぼくはチャットに「もうどのくらいかかりそうですか?」と打ち、続けてこう打った。「ライブが始まります﹅﹅﹅﹅﹅﹅﹅﹅﹅

以後、この日のコミットは止まる。装置は凍結フリーズされ、あとは人間の仕事だった。

 

UNCIVILIZED GIRLS MEMORYのパフォーマンスは録画も忘れて見た。そしてYaporigamiさんのステージのSecret Guest VJは、小林健太くんだった。

 

このステージには、仕込みがある。ぼくは開発の途中で、小林くんにGARAのソースコードを渡していた。ツールメイキングの楽しさは、かねて彼と共有していたものだったし、この装置はもともと公開するつもりだったし、なにより――彼なら、ほとんど別物に作り変えてくれるだろうと考えていたからである。実際、そうなった。彼は骨格スケルトンだけを残してほぼすべてを作り替えた別のVJシステム「STREAM」を、本番までに実装して会場に持ってきた。渡してから、一週間も経っていなかったと思う。

 

そして当日。彼は、ぼくよりすごいVJを見せた。悔しさより先に来たのは、たぶん道具を作った人間にしかわからない種類の喜びで、ぼくはVJ卓の横に立ち、感動しながらその画面を動画に撮り続けていた。自分の装置の骨格が、他人の手の中で、自分には出せない画を出している。同じ夜、同じ地下のスクリーンに、同じ骨格から分岐した2つの装置――GARAとSTREAM――の映像が流れていた。次章で書く「公開」の話は、ぼくにとってはこの光景の追認にすぎない。分岐フォークは、ライセンスより先に起きていた。

 

開くということ

7月26日のぼくはX(Twitter)にこう書いている。

 

CCライセンス――クリエイティブ・コモンズ。「この条件さえ守ってくれれば、ぼくに許可を取らずに使っていい」とあらかじめ宣言しておくための、世界共通のライセンスの型紙テンプレートである。GitHubは、ソースコードの公開置き場の定番。つまりこれは、装置の設計図ごと世に開く、という宣言である。

 

本当は、GitHub上で試行錯誤する工程すら公開しながら開発をしたいと思っていた。しかし、制作中の装置は柔らかすぎて外気に当てられない。校了前のデータを配れないのと同じだ。だが公演という締切を通過した装置は、もう硬い。硬くなったものは道具として人に渡せる。6月10日にShadertoy由来のコードを書き直し始めていたのは、このためだったのだと、いまなら整理がつく。それに、シェーダの書き方を開かれた図書館でただで覚えた人間が、自分の装置だけ閉架に置いておくのは、どう考えても筋が通らない。

 

これは根っこのところで、絵描きとしてのぼくの顔が思っていることでもある。絵描きの世界は、技術の扱いがコードの世界と正反対だ。絵描きたちは、自分の画風が盗まれることを異様に怖れる。トレスの告発は定期的に祭りになり、近年はAI学習禁止の意思表示がプロフィール欄の定型文になった。気持ちはわかる――画風は作家性という商売道具である以前に、アイデンティティの延長だからだ。ぼく自身、自分の線が他人の手の中で再生されるところを想像すると、多少の違和感は覚えるからだ。

 

だが同時に、こうも思うのだ。ぼくの線は、ぼくの発明ではない。浮世絵から、劇画から、名も知らない無数の手癖から借りてきたものの束であって、ぼくはその流れの途中にいるにすぎない。つまり、ありとあらゆる技術は、個人の所有物ではなく継承されるものである。守りを固めた技術は、守った腕の中で完成し、その主が死ねば腕ごと消える。シェーダの世界が短い年月で異様な高みまで登ったのは、才能の総量の問題ではなく、公開図書館――もっと言えばアメリカ西海岸に端を発するハッカー文化――の有無の問題だと思う。だから、ぼくがコードを棚に置く。技術は、抱えて死ぬものではなく、手渡して伸びるものだと――半身だけでも、そう振る舞ってみたいのである。

 

GARAは、この記事と同時に公開する。ライセンスは結局、コードの定番であるMITにした。著作権表示さえ残せば、改変も再配布も自由――型紙のなかでいちばん短く、いちばん気前のいいやつである(CC系のライセンスは画像や文章の素材向きで、コードには別の型紙を使うのが定石なのだった)。Shadertoy由来のシェーダは一本ずつ出典を表にまとめ、原作者のライセンスのまま同梱した。開かれた図書館で覚えた頁は、図書館の判のまま貸すのが筋だろう。それがどういう感覚をもたらすかは、実はもう知っている。IMAGONのハッシュタグで一足先に味わい、小林くんのSTREAMで、決定的に味わったからだ。公開した道具のハッシュタグに、ある日、知らない人の作った美しい画像が流れてくる。自分の筆が、自分の知らない手の中で動いている。あの日ぼくが打った「うおおおおおおお!」は、たぶんこのプロジェクト全体の、いちばん正直な感想である。この装置が、どこかの誰かの地下アンダーグラウンドで、ぼくの知らない画を流す。そこまで行って、この装置は完成だと思う。

 

公開されたGARAがどうなるかは、実のところ、もう想像がついている。誰かが分岐フォークして、骨格だけ残して別物にする。誰かが気に入ったシェーダを一本だけ抜いて、自分の装置に移植する。つまりGARAは、いつか誰かにとってのhinotori-vjになる――使い捨ての、前身になる。道具の一生として、それ以上の出世をぼくは知らない。

 

公開版は、本番のGARAから映像素材を抜いた骨格である。プリセットは「cloud」がふたつ入っているだけの、ほとんど空の装置だ。だが空であることは欠陥ではないと思っている。hinotori-vjがまっさらな手癖から始まったように、道具は、空の状態で手渡されたときにいちばんよく育つ。設計図の公開というより、招待状に近い。

 

ブラウザで開けば、そのまま動く。インストールは要らない。開けば、もう光っている。新しいシェーダ使いへ。新しいVJへ。装置はもう、あなたの側にある。

 

ところで、「AIに書かせた装置を自作と呼べるのか」という問いは、当然あるだろう。ぼくの整理は単純である。GARAは作品ではなく、道具だ。6

万行のコードはたしかにLLMが書いたが、何を作るか、どれを捨てるか、どこで止めるかを決めた回数なら、ぼくのほうが多い。そして道具の真価は、書いた行数ではなく、本番の2日間にスクリーンへ出た画で測られる。その画の責任は、コードではなく、フェーダーに乗っていた手にある。

 

冒頭で保留した見立て――道具を作りながら要件を知るほうが、未経験者には早い――の答えも、ここに書いておく。半分正しく、半分間違っていた。装置は間に合ったし、装置の要件はたしかに、作りながらでなければわからなかった。だがVJの要件――引くこと、重ねないこと、何も出さない勇気――は、装置をいくら作ってもわからなかった。それは隣の人間から、本番の数時間で教わった。道具は自作できる。しかし、技芸はまだ、人から貰うものらしい。

 

最後に、これから何かを作りたい人へ。2026年現在、ツールメイキングはもう大袈裟な選択肢ではない。映像制作経験ゼロのエディトリアルデザイナーに、55日――実働18日――で足りた。要るのは、流したい素材と、赤字を入れ続ける目と、6万行を記憶してくれる相棒である。

 

公演の翌日、ぼくはX(Twitter)に「しばらくは漫画制作に集中しますが……」と書いた。冒頭に書いたとおり、本業はそちらなのである。誌面の格子に、いったん帰る。もっとも、動く誌面と動かない誌面のあいだに本質的な違いがあるのかどうか、55日を経たいまのぼくには、もうよくわからなくなっている。

 

VJ studyは――機会があれば――まだ続く。

 

付録――数字と機材

数字

 

  • 開発期間:2026年6月8日〜8月1日(55日間/稼働18日)

  • コミット数:187(うち公演当日の2日間で70)

  • コード規模:JavaScript計61,999行(app.js単体17,600行)

  • ビジュアル:133種(シェーダ117本+コードエンジン16本)

  • ループ動画素材:28本

  • シェーダ総数:200本近く(ビジュアル117本+ポストFX・合成・トランジション・ブラシ・各エンジン内部)

  • スタンドアロンアプリ:Electron製、486MB、全素材同梱・完全オフライン動作

  • 描画パス:最大12段

  • 公演:2日間で計12時間半

機材・構成

 

  • MacBook Air(M2)――VJをするには、あまりにも非力

  • Novation Launch Control XL 3(MIDIコントローラ)

  • vanilla JavaScript+WebGL2/ビルドシステムなし

  • サーバー: レンタルサーバー+PHP 1ファイル(プリセット・設定同期)

  • デプロイ: FTPミラーリング(シェルスクリプト1本)

  • 開発: Claude Code(実装・検証・デプロイの全工程)

用語ミニ辞典(本文に出た順)

 

  • コミット:変更履歴のひと区切り。改稿一回ぶんの保存に日付と摘要を添えて綴じたもの

  • デプロイ:完成したファイルを本番サーバーへ運び込み、公開中のものと差し替えること

  • シェーダ/GPU:GPUは映像専門の計算部品。シェーダはその上で動く「全ピクセルに配られる一枚の指示書」

  • BPM:音楽のテンポ。1分間の拍の数

  • リポジトリ:プロジェクトの全ファイルと全履歴を収めた保管庫

  • フレームワーク/ビルド:建売の骨組みと、原稿を機械向けに組版する工程。GARAはどちらも不使用

  • プリセット:画面の状態の丸ごと保存。アーティストごとに仕込んでおくテンプレート

  • Electron:ウェブ技術で作ったものをデスクトップアプリとして梱包する枠組み

  • localStorage:端末ごと・アプリごとの自分専用の引き出し。隣の机からは開けられない

  • MIDIコントローラ:つまみとボタンだけの物理操作盤。ソフトのパラメータを手で握るための機材

  • タップテンポ:曲に合わせてキーを叩き、装置にテンポを教える操作

  • オーディオリアクティブ:マイクで拾った音の大きさや帯域に、映像を反応させること

  • フォーク:公開されたコードから枝分かれして、別物を作っていくこと。シェーダ文化の基本動作

  • GitHub:ソースコードの公開置き場の定番サイト

  • CCライセンス:「この条件で自由に使ってよい」と先に宣言しておく、世界共通の型紙

  • MITライセンス: コード向けの定番ライセンス。著作権表示を残せば改変・再配布も自由

リンク

 

(了)