ソフトウェアという生き物

#52
2022.9.12

このサイトを組み立てていて思ったのである。ソフトウェアとは生き物であるのだと。まあメンテナンスという工程がある以上当たり前のことだけれども。誰かが面倒を見続けなければ死んでいく、それがソフトウェアというものである。そして私一人で開発しているならば、それを生かすか殺すかは、完全に私の一存で決まる。

向こう見ずに始めるのは簡単であるという点において、ソフトウェアを作るということは、ペットを飼うことと似ている。将来的な拡張性を考えずにソフトウェアを作り始めることは、そこまで難しくはない。しかし大きくなったソフトウェアを維持し続けることは決して容易ではない。新たな機能追加を行わないとしても、依存しているAPIの更新についていかねばならないし、バグを見つけたら潰す必要が出てくる。未来の自分は、過去の自分が書いたコードの責任を負う。

私はこのサイトの拡張を続けているわけなのだが、拡張するに伴って、コードは複雑化する一方である。というのも、このサイトでは、既存のCMSや静的サイトジェネレータを使用していないからだ。フルスクラッチでしかできない表現があると私は信じてこのサイトを作っているのだが、それに伴って沢山のコードを維持する必要があるのだ。

そして、Webという業界では、いつAPIが非推奨になったり、削除されてもおかしくはない。このAPIというのは、ブラウザネイティブのDOM APIはもちろん、Node.jsの標準ライブラリ、npmのパッケージ、CSS、など様々である。ゆえに、Webのコードというのは寿命が短い。

サイトを作る上で私が懸念していることはまさに、このコードの寿命の短さである。私が必死に試行錯誤した末にできたプログラムは、近い将来、意味を無くしてしまうのである。もちろん、そんな簡単に壊れるということはないのだが、Reactなんかのライブラリは、バージョンアップで大きく書き方が変わったし、いくつかのAPIは非推奨になってしまった。

当然将来意味をなさなくなるからコードを書くべきではない、というわけでは決してない。だが私は、書いたコードが将来動かなくなるという事実に憂いてしまう。

だから私は、コードに大した価値などなくて、仕組みを具現化させることにこそ価値があるのだと考えるようにしている。実際、ソフトウェアを利用する立場からは、多くの場合、その実装を見ることができない。コーディングとは、ある仕組みを実現するための手段に過ぎず、固執すべき事柄ではないはずだ。