![見出し画像](https://assets.st-note.com/production/uploads/images/72990931/rectangle_large_type_2_0d63bce3f2698005d3e805c83ea93f9d.png?width=1200)
ジェネラティブアート作成時の頭のなか #AltEdu2022 25 日目
今日のお題は「新しい時計」とのこと。
明日2/1(火)から開催される「#AltEdu2022」は2022年の2月中,毎日お題に合わせてクリエイティブコーディングに関わる活動をわいわい行う、コーディングチャレンジのお祭りです.毎日のお題はコチラ!https://t.co/bLzPfoLyqW pic.twitter.com/GTRdeT6rTT
— Processing Community Japan (@PCD_Tokyo) January 31, 2022
実は時計についてはここしばらくぼんやりと考えることが多い題材であったりする。というのも、少し落ち着いたら M5Stick C Plus で腕時計を作ってみようと思っているからだ。
とはいうものの、なかなか良いアイデアを思い付けていない。そういう意味でも今日のお題は結構難しい。
時計というのは実に標準化された規格である。新しい規格を提案・普及させることはかなり難しい。面白いもの・役に立つものであれば、おそらく普及するのであろうが、それもできていないのが実情である。
実はその昔(1998 年に)、腕時計で有名な Swatch 社が Swatch Internet Time なる新しい時刻システムを提案したことがある。時刻の単位は .beat であった。Swatch は時計メーカーでもあるので、もちろんこの新しい時刻システムを採用した腕時計も発売した。策定には、あのネグロポンテ(MIT のメディアラボの所長等を歴任した人)も関わっていたようだ:
swatch .beat のロゴも懐かしい。
この新しい時刻システムは、当時、日本でもそこそこ話題となった。情報感度の高い人達は、待ち合わせ時間などをこの新しい時刻システムを使って表記していたりした。
そんな話題となった .beat であるが、どうなったであろうか。ご存知のとおり、今や耳にすることすら難しい。新しい時刻システムの提案はかくも難しいものなのである。
新しい時計ということについて、もう少し気楽に考えてみよう。まずは、そもそも時計とは何であるか - について分析的に考えてみる。ものすごく大雑把に言えば、時間というある物理量を、何らかの方法を用いて可視化したものが時計といえる。砂の落ちた量や、とある物が回転した量など、様々な方法を用いて時間の可視化を行っている。それが時計である。
少し立ち止まって考えてみると、時間の量というのは、ある時間から、ある時間までの期間を表すものであり、いわば距離のようなものである。
そんなことをぼんやりと考えていると、ふとドラえもんのとあるひみつ道具を思い出した。時間を無駄に使うのび太に対し、ドラえもんが時間の流れを可視化する装置を使ってみせる - というエピソードである。
時間の量に着目するのは一般的だが、その流れに着目するのはなかなか新鮮である。時間の進む速度などは相対性理論で取り扱われているが、時間の「流れ」という概念はあまり存在していないのではないかと思う。先程、時間は距離のようなものだ - と書いたが、ドラえもんは距離ではなく、時速や時間の中を移動する際の流れる景色を可視化してみせた、とも言える。
さすがはドラえもんである。などと感心していると、ふと作品の全体像が浮かんできた。今回の新しい時計というのは、新しい表現やシステムではなく、時の流れを意識させる時計とするのはどうであろうか。時刻システムや表現方法については、あまり奇抜な事をせず、流れを感じさせることに注力しようと思う。
そんなことを考えていると、表示された時刻が拡散していくような、そんな表現を思いついた。text 関数で書かれた時刻を、copy 関数で拡散すれば良いのではないかと思う。copy 関数は久しく使っていないので、以前の作品を参考に使用方法を探る:
#つぶやきProcessing 大気圏突入
— Koji Saito (@KojiSaito) October 22, 2020
R=random
C=circle
F=fill
def setup():size(500,700);noStroke()
def draw():
F(10,20,50,15);C(0,0,2000);copy(get(),0,0,475,670,-4,-22,500,700);F(-1,99);
for i in [0]*9:C(110+R(100),R(80)+400,R(3)+1);C(124+R(9),450+R(9),R(9)+9)#dailycodingchallenge pic.twitter.com/QRgYLMANb2
この作品は流星の先端部分と破片のみを描画し、あとは copy でそれらを画面右上方向に拡散している。今回も同様の方法で、時刻を画面全体に拡散して、時の流れを表現してみようと思う。
背景の色や表示する時刻の位置を固定にしたりランダムにしたりと、試行錯誤の末、こんな感じとなった。
import datetime
def setup():
size(500,300)
textSize(40)
L=[0]
def draw():
fill(120,150,255,random(5));circle(0,0,3000)
copy(get(),2,2,496,296,0,-1,503,299)
t=datetime.datetime.now()
if L[0]!=t.second:
fill(-1)
u=random(100)
v=random(50)
for i in range(9):
text("%02d:%02d:%02d"%(t.hour,t.minute,t.second),50+i%3*2+u,240+i//3*2+v)
L[0]=t.second
note は動画が掲示しづらいので、動画の一部を連続的な静止画として掲載しておく:
![](https://assets.st-note.com/img/1645745251217-DQxl78Lo06.png?width=1200)
![](https://assets.st-note.com/img/1645745266018-npauxlJMZw.png?width=1200)
![](https://assets.st-note.com/img/1645745293279-V9gJOBPDnL.png?width=1200)
時の流れを上手く表せたかどうかは微妙なところであるが、今日の制作はここまでとしよう。というわけで、このコードを #つぶやきProcessing 化してみる。
インデントなどを除去して tweet 欄に張りつけてみると 108 文字超過である。その後、かなり頑張ってみたのだが、40 文字程度しか削減できなかった。
import datetime as T
def setup():size(500,300);textSize(40)
L=[0]
R=random
def draw():
fill(120,150,255,5);circle(0,0,3000);copy(get(),2,2,496,296,0,-1,503,299);t=T.datetime.now();s=t.second
if L[0]!=s:fill(-1);[text("%02d:%02d:%02d"%(t.hour,t.minute,s),70+i%5,240+i//5) for i in range(25)];L[0]=s
![](https://assets.st-note.com/img/1645747815631-AjQmf4obxO.png?width=1200)
![](https://assets.st-note.com/img/1645747862380-uWyZ0nCHhG.png?width=1200)
これ以上の文字数削減は、今の私の技術力では難しそうだ。それに、表現も少し変化してしまっており、あまり良い感じではない。本日はここまでとしよう。