大きくて多機能なものよりも、小さくてシンプルなものを好むようになった
投稿日: 2023-01-18
主にプログラミングの話。 最近プログラミング業をしていく中で気づいた自分の変化。
以前はパワフルそうなライブラリを見つけたら、「取り込んでレバレッジを聞かせて高機能なものを素早くリリースや!」と前のめりでやっていたのが、最近では「今本当に必要なものをシンプルに自分で作ろう」と考えるようになった。
いくつか理由は思い浮かぶけど、主には 高機能なライブラリを入れてもあまり使われないことが(多々)ある
ってことと、 メンテがだるい
ってところが大きい。どちらかというとやはり後者が大きい。
そう、メンテがだるいのである。 メンテは主にバージョンアップのことを指しているが、そのライブラリ自体のバージョンアップに限らず、フレームワークのバージョンが上がったのにライブラリはそれに追従してなくて、自サービス内でのフレームワークアプデの邪魔になるとか色々。
高機能であればあるほど自分が使っていない機能の改修でアプデが入るし、破壊的変更を入れてどんどん改良してくれるし(自分達はほとんど使っていないのに関わらずというのが重要)。また、高機能であるが故にライブラリ自体がフレームワークのバージョンアップに追従するのも大変で対応バージョンの公開が遅くなったり。
自分は Vue3 のアプデ対応で色々思い知った口だけど、似たような話はプログラミングの歴史で繰り返されてきている気がする。
そんなこんなで欲しくなるのは小さくてシンプルなもので、それくらいのライブラリを入れるくらいなら自分で作っちゃえってなって作るのだが、さっき言ったフレームワークのバージョンアップ時にその機能の改修必要になることあるじゃん、ってのはそれもそう。
なので、可能な限りフレームワーク非依存で作りたい。とは言っても言語レベルでの仕様変更もあったりで完全に仕様追従のためのメンテからは解放されないが、それでも更新の手間暇は少なく済むはず。
というわけで、後で拡張される余地を残しつつ、今必要になっているものだけをシンプルに作るというのが良いと考えるようになってきている。やっぱり機能が物足りないとなったら、自分か必要と感じた人によしなに追加してもらおうという具合。YAGNI、YAGNI。
何に通づるか
日常生活に通ずるものはないかなーと考えてみると、そういえば最近は壊れにくくて、そこそこいい機能が備わっているものを買うようになっている。家電とか。
なぜかというと、買い替えをしたくないのである。買い替えが面倒なのだ。 壊れやすいものだともちろん買い替えが必要だし、安物買いの銭失い的なものでもやはり買い替えたくなる。そういうのが嫌で、1 回の買い物で長らく買い替えから解放されたいという怠惰。
プログラミングも、家電の買い換えも、怠惰の故に行き着いた結論という共通点がありそうだった。
何を失うか
怠惰を突き詰めるといいことばかりではなく悪いこともやはり起きてくる。例えばこのブログも可能な限り少ない技術で小さく作っているが、そのせいもあって現状貧相な見た目になっている。
後から拡張すればどうにかなるとは思っているが、最初からリッチな UI フレームワークなどをつっこんでいれば今より幾分マシな見た目になっていそうではある。
ブラウザが勝手にめっちゃいい感じの見た目に整えてくれればいいのだけど、今はそうなってくれないので何か方法考えないと。できればライブラリとかはあまり入れたくないけど、自分で CSS をたくさん書くのも何か違うなという気もする…。どうしたものか。