プログラミングの楽しい所

 連休はあっという間に過ぎ去って、気がつけばもう九月が終わろうとしている。すっかり暗くなった道を歩いていると、雲の合間に、まぶしいほどの満月が見えた。ただの晴天よりもずっと情緒があるように感じられた。普段、単純さを好むくせに、このようなものに心引かれるというのは、いったいどういうことだろう。

 長めの休日があったので、個人的にゲームを作っていた。なかでも一番面白かったのは、モンスターを考える作業だった。最初は弱そうなモンスターを考える。弱いとはいえ、少しは気持ち悪い要素がほしい。そうすると、どんなRPGでも出現する「スライム」が、やはり適任だと感じる。もちろん、一匹では寂しいのでもっと数を考える。頭のなかで弱そうな生き物を探す。ダンゴムシなんてどうだろうか。小さく丸まって身を守る技を持っていそうだ。ダンゴだと弱そうだから鎧をつけていることにしてヨロイムシにしよう。

 こんな風に、モノとモノを組み合わせて何かしらモンスターを作る。名前から姿まで分かりそうなものにして、能力を一つだけ付け加える。他のモンスターと協力するような奴はどうだろうか。戦っていると成長して強くなるような奴はどうか。そいつと戦う時、プレイヤーはどんなふうに苦しむのか。うまい対策はあるのか。さすがに何十年もゲームばかりやっているおかげで、するすると次のアイデアが浮かんでくる。出てこなくなったら、生物図鑑を眺めたりするのも良さそうだ。

 二十個くらい思いついたところで、一番楽しい時間はお預けにする。どんなにモンスターを書きあげたところで、動かすための舞台が必要なのだ。そういうわけで、プログラミングに着手する。プログラミングが楽しくないかというと、そうでもないのだけれど、一番楽しい時間には劣る。だんだん飽きてくるので、続けるために、プログラミングの楽しい側面をもう見つめてみよう。

 わかりやすい面白さの一つは、プログラマの指示に対して、コンピュータが反応してくれることにあると思う。あらゆるプログラミング言語で最初にやることといえば、コンピュータに Hello World と表示させることだ。自分以外のものが、自分の命令に従ってくれる、意図通りに動いてくれるという単純な喜び。もしかしたら、犬にお手を覚えさせるように、コンピュータに愛情を持っているプログラマもいるかもしれない。

 それからもう一つは、全能感。プログラミングができれば、なんでもできるという錯覚を与えてくれるほど、コンピュータは万能な力を持っている。スマートフォンを見てみれば、そう感じるのも納得できるかもしれない。iPhone に入っているあらゆるアプリは、プログラミングによって生み出される。いくつかの工程があるとはいえ、プログラミングなしにアプリが生まれることはない。それを支配している、使いこなすことができる、という感覚は、うっとりするほどの魅力がある。

 後もう一つ。美しさを追求する楽しさがある。プログラミングはコンピュータに対する命令書(プログラム)を作ることだ。命令書というとそっけないものだけれど、それは意味を持つ文の連なりだ。言葉があって、表現があって、順序がある。こうして言い換えてみれば、なんとなく個性や創作性が生まれてくるということが伝わらないだろうか。美しさにも色々な基準がある。一番プログラミングと関わりが深いのは、無駄なく、的確な動作をする機能美だと思う。数学の証明のように、発想を一般化して、無駄な表現を削って、問題を解決する。オイラーの等式が美しいと認められているように、完成されたプログラムもきっと美しい。

 思いついたことを書いただけなので、他にも、まだ楽しい要素があると思う。わざわざ日頃、こんな会話をすることもないけれど、プログラマは皆、何かしらの思いがあってプログラミングをしているんじゃないだろうか。酒の入ったところで、上のような話をふっかけてみるのも面白いかもしれない。