いままで、いろいろと、PHPにおいて、画面と処理プログラムを分離し、MVCを実現するためのコーディング規約と、実際のユニットテスト方法に書いてきましたが、では、実際に、この規約で、開発することが認められるか?というと、たぶん、100%不可能です。
理由は、PHPにおけるMVCのフレームワークが、各種テンプレートを使う形で、「オープンソフトとして」たくさんでてるから。。
オープンソフトで出ている場合、
・そのオープンソフトを使わなくても、(今まで述べたように)できるとしても
・で、そっちのほうが(テンプレートのバージョンの問題がない分)、バージョン管理の問題がないとしても、
・オープンソースのプログラムの作り方を覚えなくてすむ分、開発が短期ですみ、
・さらに(strutsのチェックボックスは、先にクリアしておかないと。。みたいな)知らないと大変な目にあうTIPSを知らなくていいぶん、ずっとリスクが小さかったとしても、
ぜったい、自分たちの創意工夫は否定され、「そーいう苦労をしなくていいように、オープンソフトがでてるんだから、オープンソフトをつかえ、このばか!」と、指示が来て、そのため、
・オープンソフトを使わないほうが、開発工数が少なくてすんでも、
・(そのOSSの)バージョンアップのときに互換性を考えないで作られて、
あとで修正を入れなきゃならないかもしれないリスクをはらんでいても、
オープンソフトを、つかわさせられるわけよ(>_<!)。。
いや、グループ会社や取引先の会社のツールやソフトをつかえ、っていうなら、大賛成だよ!
それにより、取引先のうりあげあーっぷ!かんけいあーっぷ、で、間接的に、自分たちの収入安定につながってるわけだから。
でも、オープンソフト使っても、売り上げ、あがらないでしょ。。
え、自分たちの転職に有利だ!って。。
一時的にはね。でも、この業界、ずーっと続いている言語もないし(COBOLはつぶしが利くとかむかしはいわれたんだよねー。あ、Cも、そんなこといわれたね。今はJAVAかい (^^) )ましてや、あるオープンソフトがずーっと使われるという保証もない。
それどころか、ある日突然、正反対のことをいわれるのよねー。
たとえば、Cの黎明期は、いかにメモリーをつかわないか、っていうことが、マニアック的にきそわれたりしていた(プログラム領域の制限があったから)。いま、Javaだったら、メモリーの制限。。。といっても、、メモリ確保の制御、できないっしょ(^^)
ま、こんな理屈っぽい話をしなくても、一目瞭然だよね。
いままで読んできてくれた人(なんて、いるのかなあ。。)だったら、あのやり方、PHPでなく
・画面部分をJSP
・プログラム部分をサーブレットで書けば、
strutsを使わずに、プログラム規約で、MVCに分けてかけることに、気づくはず。
で、そうすれば、Strutsタグを覚えなくていいし、Strutsのバージョンの問題もないし、サーブレットのユニットテストもできるし。。といろいろいいことあって、そんなこと、システムやってる人なら、すぐに思いつくんだけど、じゃあ、Strutsじゃなくって、そーやって、コーディング規約を作ろう!っていう話は、でないわけよ。。
「Strutsつかえ!」と訳知り顔の人間に全否定されちゃうよね。
いや、そんな、「コーディング規約で簡単にできるよ!」といったら、「規約は守んない人間がいるから、だからオープンソフトなんだろー、そんなこというお前って、技術者としてどーなの!」
とかいって、訳知り顔の人間に、自分の存在意義自体を全否定されかねない!
だから、みーんな、そんなこと知ってても、思いついても、だーれもいわない。。
これが現実なのよ。
(Strutsでも、MVC無視して、規約を守んない人が出てきたら、おなじじゃん。なんて、間違っても、いえない)
で、今後も、(まあ、ずーっと前、ブログに書いたように、一部では、そういうことから、自分たちで作って、難易度を下げようていう機運も出ていることは確かだけど)オープンソフトなのよ。
その結果、
・バージョンアップや相性のリスクが増えても、
・それを学習するために生産性が下がっても、
・その学習についてこれる人を用意しなくちゃならないから、単価上がっても、
いや、
・それを使うことによって、客に迷惑をかけてもね。
だからさー、遅いといわれるCORBAでも。。。
(ここで、ある会社を連想できる言葉を書きそうになったので、この部分カット。
べつに、ここはgooブログだから、いいんだけどね。。。gooの子会社に証券会社ないしー(^^;)
もっとも、これが、権威のある人が、いったら話は違うんだけどね。
たとえば、某業界有名人が、雑誌にこういう話をかけば、これは、こういう考えも検討される。
そう、この業界、権威の発言は、まんせーなのだ。
その権威の発言が、だれがみても、へん??
っていう発言でも、権威が言えばOKなのだ。
この実例について、ウィリアムのいたずらは、現在、ブログネタを準備中。
覚えていたら書く。期待しないで、待っていてくれ。
でも、うぃりあむのいたずらのような、「ぷーたろう」みたいなやつ(=フリーなので、会社に所属してないっていうことは、ぷーたろうと一緒)がいっても、だれも見向きもしないわけだ。
これが、某大学教授、某上場企業の若手課長とかいったら、また違うんだろーけどね。
そう、オープンソフトの話は、この権威と結びつき、否定できない方向にいっている。
なわけで、じゃあ、今まで書いてきたことは、意味ないのか??っていうと、
表面的には、まったくの無意味。
これ、自分がぜーんぶ勝手にやっていいのであれば、そういうやり方を採用できるかもしれないけど、上記の理由により、ペアプログラミングなら、相手に否定されれば、どんなにいいやり方でも、そこで「終了」だし(本当にすごいやり方というのは、作る前には、他人に理解できない。出来上がってみて、使ってみて、すごさが分かる)
グループでやるなら、訳知り顔の人に、「オープンソフトを採用すべき、お前の考えなんて、ききたかねーよ!、くだらねーことかんがえず、盲目的に、オープンソフトまんせーって言えばいいんだよ」で終わってしまう。
しかし、実は、今までの話は、MVCの表面的な話でなく、奥義的な話になったとき、生きてくる。
オープンソフトの使い方を覚えても(つまりStrutsの書き方を覚えても)その部分は、見えてこない。で、実は、そこを説明するために、わざわざ、この話を書いたんですねー。
で、その奥義とは。。。
書こうと思ったら、時間切れだ(>_<!)
さ、いそいで、移動です!
っていうことで、覚えていたら書きますね。ぜーんぜん期待してないで、待ってて。。
くれなくていいけどおー(^^)v