そう、問題はそこだったのか。なぜオブジェクト指向で作るのか。
検索すればオブジェクト指向なるものが何なのかは日曜プログラマーの私でもわかる。クラスを継承させていくだとか、オブジェクトを作るだとか、そういう話はわかる。でも、なぜそれをするのか、という点があまり腑に落ちていなかった。
メンテナンスしやすいだとか言われても、自分の作業効率改善のためのちょっとしたコードしか書かない私なんかには、実感が湧かないし、ついでに言えば実際にどう書いていいのかもわからない。本書を読んでも、実際にどう書いたらいいのかまではわからなかったが、それでも「なぜ」の部分はずいぶんすっきりと見通しが立った。コード書きではなく、まさにその解説のために書かれた本だからであろう。
本書である程度下地ができていたからかもしれないが、先日ちょっと驚くことがあった。たまたま結城浩先生が作られた「Draft」というWebツールの裏側にあるdraft.jsというJavaScriptを読み込んでいたときに、はっと気がついたのだ。書いてあることが非常によくわかる、と。
このコードの部分は何を意味していて、何を意図しているのか。それがコードを書いたわけでもない私にもわかった。アルゴリズムの詳細は理解できなくても、だいたいこんなところだろうなと見通しが付いたのだ。それがつまり、メンテナンスしやすい、ということなのだろう。なにせ自分で書いたコートでも、数ヶ月経てばさっぱり何がどうなっているのかわからなくなる、ということがよくあるのだ。他人が読んでもスッと理解できるなら、そのコードはメンテナンスや再利用がしやすいはずだ。
もちろんそこに書かれていたコードはオブジェクト指向そのものではなかったのかもしれない。でも、オブジェクトという単位で変数と関数をまとめて「ぎゅっと」機能を濃縮させ、かつ他のコード部分との依存度を減らすことで見通しの付きやすいコードが生まれる、ということがわかった。でもって、そういうニーズに応じて生み出されたのがオブジェクト指向なのだろう。その点が理解できただけでもずいぶんと心の姿勢は変わった。
もちろん、今でもオブジェクト指向でコードが書けるわけではないのだが、苦手感はかなり減退したように思う。大切な学びの一歩である。