プログラミングは芸術か?

1999/9/13

 今回はがらりと趣向を変えた話です。

プログラミングと芸術

 もう何年も前のことですが、プログラミングを学んで、いくつかプログラムを書くようになって感じたことは「プログラミングは小説を書くことにとてもよく似ている」ということでした。学生時代に小説を書いた(ひとりよがりで書いていただけのものですが)ことがあったので小説を書く難しさ・楽しさも少しはわかるつもりです。プログラミングの難しさ・楽しさはこれにとても似ています。
 まずプログラミングは同じ目的のものであっても、作る人とその状態によってまったく違ったものになるものです。「完全な正解」というものがないため(場合によっては正解なしということだってあります)いろいろな解が考えられます。このことはプログラミングの難しいところでもありますが、逆にいろいろな解を考えることはとても楽しいものです。小説でも同じような筋書きのものであっても展開が異なるものがいくつもかけますし、それこそが楽しみでもあります。
 またプログラミングの際には非常に微妙なところで悩むことがあります。ちょっとしたモジュールの構成の仕方の違いや条件分岐の仕方などといったところです。こういったところはプログラムの動作自体にそれほど影響は出にくいものですが、「わかる」プログラマが見れば微妙なところでのプログラマの悩みなどが見てとれて思わず唸ることなどもあります。やはり小説でも書く方は細かい文体などにこだわりますが、筋だけ追うような読者にはそれほど違いは分からず、やはり文章をも味わうような読者にはそのこだわりが楽しめたりするものです。
 小説に限らず、プログラミングは芸術全般(芸術という言葉は曖昧ですが)における創作活動に似ているといえるのではないでしょうか。

究められたプログラミングとは?

 芸術ではある道をたどってその表現技法が究められていくことがよくあります。小説では最初のころは様々なレトリックを駆使し、またその使い方を磨いていくことによってその技術を高めていきますが、そのうち自然な文体(自然にきれいな文とでもいうようなもの)へと辿り着いていったりします。絵画でも抽象画などの例で同じことが見られます。「わびさび」とか「究めた」といった境地への到達です。
 ではプログラミングではどうでしょうか?やはり同じではないかと私は思います。最初はいろいろと凝ったテクニックを駆使してプログラミングをすることに喜びを見出したり、またそれこそが技術を高めることと思ってこういったテクニックを磨いたりするものです。それが徐々に、テクニックも「定石」としてさりげなく使いながらも全体としてはオーソドックスに淡々としたプログラムへと変化していくように思います。
 ただ一つ芸術と違う点があると思います。芸術は、その目指す方向も多様化し前衛的なものへも展開していきます。しかしプログラミングでは目指す方向はあくまで何かの処理を行うプログラムを作ることなので、前衛的な方向というものへは行かないように思えます。少なくとも私にはあまり想像できません。前衛的なプログラムというものがどういうものなのか...(実際には驚くほど一種"前衛的"な?プログラムをときどき見かけてしまいますけれど;究めた上での前衛的なものとは違うと思います)。

プログラミングは生産活動になれるのか?

 ここまでプログラミングと芸術創作活動との類似性について述べてきたわけですが、実はこのことが現在のプログラミングの問題点の一つでもあると思います。
 プログラミングが芸術的創作であることが問題だというのではありません。その認識が曖昧であることが問題だと思います。具体的には以下のようなものです。

(1)プログラミングと一口に言っても、芸術的創作が活かされるような分野(従来のものから大きく進化したようなソフトウエア開発)と工業製品生産のように行われるべき分野(既存技術のみを使ったソフトウエア開発やメンテナンス作業)とに分けて考えられるべきである。現在はもっと単純にできるところで芸術的創作のような開発がなされ、結果としてソフトウエアの品質に問題が生じたりしている。
(2)(1)のように分けた場合、同じプログラマといっても仕事内容と、必要とされる技術にはかなりの差が生じる。しかし現在の日本の企業ではこういった差を認めたり、また芸術的創作のような職種自体を受け入れるような体制は整っていない(最近動きはいろいろあるようですが)。

 オブジェクト指向プログラミングが普及し、ソフトウエアコンポーネントがうまく流通すればプログラミングはどんどん単純になると思われていました((1)で述べた単純開発できる分野が広がるということ)。徐々にはその方向に進んではいるのでしょうが、まだまだ工業製品の生産活動とソフトウエア開発の実態には開きがあるように思えます。

 個人で、趣味で、プログラミングする場合には今回述べたようなことには関係なく、思い切り頭を使って、楽しんでプログラミングしたいものですが。


メール アイコン
ご意見・ご感想はこちらへ
トップ アイコン
トップへ