ソフトウェア開発は現実のモノゴトを抽象化する作業だなと思っている。
たとえばユーザーというモノをソフトウェアで表すとき、それぞれのソフトウェアで必要なプロパティしか定義しない。すべてのソフトウェアで血液型が必要とは限らないし、脳のシワの数なんてきっとほぼどんなソフトウェアでも不要なはず。(絶対なんて言えない)
だからこそ対象領域の理解が必要になる。扱うモノゴトがどういう概念か理解しないことには抽象化なんてできないし、場合によっては意図とはズレた抽象化をしてしまうこともある。なんと難しいことか。だけどもここが楽しいところでもあるな〜と思う。
話は変わって、イラストとかも抽象化の作業なのかもな〜などと感じている。
少し前に、iPadで写真のトレースにハマったことがある。簡単な線画のイラストを描いていた。例えばこれ。

これを書いているとき、めちゃくちゃ抽象化する作業だな!という感覚になっていた。雑に言えば、写真をなぞって線を描いただけ。なんだけど、どのペンを使おうか太さはどうしよう、どこまで細かく描描こうか、ここは省略しちゃおう、なんて、考えることが多い。たぶん同じ写真を他の人がやっても全然違う印象のものができるんじゃあないかな。
抽象化の目的は違えどなんか似てると思うんだよな、ソフトウェア開発とイラストとかデザインとかって。すごい創造的で、だけど論理的だったり泥臭いところもあるというか。
対象物であるモノゴトに対して、それをそれたらしめる部分を選び、ときにデフォルメし、どこを切り取るのか、だれになにを伝えるか、さまざまなことを考える作業。意図的な情報の取捨選択の繰り返し。
ソフトウェア開発も創造的な作業なんだよねっていつも思う。だから好きで楽しい。
なぜこれを書こうかと思ったかというと、Xでフォローしている猫をたくさん描くイラストレーターさんの絵が本当に素敵で、猫への愛や理解の深さが伺える最高の抽象化だなといつも思っている。
雑な締めだけど、こういうソフトウェアを書きたいし、自分は絵が描けないけれど、とっても憧れてしまう。