猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

設計の直感がいい感じにハマって仕様変更に耐えることがある

実装方法に悩んだ時、論理的に考えたわけではなく、私個人の直感で「普通に考えてこっちの実装の方がいいだろう」と思って進めることがある。すると、突然仕様変更が来て「この設計にしてたから仕様変更に耐えたー」となることがある。

最近だと、ある値をクエリパラメータで引き回すか、DBや LocalStorage などの永続化層に保存するかで悩んだ結果、クエリパラメータで引き回すようにしたのだが、その結果その後の仕様変更に耐えた、ということがある。

人間の脳の構造的に、成功体験だけ記憶しやすいから覚えてるだけなのかもしれない。

クエリパラメータで引き回すという方法は、あるページのアウトプットが次のページのインプットになるということである。「次のページ」はクエリパラメータというインプットだけによって動作が決まることになる。

永続化層に保存するということは状態を持つということになるので、「次のページ」のクエリパラメータが全く同じであったとしても、永続化層の状態によって動作が変わることになる。

一般的には状態は少ない方がいいので(今回の場合はDBに保存されている値などが「状態」である)、他の条件無しで考えるのであれば、クエリパラメータで引き回す方が良い。

ただし、UX(ユーザーエクスペリエンス)の設計によっては永続化層に保存する必要がある。保存したことによるコストと、UX向上のベネフィットを天秤にかけてどちらにするか選択する必要がある。

最初の頃はそんなこと知らないので、ちょっとづつ学んで、自分が各コードを改善していくのだが、慣れてきたらこういった比較は直感的に瞬時に実行できるようになっていく必要がある。

プログラミング勉強したての頃、forを書くときに添え字がどう変化していくか考えながら書いていたと思うが、少なくとも今の僕はそんなこと考えなくてもプログラミングできる。

プログラマーは息を吸うようにプログラミングできる。テレビを見ながらでもコードは書けるし、for文が何回まわるなんていちいち考えなくて直感で書ける。

「息を吸うようにできる」ことを増やしていきたい。息を吸うようにコードが書けるようになったら、今度は息を吸うように「良いコードを書ける」ようになるべきだし、その次は「息を吸うようにコード設計ができる」ようになっていきたい。

直感で正解を引ける領域を増やしていきたい。