コードに愛を注ぐ

愛のないコードは好きになれない。

機能仕様は満たしているものの、中身はネット上のコードのコピペで、複数のコピペ元のコーディングスタイルが絡み合った、使われない変数とステートメントがあちこちに残ったままのスクリプト

正常系での見た目の振る舞いには問題がないものの、使い勝手の悪いインタフェースで、異常系が考慮されてなく、リソース管理の観点が抜け落ちていてメソッド呼び出しの度にメモリリークが発生するクラス。

「とりあえず『現物合わせ』で動く代物を拵えた」という作り方をされたために、開発担当者の手元では動作するものの、中身を軽く見ただけで「これ多分、他の端末だとまともに動かないよね」と分かってしまうPCアプリケーション。

そのようなコードを目にする度に、陰鬱とした気分になる。

どれもこれも、コードに注ぐ愛が足りていない。足りないから、歪な成長を遂げて奇形が出来上がってしまう。奇形はやがて怪物となり、創造主を脅かすだろう。

怪物は退治しなくてはならない。しかし私はハンターではない、という思いがある。プログラマは誰だって創造主のままでいたいのだ。

だから、奇形や怪物に遭遇すると、不本意ながらハンターの役割を果たさざるをえないことに気づいて気が落ち込むし、奇形ばかり生み出す人と仕事をするとストレスで気が滅入ってしまう。

それでは、自分自身はどうかというと、どうにも自己愛が強すぎて、自己流で癖の強いコードになってしまう。愛とは名ばかりの自己陶酔にすぎず、結果として愛の足りないコードが出来上がってしまう。

個人的な理想は「空気のようにその場に溶け込むコードを書くこと」で、言語で例えるなら「C++C++らしく、KotlinはKotlinらしく、PythonPythonらしく」書きたいし、GUIフレームワークなら「CocoaCocoaらしく、MFCMFCらしく、QtはQtらしく」書きたい。なのだけど、どうにも他の言語やフレームワークの流儀が混ざったり、機能の好き嫌い故に当該言語からすると独特なアプローチを採用してしまうなどして、癖のあるコードになってしまうのだ。

他人のコードを読むのを怠り、殻に閉じこもり続けてきた弊害だろう。

コードに愛を捧げるのは容易い――愛だろうと自己満足だろうと、捧げるのは簡単だ。しかし、それがコードに届いて注がれるか否かは別の話だ。コードに愛を注ぐことの、なんと難しいことか。

ところで、ひとつ重大なことを述べておくと、プログラマという人種は、ソースコードという「記号を並びたてたヨクワカラナイ代物」にたいして、美しさを見出したり愛を感じたりするヘンタイもとい少々特殊な趣味の人たちである。昨今の各国におけるプログラミング教育必修化の流れと、その副作用として発生するかもしれない「プログラマが増える」という側面*1に、私は人類の業の深さを感じずにはいられないのである。

*1:基本的には「『コンピュータとプログラミングがどういうものか、またどのようにして現実世界の問題に適用すればよいか、理解している人』を増やす」というのが必修化の目的だろう、と理解している。