フルスクラッチはカッコいい?

フルスクラッチとは、既存のコードを使わずに​
ゼロからソフトウェアを開発するIT用語です。​
なんとなく響きはカッコよさそうですよね。​
「フルスクラッチで作ります!」​
というと、​
他人が作ったライブラリやアルゴリズムを​
利用しなくても自分でゼロから作れるんだという​
アピールにもなるからです。​
でも、​
自分が作ったものが他人の手によって機能追加や​
仕様変更される可能性が高いソフトウェアの場合、​
フルスクラッチだと困ります。​
なぜかというと、​
「どういう理由でこのコードがこの場所にあるのか?」​
「変数や関数、クラスの命名ルールはどう決めたのか?」​
などといったプログラミング上のルールや設計方針が​
他人にはわからないからです。​
すると、​
ソフトウェアに手を入れるたびに(人が変わるたびに)​
コードの秩序が崩れていきます。​
秩序が崩れたコードは矛盾や無駄が混入しやすいので、​
不具合(バグ)の原因を生みやすくなります。​
一見して正常に動いているように見えても、​
実は穴だらけだったりします。​
特定の条件で操作すると仕様通りに動かないとか、​
よくあることです。​
これ、言ってみれば​
「元々正しく作ってあったものを壊している」​
ことにほかなりません。​
ずっと同じ会社の同じ開発チームで開発後の保守対応も​
やっていく場合なら、個人の慣習やスキルに依存する​
フルスクラッチはなおさら歓迎されません。​
ウェブサイトもそうです。​
いくらHTMLやPHPに精通しているからといって、​
「自分ルール」​
の押しつけにほかならないフルスクラッチで作ると、​
納品して自分の手を離れてから機能追加や仕様変更が​
あったときにどんどん品質が下がっていきます。​
自分はもう手を離れたからいいかもしれませんが、​
困るのはお客様です。​
最初に納品されたものに手を加えるほど品質が下がり、​
不具合(バグ)を直すコストがかさみ、​
そのために運用を停止しなければなりません。​
その期間はウェブサイトが利用できないので​
サイトから得られたかもしれない売上げを逃します。​
お客様に「無駄な出費」を強いてしまうわけです。​
プログラムを触る人はそこまで考えないといけない。​
作って終わりではなく、​
作ったあと他人の手に渡っても品質が落ちないように​
「理路整然としたコード」​
「コードの理由と目的がわかるコメント」​
「再利用性の高いコンポーネント」​
「依存関係の少ないモジュール設計」​
「統一感のある命名規約」​
といった、表には決して見えない品質の重要性を​
しっかりと認識して作ること。​
それがプロの仕事です。​
そこで役に立つのが「フレームワーク」です。​
フレームワークを採用して作れば、​
誰が作ってもフレームワークのルールに従った​
プログラムになります。​
だから、品質の低下を抑えることができます。​
フルスクラッチで作られたウェブサイトを​
10年も運用していると、​
もう中身はぐっちゃぐちゃになります。​
家電製品の寿命は10年とか言われますが、​
ウェブサイトも10年経てば​
インターフェースの流行りも変わりますし、​
ちょっとした機能追加をするのにも​
必要以上の手間(ぶっちゃけ金です)を要します。​
より効果的なフレームワークを取り入れて​
再構築するべき時期だと思います。​
家電は買い替えるのに、​
ウェブサイトの再構築は渋る。​
それってすごくおかしなことなんです。