春告げ抹茶ホイップ

プログラマーとしてAIに置き換わることと、創作のどこまでをAIに任せるか

近年色々な人間の作業が AI に置き換わりつつあり、プログラミングなどはその最たる例である。

そしてイラストやその他の創作では AI に置き換わることに対して抵抗する人が多いのに対して、プログラマーはあまり抵抗感がない人が多いようにも見受けられる。 これが外部の非プログラマーからは不思議に見えるようである。

私自身もプログラマーとして、プログラミングが AI に代替されることについて別に反対する気がないという立場である。 もちろん食い扶持がなくなるのは困るし、プログラマとして食っていけなくなったら別の仕事を探さないといけなくて非常に大変だと思う。 しかし、そもそもプログラマとして「コードを書くことが重要だから、コードを書く仕事を残すべきでありそこを AI に奪わせてはいけない」とは感じてはいない。 AI がコードを書く役割を奪えるなら奪うべきものだと思うし、コードを書く作業が人間が担うべき文化的な役割だ、とはあまり思わない。

このような立場がどこから生じているのか、他の創作が AI に置き換わるのに反発するのと何が違って、なんでそんな落ち着いて AI に置き換わるのを受け入れられているのかを考えていきたい。


プログラマーがAIを受け入れることに対するSNS上での意見

この問題は SNS とかでも取り上げられることがあって、様々なプログラムを書く人が自説を唱えていたりする。 いくつかその例を取り上げてみよう。


まず 1 つ目は、そもそもプログラミング自体が負荷が高すぎるので AI に置き換わって嬉しいという話。

プログラミングは過労とか起こりうるほど負荷が高いもので、それは人間ではなく AI がやってくれるようになるのは良いことだという世界観。


2 つ目は、コードを書くことではなくより抽象度の高い部分がプログラマーの責務になったからという話。

これは、AI によってコーディング自体が置き換わっても、設計を考えたりとかの部分は AI に置き換わらないだろうという考えが元にある気がする。


もう 1 つはプログラマー業界は AI 登場以前から自分の学んだものが無駄になることがある業界だったという話。

仕事がなくなったり学んだ技術が無駄になったりというのを元々受け入れざるを得ない状況だったという世界観。


とはいえ、だんだんエンジニアリングからレイヤーが離れていくので辛くなる人もいるのではという意見。

プログラムを書くこと自体が好きだった人は絵描きと同様に絶望していて、ものを作ること自体が好きだったり技術が好きなだけの人は楽しんでいるという意見もある。


何がプログラミングとその他の創作を分かつのか

さて、上記の話はある程度プログラマーである私としても納得いくような気もしている。 一方で、なぜプログラミングだけが特別に課題解決自体が目的でありプログラミングは手段だったと言えるのだろうか?ということには直接答えているようには思えない。 プログラミングは AI で置き換えても拒否感はないのに、イラスト制作においてイラストを出力するのが目的であり、絵を筆とかペンタブをとって描くのは手段でしかないから AI に置き換えてよいと言えないのだろうか?

ここからは持論なのだが、創作において何を作るか自体を作りたいものを探索する過程が AI に置き換えられてしまって失われてしまっているかどうか、が大きなファクターの一つであるという説を提唱してみる。

「『探索しながら作りたいものの形を見つけていく』というプロセスが AI 導入によって失われたかどうか」という点で拒絶感があるかどうかが整理できるように考えている。

これについて詳しく説明していこう。

(ちなみにこの探索的な創作という話は橋本 麦さん[1]の影響を受けているように思う。 「よさ」の峰に登るの記事[2]などでも良さを最大化する状態をUIで探していくということなど、創作において探索という話を組み合わせてされているのが印象的)


イラストでの探索的な創作

イラストにおいて、絵筆やペンタブで描いていくという行為は、頭の中にある正解画像を出力するために画素をプロットするというだけの作業ではない。 絵を描きながら描きたいものが少しずつ形作られていくこともある。

絵のラフ全体を見てどこにどういう色を置いていくか決めたり、既に描かれている途中経過を見てさらにここにこの色を置いたら良くなりそうだと考えたり。 頭の中に最初から正解がどのくらいあるかは描くときに応じて変わるだろうし人それぞれだろうけれども、少なからず絵を描きながら着地させる部分を探る、成果物としてできあがる絵を探索するために絵筆をとって作っている部分がある。

創作における探索や自分の表現を織り込むために筆やペンタブで描いていくという工程が重要になるのは、そうやって描いていく工程で少しずつ作りたいものが見えてきたり自分が表現したいスタイルに誘導したり。 そういう作りたいものを探したり表現を埋め込んでいったりする探索的な創作を行っているからではないだろうか?

粘土をこねることと探索的な創作

こういう探索的な創作としてもっとわかりやすい例でいうと、子供の頃の粘土で何か作った経験とかを思い出すと良い。 粘土をこねくり回しているうちに何か作りたい形が出てきて謎の動物を作ったりしたとことがあると思う。

このときに、頭の中に完璧に作りたい図面が存在して、それを再現するために粘土の形状を最適化するということをやるのではなく、粘土をこねくり回しているうちに作りたい形状が見えてくるということだってあったはずだ。

探索的な着地先を作りながら探す創作とAIの相性

この作りながら作りたいものを完成させて着地させる先を探っていく、こういう探索的に創作をする過程は、現状の AI に全部置き換えてプロンプトで成果物を出力するというのとは相性が悪い。

描きながらキャンバスからフィードバックを受け取りながら作っていく先を少しずつ形作っていくという過程が大事であって、頭の中に最初からあるイメージを取り出す作業ではない。

一方でプロンプトを入れて絵が生成されるというのは、頭の中のイメージを言語にしてプロンプトにしてそれをそのまま取り出すような作業になっている。 制作する過程で、ここにこういうモチーフを入れてみるのが面白いな、とかそういうことに気がつく余地がない。 これは創作において重要な工程が失われたということになると思う。

AI で工程を置き換えることの反発感は、AI に仕事が奪われるという話以前に、そもそも創作において重要な探索する行為ができなくなるという問題があるから拒絶感があるのではないかなという気がする。


プログラミングのコードを書くのは探索的か?

一方でプログラミングはどうだろうか? キーボードのキーを叩いて文字を一文字ずつ入力する過程が、作りたいものを探索する過程になっているかというとそうではないと思う。

作りたいものを探索しながらコードの行を付け足していくというのは、processing とか shader 芸とかをやるには重要かもしれないが、普通のアプリケーションやサーバーのプログラムを作ったりする場合には行わない気がする。 そんなプログラムのコードを書きながら継ぎ足し継ぎ足しで作りたいものを変えていくなどというのは、行き当たりばったりで継ぎ足しまくったコードなどというのは、ろくな設計になっていないろくでもないコードになるだろう。

プログラミングにおいては事前に設計をよく考えると思う。 どこを後でも変えられるように今は決めきらないでおくために変更可能にするというコストを支払うか。 この部分はあとから変更しないだろうし、もし変更したくなったら大きなコストを払うことになってもよいので、この部分は決め打ちで作ってしまおうとか。 そういう設計上の判断を行うのは、コードを書いてキーをタイプしているときではない。 その前の設計を作る時点だ。

設計自体を design doc として書いて同僚などから承認を得るのか、それとも個人開発で頭の中だけで設計を組み立てているのかはそれぞれだろうが、何にしてもコードをタイプするという過程で試行錯誤をすることはなく、頭の中で試行錯誤したりした設計を出力する過程としてコードをタイプするという過程があると感じる。

これが、コードをタイプする過程を AI に奪われても忌避感がない理由ではないだろうか? コードを書くという作業自体は探索的な過程ではないので、AI が代わりに行っても忌避感がないのではなかろうか?


プログラムの設計を作る部分と探索的に作るものを見つけること

設計自体も AI にある程度は任せられるようになってきたという点についても考える必要はある。

AI に設計を任せられると言っても、さすがにプロジェクトとしてどういうトレードオフを目指しているかとかは AI はユーザーの頭の中を直接覗けるわけでもない以上、ちゃんと明示的に AI に示してやる必要があるし、そこを示さない場合はオーバーエンジニアリングされたり、あるいは適当に要件を満たすだけの場当たり的なコードになったりする。 そういう意味で、AI に要件を伝える部分はユーザーが行う必要がある程度残っている。

要件を伝えた後で要件を満たす範囲内での設計の自由度はどこまで重要なのだろうか。 要件として、満たすべき仕様を満たしていたり、あるいは変更のやりやすい設計になっているかとか、そういう部分が満足いく形になっていれば、その範囲内でどういう設計をとっているかはある程度自由である。 この自由というのはどのように実装されても特に問題ないし関知する必要がないとも言えるかもしれない。 その意味で、要件を満たす範囲内でどのように設計の選択肢を取るかというところも、探索して良いものを見つける必要がある部分ではないかもしれない。

ここで言う要件というのは必要な機能を満たしているというだけの話ではなく、将来的な保守性とか、あるいは少ないリソースでも多くの人をさばけるサーバーになるようにリソース的に効率の良いコードを書くとか、そういう部分も含む。 より良いプログラムを書くということもある程度は要件に含んでいるとする。

こう考えると、どういう要件のプログラムを作る必要があるかを言語化して明らかにすることは非常に創造的であり、その部分は色々考えを巡らせなければいけない。 さらにそれが実現可能かどうかを考えるためには、コードをどうやって書くかもある程度考えて設計というものを構築する必要がある。 一方で、その設計の大枠の外してはいけない部分の入出力をどうするかとか DB にどのように保存するかとか、そういう部分が握れてしまえば、それ以外の部分はあとは書くだけになったりする。

そして、その重要な要件を伝える部分は AI 単体では完結し得ない。 AI が人間の脳みそに直結して人間の考えていることを読み取ってくれるようになったらまた話は別であるが、そうではない以上、何を作ってほしいかをちゃんと言語化するという作業は AI コーディングの時代でも残っている。 そういう意味でプログラミングの作業で一番創造的な部分は AI コーディングでも結局まだ残っている気がする。

もちろん、要件自体を AI に聞き出してもらうということはできるようになった。 プログラムを作る上で重要な設計を作るにあたって、どこを決めないといけないかというのを AI に質問してもらってそれに答えながら設計が形作られていくということはある。

しかし、これは AI を使うことで探索的に設計を決めていけるようになったということのようにも言えるのでは? AI がプロンプト一発で何もかも決めているのではなく、AI に自分の持っている要件を聞き出してもらって質問に答えながら少しずつ自分の中でどういう要件を持っていたかを形作っていく過程は、粘土をこねながら形を定めていくのと似ているかもしれない。

そういう意味でも、AI とともにコーディングをする過程では探索しながら作りたいものの形を見つけていく余地が人間に残されているだろう。


エレガントなプログラムについて

世の中にはエレガントなコードを書くことにこだわりを持っているプログラマーもいるようで、そういう人たちは AI にコードを書く過程を奪われたことで心を痛めている人もいるようだ。

ただ、個人的には仕事においてプログラムが果たすべきことは、要件を満たしていて変更可能性も開けているコードを設計することであり、エレガントなコードとか素晴らしく美しいコードを作るとかは自己満足でやりたい人がやっていただけの話だと思う。

この辺り、人によって認識は違いそうではある。 例えば次のような意見が SNS 上である。 この mattn さんは非常に有名な方ではあるが、この意見については私は賛同しかねている。

「プログラマの頂点とは美しく速いコードを誰よりも量産すること」だと皆が思っていた

というのを私は了解していない。 美しいかどうかが重要なのではなく、メンテナンスしやすいことが重要でそのためには美しいコードと重なるコードを書くことがあったということだろう。 速いコードが良いのは、要件として速度の出るコードを書きたいということが多く求められていたからだろう。 なるべく少ないリソースで多くのユーザーを捌きたいとかそういう要件があるから求められていたわけで、そういう要件がない場合は必要ないことだっただろう。

自己満足で美しかったり速かったりを求めていた人は、その美しいコードを探索するためにコードを書く時間自体を大切にしていたのかもしれない。 しかし、一般にプログラマーに求められる必要なコードを生成するという能力について考えれば、やはり必要な要件を満たすコードを書くことに他ならないはずで、美しいとかそういう独自の美意識を謳っている人はたまたまそれが必要な要件と合致していたから目指すことが咎められていなかっただけで、基本的に職業でプログラムを書くという観点からすると問題ある気もしてならない。


3D創作の例で考えるAIでどこまで置き換えるか

「探索しながら作りたいものの形を見つけていく」プロセスが AI の導入によって失われないかどうかが重要という考えを示した。

この考えを元にどこまで AI に任せるのが許しやすいかというのを 3D 制作の事例を使って考えてみよう。

現在は Tripo などの diffusion モデルベースと思われるモデル生成がだいぶ発展してきている。 また Astra 以降で 3D ツールを使ってモデルを作るのも上手になってきた。 このような現状の中でどこまでが AI に任せられるだろうか?


この考えのもとでは、例えば次のような領域は任せやすいかもしれない。

Houdini のノードや Geometry Nodes などで特定の構造などを作るためのノードを組み立てる部分を AI に任せて、その作られたノードをユーザーが使う。

例えばポリラインを入力してパイプとか柵とかを作るノードを AI に作ってもらう。 建物を生成するノードとかも作れるかもしれない。 そしてユーザーはそのポリラインを入力したりノードで建物を作って、それらを並べて自由にシーンを作っていく。

この過程では、ノードで新しいツールを作っており、その出来たノードのツールを使って探索的に作りたいものを探索できる。

探索空間はノードを自由につなげる場合と、出来上がったノードの中のパラメータをいじる場合では大きさが断然に違うだろうけれども。 場合によっては大きすぎる探索空間から探すより、いくつかのパラメータで探索する方がやりやすい場合もあるはず。

ノードのパラメータを多くするとかノード自体の組み合わせとかも AI に構築してもらえば、探索空間の広いノードのセットアップを作ってもらえて、ユーザーが探索しながら作りたいものを形作っていく余地がより大きく残されるようにすることも可能なはず。 そういう使い方なら AI を使ってノードセットアップしてもらっても、なおユーザーの自分で作りたいものを探索する感覚は残ると思う。

もちろんノードの作り自体にも探索の余地はあって、どのようなパイプを作れるかパイプの節とかをどのように作るかとかは、以前ならノードを作る過程で探索しながら作っていたかもしれない。 そういう意味では、ノードをAIに全部任せて作らせることを許容できない人もいるかもしれない。


一方で、テキストプロンプトからキャラクターやシーンの 3D モデルを一発出しする、という使い方は 3D モデリングの探索しながら作る部分が失われてしまうのであまりよくないかもしれない。 3D モデルのモデル自体に自分の意図を込めたいといった場合にはこのようなタイプのものはあまりよくないかもしれない。

一方で、作った 3D モデルを並べてシーンを作る、そのシーンの並べ方で自分の作りたいものを探索的に作っていくことはできるという意味では、パーツ自体を生成するのは許容できる人もいるかもしれない。

あるいはシーン全体を生成したとしても、その中のカメラワークやカラーグレーディングなどをメインで探索したいのであれば、別にシーン自体を生成しても抵抗感なく扱える人だっているだろう。

どの部分を探索して意図を込めて完成の着地位置を探りたいと考えているか次第で、どこに AI を使っていくかの許容範囲は人によってそれぞれかもしれない。


AI にあとから調整しやすい整ったポリゴン分割とか、あるいはノードとかも使いながらモデリングしてもらった後、それを土台に色々作り足したり編集して作り込んでいくという形の創作もありえるかもしれない。 また、最初の土台を作る時点でプロンプトをやりとりしながら少しずつ意図したような形に近づけてもらったり、シーンのここにこういうものを追加してほしいと依頼するのもある種の探索の形であると言えるかもしれない。

そういう意味で、真に一発で全部生成したり、あるいは画像を生成してそれから 3D モデルを生成してはい終わり、という使い方をしないのであれば、案外 AI を入れても 3D 制作は探索的に創作できる範囲が多く残っているかもしれない。

そういう意味で 3D 制作に AI を使うことにあまり抵抗感がない人がそれなりにいることにも説明がつくかもしれない。


お絵描きとAI

こうやって考えるとイラスト生成の AI についての問題点は、探索的に創作できなくて ただただプロンプトを投げたら結果を待つしかないというユーザーインタフェースの制約による問題も含まれているのかもしれない。

3D で部分的に AI に任せつつ AI が全部作るのではなく自分が探索的に作りたいものを探す部分を残すことで、AI と協業できていくだろうことのように、お絵描きにおいても AI を部分的に使っていくことは可能な気もする。

ただ、ML の人たちがそういう絵を描く人のことを考えたお絵描き AI を考えてくれる気はしないが……。 機械学習の人たちはベンチマークのために派手な結果を出すためにお絵描きを奪ったような人たちだからなあ。 (この感想はML系の人たちへの偏見が詰まっている感想ではあるが……)

HCI 系の人たちが近年は AI を使いながらものを作るための UI とかも色々提案しているように思う。 そういう HCI 系の人たちの研究とか提案で、もう少し探索的にものを作る過程に AI を使っていくような、そういう未来が広がっていくと良いなあと思う。


まとめ

ということで、AI と創作でどこまで AI に任せても拒絶感がないかについて、「『探索しながら作りたいものの形を見つけていく』というプロセスが AI 導入によって失われたかどうか」という観点で整理できるという説を提唱してみた。 まあ、この説が正しいのかどうかはわからないけど、個人的にはこの考え方がしっくりきてはいる。

今後、AI で創作を支援したりする仕組みを考えていくにあたっても、この自分でこねくり回して探索しながら作りたいものを決めていくという過程を奪いすぎないように AI を使うということを考えていくと面白そうに思う。

Series

References

  1. 1. 麦 ⌇Baku (@_baku89) on X
  2. 2. 「よさ」の峰に登る |ARTICLES|The Graphic Design Review

Cited By

Webmentions