難しいのはいや。

難しいのはいやです。嫌いです。
学が無いのもありますが根気も無いので、複雑な計算とか大嫌いです。
そういう自分が心がけるのは、難しいことを簡単にすることです。


どういう事か。
難しいということはつまり複雑だという事です。
複雑ではないのに難しいということは、単に知らないか理解できないかどちらからです。知らないとか理解できないのであれば、調べる、聞く、考えるなどで解消するしかありませんが、複雑なのであれば調べる、聞く、考えるよりまず整理するべきなんです。


一番良い例と言えるのが、先日取り上げさせてもらったMVCモデルでしょうか。
アプリケーションの機能を考える際、画面からデータベースまでのトランザクションを細かい条件分岐等の内部仕様もまとめて一度に考えると、非常に大変です。今の時代、これをやっている人は皆無と言って良いでしょう。表示パターン、動作パターンの組み合わせの結果、無数のテストケースが発生するでしょうし、画面のレイアウトと条件分岐をまとめて考える意味もありませんしね。

それより、画面のレイアウトや挙動はそこだけで完結させるよう切り分けて考え、イベント制御部分と永続化制御部分を切り分けて考え、と問題領域を切り分けて、それぞれで集中して考えれば組み合わせを考えなくてよくなる分、複雑さはぐっと減ります。

こうすることで、複雑で難しかった問題が問題(m)と問題(v)、問題(c)と複雑ではない三つの問題になりました。検証すべきパターンも、m×v×cだったものが、m+v+cになります。仮に、それぞれ10個ずつパターンを持っていたとしたら、数は1000と30と、実に970の差が生まれます。これはでかいです。


もちろん、現実ではこんな単純にいかないでしょうし、切り分け出来ないケースも出てくるでしょうが、こういったアプローチが全く無駄になることはありません。