見出し画像

アーキテクチャ宇宙飛行士たちにバルスを送ろう

きちんと失敗に対してダメージを受けて欲しいと思っている。そういう書き出しからはじめると「酷い、わざわざダメージを受けさせるなんて鬼畜の所業ですね、性格悪っ」と言われかねないのだが、まあそれに関してそんなに真摯に否定する気もないのだが、ただ、自分が失敗したのにそれに気づけないのって本人にとっても不幸だなと思う。まあ、別にその人が幸せになってほしいなんて一ミリも思ってはないのだが、後に続く人に迷惑をかけるのはいただけないのだ。

例えば。

あるチームで素晴らしく意識の高い系の設計をして「この設計でどんなシステムでも汎用的に使える、この設計を引き継ぐ人は最小限の労力でメンテができる!」と思った人がいるとする。フィクションです。でもその結果、意識の高さに周りが付いて来ず結果使うのが面倒くさいのに大したことをしてくれないソースコードが生まれたとする。そのソースコードを作った人は、ふーいい仕事したぜ、と思っているので、新しいチームでその設計を繰り返す。本人は成功体験だと思っているからだ。結果、引き継いだ人はそのソースコードの拡張性と言う名のもとの長ったらしい冗長化さに苦しみ続けることになる。

まさに、後の世代に迷惑をかけ続けている構図だ。モノがある分厄介で、お客さんはこういう。「前からある機能なんだからもっとお安くできるでしょう?(ソロバンパチパチ)」我々も答えに窮す。前の人が夢を追って無駄なことばっかりするように作っちゃったので、それのメンテにはとってもお金がかかるんです、僕のせいではないんです、前任者が酷かったんです、とはなかなか言えない。前任者を引っ張りだして焼き土下座させるわけにもいかない。詰みである。

「アーキテクチャ宇宙飛行士に騙されるな」と僕の心の師であるジョエル・スポルスキさんは言った。設計者は偉くなればなるほど概念を設計しはじめる。高度な抽象化をしはじめる。この機能とこの機能、共通部分を抜き出して抽象化すると……つまり、宇宙ですよね?(ドヤァ)我々は宇宙飛行士ではないし、事件は会議室で起こっているわけではない、現場で起きているし、レインボーブリッジは封鎖できないし、アーキテクチャ宇宙飛行士のロマンも封鎖できない。
そしてその結果、地に足のついた民は苦しむ。

「なんでこのボタンを押したら反応するだけのを実装するのにConnectedTotheWorld()なんて関数呼んでるんだっけ?」

「そう、我々の開発してるモノは、つまりは世界とコネクトするってことだからね(ドヤァ)。」

うるさい黙れ。お前の中途半端な夢のせいでこんなに僕らは苦しんでいるんだ。我々の苦しみを感じろ。三年ぐらい眠れぬ夜を過ごし、自分には設計の才能がないと落ち込んでイチジク農家への転職を真剣に考えろ……と願ってやまない。ちなみにイチジク農家はアーキテクチャ宇宙飛行士よりは500倍ぐらい大変な仕事だ。なんてったって、イチジクの出来が悪ければきちんとダメージを受けるからね!宇宙と繋がってる君と違って!

声のでかいデザインセンスのない人を滅ぼすには、彼らに事実を突きつける仕組みが必要だ。僕が初音ミクの曲を作っても250再生で止まるように、お客さんの語るユーザメリットのない理想や、拡張性を考慮した結果完全に失敗したソースコードや、とりあえず切っておいたけれど5年間使われていないAPIもきちんと250再生で止まって、発案者が悩み続けるような仕組みが必要だと思う。設計書にユーザ投票できる仕組みつくったらどう?そうする事で、少しはまともになる、そんな気がするのだ。

「今回も売れるアプリができなかった。委託したベンダーが悪かったんだ」
「いや、あなたが『ポケモンGO』みたいに売れるアプリを作りたいなんてふわっとした依頼をしたからですよ、あなたの依頼の仕方、ユーザ投票では99%が支持しないと言っています。立場を降格します」

人類は地面を離れては生きてはいけないのよ。というメッセージが天空の城ラピュタにはあった。その考えに基づけば、地面から離れて完全に宇宙(そら)に住んでいるアーキテクチャ宇宙飛行士達はバルスされるべきだが、ラピュタ王はしぶとい。滅びないどころかダメージも受けない。人がゴミのようだと、下界を見下ろし続けている。全員、僕の心の逆刃刀で殴り倒して入院させてやりたい。

無論、アーキテクチャも設計する自分への自戒も込めつつではある。僕はもしかしてオリジン宇宙飛行士に届かないかなと思いながら、あるソースコードに対してみんなが見えるところに「諸悪の根源」「呪いのモジュール」「生産性を下げ続ける化け物」と書き続けている。いつかこの呪いよ、届け。

この記事が気に入ったらサポートをしてみませんか?