Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

『現場で役立つシステム設計の原則』という本に対して思うこと

前置き

「現場で役立つシステム設計の原則 読書会」に行ってきました。

kansaiddd.connpass.com

で、所感とか書こうかと思ったんですけど、勉強会の内容そのものよりまず『現場で役立つシステム設計の原則』という本に対して思うことが膨らんできたので、一旦そこだけにフォーカスした内容で一エントリ書くことにします。

この読書会自体は恐らくあと十回くらい続くので(十回で済むんかな?)、そこで得たものはおいおい現場やブログでフィードバックできたらいいかなと思っております。

『現場で役立つシステム設計の原則』という本に対して思うこと

基礎知識

第一章を読んだ時点の感想が「うわこれオブジェクト指向の基礎知識は必須だよな」、第二章を読んだ時点では「うわこれ少なくとも Effective Java に挑戦できるレベルは最低限必要じゃないか」。 そこで、次に十章を流し読みしてみました。章のタイトルが「オブジェクト指向の学び方と教え方」だったので、もしかして前述の OOP に対する前提知識がそこで身につけられるようになっているのかなぁと思って。でもそこに答えはない、ように見えます。「こうすればオブジェクト指向になります」ってことは書いてあるっぽいんだけど、「何故そうすることでオブジェクト指向になるのか」については書かれていない、ように見えます。

じゃあやっぱり、オブジェクト知識の何たるかは前提として持っているかなんとかして自力で身につけないといけないっぽい。

行間

今回の読書会自体に対する感想として、「みなさんめちゃくちゃ行間を読み込んでるなー」というのがありまして。また、Twitter やブログでも、異口同音に「考えさせられる」という感想が目立っているように見受けられます。また、読書会の中で「この本は徹頭徹尾各論しか書かれていない」って話題が出てきました。

つまり、この本は行間を読めないと全く読めたことにならないのではないかと。

なまじ読みやすい本なだけに、考えずに読んでいたら「あーそうそう、そうだよねー」で終わってしまう危険性があって怖いです。

もうちょっと考えてみた

そんなことも踏まえつつ、読書会から帰ってからいろいろ考えていたんですが、結局この本に書かれているのは著者が直面してきた「ドメイン」に対しての解の一つ、でしかないのではないかなぁ、と。もちろん普遍的に通じるところもいっぱいあるというか、普遍的に通じる部分を、書籍として普遍的に通じるように表現されているとは思うのですが。

なので、自分自身に生かそうと思えば、考えないといけない。めちゃくちゃ考えないといけない。 それはもちろん何においても当たり前といえば当たり前のことではあるのですが、この本は相対的にも絶対的にもかなり高いレベルでそれを要求してくるのではないか、というのが現時点での私の印象です。

現時点での結論

OOP がわかってないといけない。Effective Java 挑戦レベルは最低限必要。字面だけを真に受けてはいけなくて行間が読めなくてはいけない。自分自身に適用しようと思えば、その答えは自分で導き出さなくてなならない。取っ掛かりにはなるかもしれないけれど、うっかりしていたらそこに取っ掛かりがあることすら気付けない。

取っ掛かりが見つかったようにみえても、表面的なものだけ受け取ったら大変なことになりかねない。具体例で言えば(勉強会でも話題になりましたが)共通する処理はメソッドに閉じればいいよって話ひとつとっても、意味的なものを考えない人がそれをやったら、処理がほとんど同じなら共通化してしまって なんとかUtil に放り込んで、ほとんど同じだけどちょっと異なる部分はフラグを付けて対応して、結果的にメンテナンスがむしろ大変になって、結局なんのために共通化したんだって話にしかねない(なりかねない)。 そんな危険性がある本だなー、というのが現時点での偽らざる感想です。

いろいろ考えられるとても面白い本であることは間違いないし、買ってみて、読んでみて、よかったということは間違いないです。 でも、読みやすいから初心者でも読んでいいんじゃないかという意見には個人的には賛同しかねるなー、という感じ、ですかね。