権限は要件か?
- 「権限」「ステータス」など、システム内部の話がでている。→明らかに実装と要件とを勘違いしている。
と書いたら「権限って要件じゃないの?」という問い合わせをいくつかいただいた。
できるだけ簡単・簡素に考えよう
例えば「水泳選手として、指定した水泳種目の記録を折れ線グラフで見ることができる」というストーリがあったとする。*1
ここで「水泳選手を特定するために認証を実装する必要がある」と考えちゃう時点で、余分なことを考えちゃっている、と言ってよい。
極端な話、マイケル・フェルプス専用の端末を用意し、彼しか入れない部屋にそれを設置すれば、認証の実装は不要なのである。
「そんなのインチキ」と思うかもしれない。
でも、実際に開発する場合には認証もへったくれもなしで実装・テストしておいて、後から権限や認証を実装するほうが、開発もテストもすっきりする...少なくとも自分の経験ではそうなっている。
権限や認証はRole Based Access Controlなんていうパターンがあるでしょ。RailsだとControllerのbefore_filterでちょろっと書けばオッケー。Javaな人はAOPだかなんかでやればいいんでないの?
実装上の依存性を最初から考えるからややこしくなる
先に設計して後から実装する、という昔ながらの考え方に慣れちゃうと、こういう「共通処理」はあらかじめ括りだされ、先に開発されていなければならない、と思いがちである。
必然的に、「ある要件の向こう側にどんな実装が必要か」を深く考えることになっちゃう。で、要件がどんどん広がっていく。
でも、こういう「共通処理」は後から括りだしたり、追加したりできるんだな。実装技術の進化により、そういう技は昔よりは遥かに容易になった。
もちろん、自動化されたテストをちゃんと整備しておく必要はあるけどね。