Cogito Ergo Sum.

我思う故に我あり

遊びとしてのプログラミング

 「遊び」の本質がどこにあるかって考えてみると・・・、「遊ぶことそのものが楽しい」という点にあると思う。

 これは定義みたいなもので、もともと「遊び」として行っていた行為でも、楽しくないのにいやいややらなくてはならなくなった時点で、それは「遊び」じゃなくなる。

 僕にとって「遊び」、つまり「それを行うことそのものが楽しい」と思える行為はあまり多くないが、プログラミングは数少ない例の1つだと思う。そのプログラミングも「遊びが仕事になる」とつまらなくなる。

 あるプログラムを遊びとして作り始める。それはもう楽しい。遊んでいるだけなんだから。ところが、ある程度実用的なプログラムを作ろうと思うと、いろいろ調べなきゃならなかったり、いろいろテストしてみないといけなかったり、面倒くさいバグに悩まされたり、楽しいことだけでは済まなくなってくる。問題を片付けてプログラムを完成させることが目的で、プログラミング・デバッギングは目的を達成するための手段になってくる。この時点でプログラミングは遊びとしてより仕事としての色彩が強くなってくる。つまらなくなってここでやめてしまう(本当に「仕事」ではないから)。

 というわけで、遊びのプログラミングがつまらなくなってきたら、再び「遊び」の要素、つまり、それを行う(達成する)ことそのものが楽しい、という要素を導入する必要が出てくる。例えば、今まで試してみたことのない方法を使ってみるとか、他のプログラミング言語にチャレンジしてみるとか、他人のプログラムの良いと思った点を自分のプログラムに反映させてみるとか。というわけで、誰の目にも明らかに必要のないプログラム大改造を始めることになる。

 子供を見ているとわかるが、同じ遊びは飽きる。常に新しい要素を導入する必要がある。子供はすぐに飽きて新しい遊びを作り出す。あれどうやって新しい遊びを作り出すんだろう? そうか独りで考えるんじゃないんだ。皆で新しい遊びを創り出していくんだ子供は。1人1人が思いつくアイデアはそれほど斬新じゃないとしても、その新しい組み合わせが新しい遊びを生み出すわけだ。…って本当かな?