DO THE SAMURAI BLOG

みんなでつくる神社・お寺の投稿サイト「ホトカミ」を運営している、株式会社DO THE SAMURAIのブログです。

プログラムは詩【コンピューターのエッセイ】

こんにちは。小沼です。

プログラミングをしていると、プログラムは詩だと気づきます。
プログラムは、詩と同じで、文字の組み合わせでできています。

プログラムを読むときは、書いた人の気持ちや性格を感じます。

プログラムを書くときは、読む人(これは数日後の自分だったりする)が、今の自分の気持ちをうっすらと感じてくれるだろうなーと思って書いてます。
ただ動く以上に良いコードを書こう。真心を込めて楽しみながら、プログラムを書きます。

もちろん同じ動作をするプログラムは、当然似たようなプログラムになります。
だけど、プログラムの中の並びや命名の微妙な違いとかが、書く人の詩的センスを表します。

詩のように楽しみながらコードを読み書きすることは、安らかな気持ちになれるだけではなく、実用的な意味もあります。

コードを眺めているとたまに、「あれなんかいつもと違うぞ」と直感的に感じます。
そういうコードは、実はどこからか写して、ちょっと書き換えただけで、動くけど書いた本人が、あんまり理解してないことが多いです。
このようなプログラムは、のちのちバグを生み出す原因になり、修正が大変になります。
なのでコードをレビューするときには、詩的な感覚を敏感にして「あれなんかいつもと違うぞ」と思ったら、その周りの部分を念入りに確認します。

それから、コードを眺めているときに、不安な感じがするときには、たいていバグが見つかります。
論理的な理解がなくとも、「あー、なんかやばい気がする」とぞわぞわしたら、きれいに書き直しておいた方がいいです。

ところで体育は、僕がずっと嫌いな科目だったんですが、大学で人生で唯一楽しいと思えた体育の授業がありました。
その授業の先生は、できないことを考えすぎたりせずに、「ただ楽しくやる」ことが大事だと教えてくれました。
ただ楽しくやることで、人間の体や脳は、無駄な力が抜けて最大限の能力を発揮することができる。
そうしてただ楽しくやってると、そのうちできるようになってくる。
ずっと体育が嫌で、どうしたらできないことができるようになるのか、悩んでた自分にとっては非常に助かる教えでした。

この「ただ楽しくやる」理論は、運動・スポーツだけではなく、プログラミングの世界にも通用することだと思います。
コードを読み書きするときには、プログラムの詩的世界に入り込み、ただ楽しむことが大事です。
論理的な部分以外からも、プログラムを感じ取りやすくなります。

僕は、プログラムの詩的世界に入り込める人は、プログラムのセンスがある人だと思います。
新しいシステムを使い始めるときには、そのシステムを眺めながら、プログラムの詩的世界に潜り込んで、その操作の仕方だけではなく言語化し難い、文化や雰囲気を理解する。
そうするとシステムを作った人の設計思想が腑に落ちて、親しみを持って使うことができます。

プログラムの詩的世界への入り方、感じ方、楽しみ方は、個性があって、それがコードに表れてくるのだと思います。
この個性は人としての雰囲気や人生観ともリンクしている。
それは文学的な詩が、作者の人間性と精神的状況とリンクしていると同じです。

それから、プログラマーの得意なシステムの傾向も、プログラムの詩的感性が関わっていそうです。
正確性に欠きますがプログラマーは、なんとなくの感じるその人の雰囲気と、その人の得意なシステムには、相関性があります。
そういう点ではベンチャーにベンチャーっぽいプログラマーばかり、大企業に大企業っぽいプログラマーばかりというのは、技術の偏りを生んでしまい、良いとこ、悪いとこありそうです。

初心者がプログラミングを書き始める障壁も、文学的に詩を書き始める障壁に似てます。
「何を書いたらいいのかわからない」
「なにが面白いのか理解できない」
という感じのものです。
この障壁の乗り越え方は人それぞれで、プログラミングの本を読んで勉強したり、その本の中のコードを書き写したり、突然インスピレーションが来るのを待ったり。
初心者がプログラムの詩的世界への入り口を見つけること、教える側がそこに導くことは難しいことだと思います。
僕もよく初心者からどのプログラミング言語がおすすめか聞かれるのですが、ひょっとしたら自分の好きな言語より、詩的世界の入口へ導くために、その人の内面的な雰囲気に合わせて、向いてそうな言語を答えるといいのかもしれないですね。

ここまでふわふわと、プログラムと詩について書いてきました。
自分の感覚をただ文字にしただけなので、読む人によっては、あんまり納得しがたい部分もあると思います。
それでも、プログラムに芸術的側面があることは、多くの人が指摘しています。
大間違いでもないでしょう。

「プログラムは詩」

もう少しプログラミングがうまくなったら、再考してみたいと思います。