関数型ポエム
この広い世界、目の前に広がる人波
ざっと見渡せば君はそこにいた
けいかいな風に黒髪が流れる
ルージュの髪飾りがこちらをのぞく
ながい髪の君が微笑んだ ※1
■とりあえずポエムというやつを書いてみた
コラムを長いこと書いていると、人の言うことが気にならなくなる。だから、こういう背筋が凍るような腐敗臭の漂うポエムをシラフで書けるようになる。仕事の合間の息抜きにエンジニアライフを読んでいて、こういう腐敗臭漂うポエムをブツケられてさぞかし不快感なことだろう。ざまぁみろ。
さて、このポエムというやつだが、実はプログラムコードの対極にあるものだと考えている。対比させるとだいたいこんな感じだ。
ポエム | コード |
心を動かす | コンピュータを動かす |
抽象的に書く | 具体的に書く |
好んで書くのは女の子 | 好んで書くのは男の子 |
クサイ | 時に血の臭い |
ポエムは人に想像させるという手法の元に成り立つ。具体的に書きすぎると想像の余地を確保できなくなる。上記のポエムを状況報告書風に曖昧さをて排除して書くとこんな感じになる。
渋谷駅前の広い交差点で、1205名(目算)の男女が行き交っている。
周囲を状況を確認。北北西の方角102m先にエンジニアライフ担当の美人担当者、波間舞依さん(仮名)を発見。
ちょうど肩にかかるくらいの髪がなびく。なびき方から瞬間風速は28.6m/sほどと計測。
頭に装着している髪飾りは色は原色に近い赤。事後の調査により、ドンキホーテにて980円(税抜き)で購入された物と判明。
顔が小さい分、感覚的に髪が長く見える。そんな彼女が、ふと微笑みを浮かべた。 ※1
どうだろうか。同じ状況を書くにせよ、曖昧さを避ける事により全く別物となる。ポエムとは、曖昧さから想像させることでポエムとして成り立つ。想像の余地を削ると成り立たなくなるのだ。逆に、コンピュータを動かすコードに想像の余地を加えると、全く別のものになる。
print "The World"; #コード
↓変換
このように、単に言葉を出力する構文を人が読む前提の形に変換して、想像の余地を与えることで大きく想像を掻き立てる一言へと昇華する。強引なこじつけだが。
■ポエムとコード
ポエムというと、ネタに詰まった女の子がよくツイッターやFBで書いているが、実は綿密な計算が必要だ。表現は曖昧で、最大限の想像を膨らませるが、確実に想像の行き着く先は計算されている。あるポエムは、誰が読んでも強烈に同じものを想像するように意図されていたり、あるポエムは、多くの人が読んでも同じものを想像できないような。そういう意図の元で書かれるものだ。言葉をシンプルに削り、的確に想像を操作する。きちんと書いていくとコードを書く時に似た性質を帯びる。
また、コードもポエムに似た要素がある。同じ動きをするコードでも、書き方やコメントの入れ方で、ポエムのように相手に想像を即すテクニックが必要になる。ただし、想像させるのは心地よい平原とか、初恋の切なさではない。あくまで運用だとかシステムの構造とかそういうものだが。
ポエムを書くには、単に情緒的なだけではダメだ。無駄な思考や言葉を省く等の工夫が必要だ。これはコードを書くのに必要な要素だ。コードを書くにしても、コンピュータが的確に動く具体性だけではダメだ。読みやすさという人間に対する気遣い、相手にコードの意図を想像させる工夫が必要だ。
このコラムを読んでいるあなたもコードばかり書いていないで、たまにはポエムでも書いてみてはどうだろうか。脳みその、いつもと違った部分を動かしてみると、新たな発見があるかもしれない。ただし、コメント欄にポエムを書いたら怒ります。
■関数型ポエム
そもそも、なんでこのコラムを書いたかというと、Twitterでたまたま「関数型ポエム」というキーワードを見つけたので書いてみた。キーワードをつぶやいた本人には、本日コラムを公開する事を告知してある。そして、ポエムにはキチンと内輪ネタを仕組んでおいた。そんなことで、私なりに関数型ポエムというものをいろいろ考えてみた。
その結果、たどりついた答えが「※1」だ。後でこう書いておくと、「※1」が、ちょうど関数と似たような動きをする。
※1 ただし、それは僕に対してではない。
これを後で定義するだけで、ポエムを引数に取って、出力される想像が全く別のものに変換されるはずだ。しかも、複数箇所での使用が可能だ。ポエムに修正の必要が生じた時でも、「※1」以下を例えば「それは私の優しさが罪だから」と変換するだけで、与える印象の変更が可能だ。これって、関数型ポエムと言えなくもないような気がするのだがどうだろうか。
・・・あ、いいよ。答えはコメント欄に書かずに君の胸の中にしまっておいてくれ。