FAL 制作メモ

作ったものを見せびらかしたり解説したりします。自作ゲームやクリエイティブコーディングの話が中心です。作ったものの置き場所はこちら→ https://www.fal-works.com/ Twitter→ https://twitter.com/falworks_ja

なぜプログラムを書き、ゲームを遊び、作るのか

  • Processing Community Day Tokyo 2020 の感想
  • ミゲル・シカール『プレイ・マターズ 遊び心の哲学』の感想
  • 雑多な思考の諸々

PCD というイベントに参加した話

私は Processingp5.js というツールを使って、プログラミングで絵を描いたり、なんかいろいろ動かしたりして遊んでいます。 www.fal-works.jp

そしてこのたび、Processing のユーザー有志イベントである Processing Community Day Tokyo (PCD Tokyo) 2020 というのが開催されたので参加させていただいたのでした。まずはその感想になります。 pcd-tokyo.github.io

キーノート講演

Processing を様々な建築に活用するお話に、音楽とアルゴリズムの関係性の過去と未来のお話。

大げさに書くと、コンピューターやプログラムによって創造性が開放される時代は今後さらに加速するのだという感じがして(そもそも創造性とは何か、に関する認識の更新を含む)、とても刺激になりました。去年のキーノートを直接聞けなかったのもあり、今年は聞けて良かったです。

たとえば音楽に関して言うと、まず絵などをアルゴリズミックな手法で作る場合は処理結果が空間的な配置として、あるいは色や質感の違いといった形で立ち現れると思いますが、その状態に変換される前の論理的な構造にもある種の面白みがあるはずで、その点音楽はまた違った構造を持っているわけなので、その中身が分かると可能性がぐっと広がりそうです。知らない楽しい世界がまだまだあるんだという希望もあれば、余裕があればもっと調べたいのになあという悔しさもあり。

参加型コンテンツ

トークセッション

Twitter などで作品をUPされている人たちが登壇されていて、これも楽しみでした。 paper.dropbox.com

頷くことしきりな内容だったんですが、特に感じるのは、「自分はなぜこんなことをやっているのか?」「何が面白いのか?」という話がコミュニティの中でもメジャーな話題の一つになりえて、関心を寄せたり言語化を試みようとしたりする人が結構いるという、その状況自体がとても歓迎すべきことであるように思える、という点ですね。

「絵を描いてます」とかに比べると説明に若干時間がかかる部類の創作活動である……という側面もありますがそれだけでなく、やってる本人ですら「私は何をやってるんだ?」と思いながら続けている、なんてことも人によってはあるんではないでしょうか(というかこの記事がその話だ)。そういうところも含めて面白いと思っています。

ライブコーディング

ライブコーディング*1のセッションもあって、最初から最後まで盛り上がりました。こういったパフォーマンスについて話には聞きながらも実際に見たのは初めてでした。とても良かったです。

あわよくば、自分がパフォーマーと同レベルの知識を持っていて、コードと音楽と映像がどう繋がっているのかを理解しながら鑑賞できたらもっと面白いのだが!

あと終盤の機材トラブルで、その場でやってるはずの演奏を(音声を含め)YouTube Live 経由で会場に流して鑑賞する流れになったのも謎な面白さがありました。メディアアートかな??

NEORTコラボ

会場では終日、デジタルアートのプラットフォームの NEORT さんが、大型ディスプレイでいろんな人の投稿作品を常時展示してくれていたんですが(展示のチャンスが与えられるというだけでもすごいことですよね)、なんだかそれにとても可能性を感じました。 neort.io

時間がなくて一瞬チラ見できただけだったんですけど、Twitter で見かけたことのあるあの作品が(小品と言っても良いシンプルなものだったはず)、こういう展示のされ方をするとこうも印象が違うのか! という感動があった。

ふだんディスプレイばっかり見ているのでそういう想像力が希薄になっているところが私にはあると思うんですが、思えば私は美術館に行ったりすると毎回、展示空間で実物を眼前にしてじっくり鑑賞しないと得られない体験というのがあるんだなあみつを、といった感想を持つというのがありまして、鑑賞が手軽であるがゆえの功罪ということにもなるんでしょうか。しかし例えばアニメにしろ漫画にしろ、いつもは漫然と見ていても琴線に触れたときには明らかに普段とモードを変えて神経を集中して観るわけで、見る側の意識の問題もありそう、じゃぁどうしたらもっと面白くなるんだろうか、など疑問は尽きないです。

こういう話は芸術関係ではより深く議論されているはずで(展示学会というのがあるくらいだ)、ぜんぜん調べられていないのが悔やまれるところです。あとVR者だったら技術的な方面で明るい展望があったりするのでしょうか。残念ながらうちでは Oculus Go が埃を被っておる。

LT(ライトニングトーク)はワークショップと時間が重なって聞けなかったのですが、これも聞いてみたかったですね。まさか Processing のイベントで弾幕の話題が出るとは、なんと嬉しい……あと #PCD2020 タグを見たら障子の話で妙に盛り上がっていて、何が起こった! と密かに震撼していました。

ワークショップ(ゲーム制作)

さて、私は今回の PCD では「p5.js でゲーム制作」というワークショップで恐れ多くも講師を担当させていただきました。

自分としてはめちゃくちゃ気合を入れて準備したつもりで、今時点の限界という感じです。

結果としては、Twitter でその後の反応を見ると、伝えたかったことを汲み取ってくださってるツイートや、実際に作ってみましたというツイートがいくつもあって、おおお良かった……! という心持ちです。

資料

資料を後日公開したのがこちらです。

p5.js でゲーム制作

形式は、@takawo さんの『グラフィックのための「動かない」クリエイティブコーディング』を参考にしたいと思い、スライドから記事形式に変えました。

  • 読みやすい
  • コードをコピペしやすい
  • コードの差分が分かりやすい

というあたりです。

マークダウンで書いて GitHub Pages に上げると Jekyll というツールでよろしく表示してくれるというのがあり、それをやろうとしたのですが、コードの差分表示とか補足の折りたたみとかが良い感じにできず、その後 Hugo というのを見つけてそれを使う方向に。
Hugo いいですね。デフォルトで全部おまかせにはできず、カスタマイズ方法を調べる必要があって時間はかかりましたけど、生成が爆速だし柔軟性も高そうです。JSのシンタックスハイライトで変数と関数が区別されてないように見える、というあたりが未解決。

当日は基本スルーしましたが、「余談」という名の技術的な補足を多数入れました。
中級者以上が資料を見ると、「なぜこうしたのか? 他の選択肢を検討したうえでこれなのか?」というのが気になってしまうはずだと思ったからです。
なお class の使用是非に関する長い余談を書いた結果、自分自身まだまだわかってないのだなという思いを新たにしました。私も独学なので、JS自信ニキのマサカリがあると嬉しいのですが。

準備にあたって考えたこと

内容面での特徴としては、プログラムの「部品」というのを少し意識しています。
部品を用意する → それを組み合わせる、というのを反復的に繰り返すことで、プログラムという構造物を増築していく……その過程を自分の手で体験してほしい、というのがありました。

一年前のPCDの反省を踏まえて、「各自でコードを動かす時間」を小刻みに入れるように。
あと、私がしゃべってる最中でもコーディングしてていいんですよーと伝えたり。

Flappy Bird を題材にしたのは、まずブロック崩しやらシューティングやら候補を洗い出して検討した結果、十分な応用性がありつつも実装が一番簡単だと思えたからです。実はどれも大差ないという話を終盤でしていますが、やはり多少は実装上の違いがあるので。

あと p5.js(というか JavaScript)にしたのは、Processing 3.x (Java) に比べて次の点が今回のワークショップ的に利点だと思ったためでした。

  • なんかやわらかい
  • リストの扱いが楽
  • デフォルトでも日本語のコメントが書ける

改善点

  • 応用力の高い人が何人もいらした一方で、ついていくのに苦労されている人もいて、申し訳なかった。対象者や前提知識についてどうすればもっと明確化できるか
  • 資料を部屋の大型ディスプレイに映したけど、部屋の一番後ろから見る人にはちょっと読みにくかったかも。ハンディタイプのマウス + 特大カーソル の組み合わせを今回試してなかなか便利だったけど、資料自体が読みにくいと片手落ちである
  • ソースコード全体を1ファイルに収める形にしたけど、スクロールが面倒だし、経過を追わずに最終形だけ見た人はギョッとしますよね。しかし分けるとそれはそれで認知負荷があるし読み込みも手間だし、ワークショップとして何がベストなのか
  • どうしても時間的制約があるのだけれど、ビジュアルに寄せた話がもっと無いと魅力に欠かけるのではないか。とはいえ私自身それが弱いというのも原因の一つ

お悩み相談室 / 忙しい中で創作を続けるには

テーブルごとにいろいろなお悩みのお題でディスカッションするという企画。

私は「忙しい中でどうやって創作を続けれバインダー!(意訳)」というお題のテーブルに貼り付いていたのですが、毎度毎度「いやァ~難しいですよねェ~」しか言えずに情けない限りでした。

しかし文殊の知恵というやつで、おおなるほど! と思えるご意見が予想以上に集まって、結果としてはたいへん良かったと思います。
たとえば「やる気の有無に関わらず、とりあえずエディタを開く」というのは私もかなり有効性を感じています、やはり作業興奮は重要。それから「作業の目標としてクリエーションとドキュメンテーションがありえて、後者にも価値がある」という話なども、視点の転換をもたらしてくれて、なるほど感が高かったのではないでしょうか。

それと、たまたまタイムリーな記事があったので張っておきます。
 なにかを始める場合に無駄になる時間を用意しておくと効率が良い - 山下泰平の趣味の方法
これは大事なことだと思っていて、私もいまはいろいろ雑念が入っちゃうんですが、「短期的な生産性を一切期待せず、好きなことを模索する」というのを意識しつつ OpenProcessing に投稿しまくっていた時期が過去あって、むしろ一番実りが多かったのはその時期だったように思います。

PCD まとめ

とにかく、このような催しがあるというのは真に喜ばしいことです。
最初なんて私、まさか自分以外にユーザーがいたとは……みたいな感じでしたからね。
運営の方々にも大感謝です。

資料やレポート記事が他にも上がっているので、こちらもどうぞ。

未解決問題

未解決かと言うと私の中ではそうでもないんですが、話の都合上、回答を後の方で書きたいので、先にここで問題だけ書いておきます。

そうは言っても創作はしんどい

お悩み相談室では創作を続けるための様々な極意が集まりましたが、それらをいろいろ聞いて知ったうえで「それができたら苦労しないのじゃぁ」という感想になる人もいると思っていて、私自身、気力が無い時期はほとんど手が動かせません。そのことについてどう考えればよいのだろうね、という話です。

プログラムそのものは創造性に寄与しないのではないか

去年と今年とゲーム制作のワークショップをやる中で、「プログラムの部品がどうで構造がどうで、組み立てるにはああしてこうして……」みたいな話をしているのですが、それは Processing Way ではないのではないか? もう少し言うと、次のような批判がありえるのではないか? というのを去年から考えていました。

  • その話、SIerが設計とか保守とかやるときのやつでしょ、
    そういうのは仕事で十分なんだ
  • 作品を作るのが目的であって、プログラミング自体は手段に過ぎない。
    技術的な話は本質じゃないんだ
  • Processing は誰でも手軽にスケッチが作れるのが魅力であって、
    200行も300行もコードを書くのは嫌なんだ

念のためですが、こういうことを実際に言われたことは今のところ一度もなく、内なる批判者というやつに過ぎません。が、何かしらスタンスがあったほうが良いな、という話です。

『プレイ・マターズ 遊び心の哲学』を読んだ話

自分と世界

話変わりましてちょっと内省的になります。

人生は虚しい

そうですよね!?

そうだと言ってくれッッ!!

で、この虚しさの正体は何なのかということを考えるうち、自分と世界との関係性、というのが無視できない要素だと思うに至りました。例として慣用句を使うなら、気分が沈んでいるときは「世界が色あせて」見えるし、気分が良いときは「世界が色づいて」見える。

少し表現を変えると……いま自分を取り巻いている世界について、ここは自分の居場所だという感覚、もしくは、この世界のありようは自分にとって歓迎すべきものであるという感覚を持てているとき、自分は満たされていると感じる。そうでないとき、なんだか虚しいと感じる。

そんなのは体調とか脳内物質とかのアレだ、筋トレをしろ。というのもそれなりに真実ではあると思うけど、どうかな、これはこれでヒントになる気がするんですが。

ついでにメモっとくと、このような考えに至ったきっかけの一つは、内容だいぶ忘れちゃいましたが確かこの本を読んだことだったと記憶しています。 『幸福論 ―精神科医の見た心のバランス』

ゲームは虚しい

違う、ゲーム批判とかじゃないです。

ただ個人的に、ゲームを遊んでいるときに「この時間の使い方は本当に最善なのか?」という不安感が湧いてしまうことがそこそこあるし、ゲーム自体がいかに面白くても、それが終わったらまたクソッタレな現実*2に戻って生きなければならない(いずれも別にゲームに限る話でもない)。

そういえばちょっと前にこの投稿が一瞬だけ話題になりました。
 ゲームで時間を潰せる奴がちょっと信じられない
主な反論は「ゲームを楽しむこと自体が目的なのだ」「娯楽形態の中でも時間効率は結構良い」「実利的なメリットもある」といったものであったと思いますが、どうなんだろう。ゲームの自己目的性(何か他の目的のための道具ではないということ)も、実利的なメリットも、この投稿への反論としては十分に見えますが、ゲームを遊ぶとき or 遊んだ後の不安や虚しさ、ひいては人生の虚しさについては、解決してくれない気がする。もちろんそんな責務は無いのですが。

虚しさを乗り越えるゲーム

虚しいばかりでもない。

そのゲームを遊んで良かったという記憶、それを遊んだ経験が今に至るまでずっと自分の力になってくれているという感覚、そういったものを与えてくれたゲームも二つや三つではありません。

ゲームの楽しさといっても、勝敗をめぐる駆け引きとか、アクションが爽快だとかストーリーが感動的だとか色々ありえますが、中でも私が特別視しがちなのは、次のような特徴であるように思います。

  • 与えられたルールや目標とは別に、ゲーム世界の中で動き回ったり散策したり佇んだりする、その行動自体が満足感を与えてくれるもの
    (RPGはそういうことが多いし、STGでもアクションでもタップゲームでもありえる)
  • 自分と世界との関係性について考えさせてくれたり、何らかの示唆を与えてくれるもの
    (メタフィクション系とか。あるいは東方みたいに現実との地続き感があったり、自分のよく知らない現実の文化を土台にしていたり)

やっぱり「自分」と「世界」がキーワードだな?
少なくとも自分にとって、ゲームの魅力というのは、そして人生の虚しさに対抗できる要素というのはこういうところなんではないだろうか、と思えてきます。

「遊び」の効用

遊びと自分と世界

そんな折、ミゲル・シカール『プレイ・マターズ 遊び心の哲学』という本を読みました。

filmart.co.jp

ネットで見かけた感想文:
『プレイ・マターズ 遊び心の哲学』感想文 - ビデオゲームとイリンクスのほとり

この感想文で【遊びの七つの特性】としてまとめられているように、この本は、「遊び」とはどういうものなのか? それが人間にとってなぜ重要なのか? といったことを新しい切り口で論じているものです。

この本の中で、特に次のようなフレーズが目を引きました。

「遊ぶことは、世界のうちに存在することだ」(p. 14)

「実際のところ、遊びは、人が道徳的な意味で幸福になるための、
 つまり健全で成熟した不足のない人生を送るための基礎になる要素だ。
 わたしたちは、遊びを通して、世界を経験し、構築し、破壊する」(p. 20-21)

「遊び心を通して、わたしたちは世界を個人化パーソナライズする。
 つまり、世界を自分のものにする」(p.57)

「遊ぶことは、世界に意味を見出すことである」(p.73)

部分的に抜き出してもナンノコッチャイかもしれませんが、上述のようなことをむにゃむにゃ考えていた(が、まとまらなかった)私にとって、この観点は色々なものを一本に繋げてくれるような感触があったのです。*3

遊びとクリエイティブコーディング

プロシージャルアートやジェネラティブアートが好きな人には、次の文などは示唆的で面白いのではないでしょうか。

「プロシージャルなおもちゃが魅力的なのは、それが他者性を感じさせる枠組みだからであり、それ自体が持つ条件によって駆動する小世界だからである」(p.77)

(この後に「しかし、」と続くのですがそれはそれ)

ソースコードを書くことで何かしら面白いことをしようとする活動全般をクリエイティブコーディングと言いますが、その重要な特徴は何かというと、それが「遊び」にフォーカスしている点である、という気がしています*4

思えば、私がクリエイティブコーディング的なもの(当時その呼び名を知らなかったが)に興味を持ったきっかけの一つは、nanosmiles というフリーゲームのWebページでした。
nanosmiles | Yarhallaの作った絵とゲーム

単なるランダムウォークですが、なぜだかこれが妙に魅力的に思えたのです。
まさに「遊んでいる」と形容すべき何かではないか?

ついでに言うとこの本で頻出する主張に「遊びは流用的である」(p.30)というのがあります。「流用」とは文脈を乗っ取ることであると説明されており、上でもリンクしたこの感想文の言葉を借りれば「本来の目的とは違うあり方で表現したり用いたりすること」である。

その点、このランダムウォークはゲーム本編(これ自体も名作なのでぜひ)とは直接的になんの関係もないのに、なぜだかそのページを間借りして(つまり流用して)動き回っています。この謎な存在が画面のどこかでフニャフニャ遊び回っている、この状況自体がなんだか楽しげで、面白いと思います。

遊びとプログラム

Hello, world!

この文言が伝統として根付いていることを私は喜ばしく思うものであります。
(参考: Hello world - Wikipedia

何も「クリエイティブ」という修飾語を付けなくても、プログラムはそれ自体が一つの世界だし、プログラミングは世界をクリエイトすることに他ならない。

コーディング、つまりソースコードを書く、という体験にも一種の楽しみがあると思っています。

なぜなら、コードというのは変数やら命令やら関数やらといった構成要素、つまりはブラックボックス感をあまり感じないような部品に分解することができて、それを自分で組み立てるということはつまり、構成要素の一つ一つに責任と愛着を持ちながら自分の世界を構築できるということに繋がるからです。*5

ついでに書くとプログラミングというのは場合によっては少し多層的で、まず自分の作る世界がどうあってほしいのかという論理的なモデルを考え、それに対応するようなソースコードの構造を考え……というプロセスがありえて、これまた、世界およびその構築体験に深みを与えてくれます。*6

自分の世界を作ってそこに閉じこもることが是か非かみたいな話はあるかもしれませんが(コンピューターが出回り始めた時代にもそういう言説は多かったのではないかと思われる)、小さくても信頼できる世界を手に入れることが、他の世界で生きる力も与えてくれる、そういうことも十分にありえると思います。

さらに『プレイ・マターズ』から引くと、「あらゆる電算処理は遊びである」(p. 159)のくだりはなかなか面白いのではないでしょうか。誰が遊んでいるのかと言うと、プログラマかもしれないし、プログラムを見る別の人かもしれないし、あるいはコンピュータやプログラムそれ自身かもしれない。

この本を読みたくなった人へ

この記事は本書の内容をほとんどカバーしていません。

他にも色々な視点が得られると思いますのでぜひ!

と同時に、人によっては(いわゆる理系出身の人、私もですが)すこし読みにくさも感じるかもしれません。たとえば序盤で「遊びはさらにカーニバル的でもある」(p. 18)とか言われるので面食らうのではなかろうか*7。それに続く文などを読み通していけば意味が推測できるようになるかもしれませんが、一つ一つに引っかかっていると難しいかも。

訳者後書きで『本書は分析や論証というよりはアフォリズムめいた断言をひたすら繰り返す「マニフェスト」として読むのが正しい』(p. 220)とあり、それを先に知っておくと、なるほどそういうつもりで読めばいいんだな、と思えるので気が楽かもしれません。

とにかくそれ込みでも、(たぶん理解できていない部分も多いのですが)私は面白かったです。

終わりに

未解決問題への回答

創作がしんどい問題

「ちゃんとできなくてもいいんだよ」というのが慰めになる場合と、ならない場合とがあるんですよね……たいへん身に覚えがある……

上の話にこじつけてしまいますが、しんどさを感じている状態*8とは、自分と世界との間に何らかの問題が生じている状態である、と言い換えられるかもしれない。

で、あくまで私の例で言うと、クリエイティブコーディングをしたりゲームを作ったりする目的の一つはまさにその状態を解消することであるので、それがうまくできないというのは、一種の悪循環ではある。しかし逆に言うと、特に悩みもなくスイスイ創作できる状態だったらそもそも創作をやってないんだよな、というふうにも言える。

ということで、めちゃくちゃ消極的な解決になるけど、一歩引いて「そういうものなんだ」「まあえっちらおっちらやっていこうではないか」と捉えるのも一つの手かもしれません、ということを思ったのでした。

プログラムそのものは創造性に寄与しないのではないか問題

目に見えるアウトプットだけに魅力や創造性が宿るのではない*9(それはそれとして、主な関心は目に見える部分にあります、という人がいても何もおかしくない)。

クリエイティブコーディングという営みに関して言えば、プログラムを書くことそれ自体が目的になりえるし、コードを対象にしてああだこうだと考えることもまた本質的な楽しみの一つである、と言えるように思います。

とはいえ、世界を構築する方法がいろいろありえる中で、そのどれが自分にとってしっくりくるのかというのは人によるでしょうから、あまり最大公約数的なものとして考えるべきではないかもな、という気はします*10

タイトルへの回答

なぜプログラムを書き、ゲームを遊び、作るのか?

自分が生きる世界に意味を見出すためです。

いいこと言った。(受け売りやんけ!)


[追記]意味とは?*11

*1:ここでは、ライブでコーディングしながら音楽や映像を流すパフォーマンスのこと

*2:こう呼ぶのは何かしら具体的な理由があってのことではない、現実とはそういうものなのだ

*3:これを読む前にも私は「世界と折り合いをつける」とか「世界と和解する」みたいな表現を脳内で使っていたけど、なんというかドンピシャではない気もしていた。

*4:いわゆるクリエイティブ業界が商業的な文脈でやる場合はこれに含まれるのか、みたいな話を書こうとしたけど、よく考えるとはっきり分けられないように思えたので、こうして脚注に追いやった次第である

*5:実際のところどのレイヤーまで下れば掌握したことになるのかという疑問はあるし、隅々まで自分でやれるわけではないのですが、仮に他人の成果物を使うにしても、それを信頼するかどうかは自分で考えて決めることができる。仕事でもない限りは。

*6:なんか歴戦のプログラマみたいなノリになってきたけど素人ですからね!

*7:カーニバルとは何で、いついつのどこどこで政治と宗教と民衆の関係の中でどういう位置づけにあって、民衆の生活にとってどのような意味があって……みたいな話に知識と関心があればスッと入るのかもしれません。

*8:補足しておくと、ここでは創作そのものにまつわる大変さではなくて、自己管理に失敗しているとかそういうケースを言っている

*9:でもやっぱり、もっとかっこいい絵を作れるようになりたいよー、とは思っています。

*10:苦手意識を和らげる目的で「難しく考えなくていいよ」みたいに言うことは十分ありえて(特に Processing はそう)、そういう文脈だとこの話はむしろ有害なのかもしれないという迷いはあります。

*11:「意味」という言葉には複数の意味があって(ややこしい。後者のは「用法」と言うべきか)、その一つに「存在理由」とか「必然性」とかがありますが(「生きる意味」みたいなやつ。言い換えるなら「意義」とか「価値」とか。第三者を想定したもの、と言えるかもしれない)、ここで言っているのはそれ系ではありません。
感覚的な例としては、そよ風を観測したときに単なる風圧のデータとして捉えるか、それともそれ以上の何かを感じたり、周辺の環境について何かしら想像力が働いたりするか、その違いが「意味」である。抽象的な例としては、1248 という数字を見たときにただの数字の羅列と見るか、ア、これは等比数列だ、などと思うかどうかの違いである。
この意味において(ややこしい)、遊びは「流用」によってその場に新たな意味を付与する効果があり(遊びに限るのかという話は置いておく)、これはすなわち世界の捉え方について変更を加えるものである。豊かな意味を見出すことができれば、世界を好ましく思える可能性が高まる(豊かと言っている時点でトートロジーかもしれない。あと「世界」の範囲は? という疑問がありえるけど、そこは曖昧でも良いと今のところ思っている)。
結果、平穏が得られてめでたしめでたし……という感じに繋がると思っているのですが、哲学的にどんなことが言われているのかをまだよく知らないので、話半分でお願いします。