一般ユーザに提供するシステムは、機能追加や仕様変更が多く、また、新規開発時もリリース時までの期間が短いというのがWEBアプリケーションの特徴だと思っております。
開発プロセスにおいて疑問点は多々あるのですが、今回はまず下記の1点を。
よく、「再利用出来るコードを書け」ということを耳にした事がありますが、
実際に開発期間が短かったり、頻繁に機能追加、仕様変更が起こる開発の中で、
上記のようなコードを実際に書けるものなのか、
また、書いたつもりでも結果的に再利用出来たためしがあるのかなど、
開発工程での、コードの再利用、開発スタンス等について
経験談を教えて頂けませんでしょうか。
よろしくお願い致します。
「再利用」というとオブジェクト指向やクラスいうことになると思いますが、定義はこんな感じです。
オブジェクト指向とは 【object oriented】 - 意味・解説 : IT用語辞典
プロシージャ指向、オブジェクト指向どちらでも書けるPHPとJavaScriptについて書いてみます。例えば、ログインについてのクラスを一個作っておけば、同じくログインの必要な複数のアプリケーションで使い回しできるメリットがあります。ただ、おっしゃる通りアプリケーションによって細かい仕様が違うものについては、あらかじめいろいろなケースに対応するクラスやメソッドを作るのはたいへん手間がかかります。結局、汎用性の高い処理や機能を選んでクラスを作ったほうがいいということになると思います。それと無償でダウンロードできるクラスやライブラリ(PEAR,YahooUI など)は、かなり汎用性が高いように作ってあるので、それを利用したほうがはやい場合も多いです。クラスを作るには手続きをそのまま書くより時間がかかります。クラス化しても将来それがどれだけ使われるか予測がつかないため、わたし自身はあまりクラスをつくる機会がありません。でも、選択肢として常に頭に入れておかなければいけないとは思います。
共通的な機能は使い回すことを考えます。
業務に依存しないたとえば、CVS出力とかデータベースアクセス周りとかあたりが相当します。
プロジェクト単位でみても業務ロジックの中で同じ計算を必要とするところは必ずあるかと思います。そのようなところをクラスに切り出してあげることで変更があったときに修正箇所が少なくなるように思います。
本当は全体を見渡してどの機能を共通機能として切り出すかとか同じことをしているところはないかなどという観点で見ていってクラス設計できるといいのですが全体が決まらないとなかなか困難ですね。
まあ、基本は画面単位に考えていって共通化できそうなところはそれぞれクラスを切り出してみるっていうスタンスです。
確かに、同様の計算を使いまわす事は多々ありますね。
実際に共通化する工数と、実は今後あるか分からない使いまわしのために頭を使わず、普通に書いたほうが早かったという事と、どちらがいいのかが今の疑問です。
>よく、「再利用出来るコードを書け」ということを耳にした事がありますが、
現状では再利用できる部分は「フレームワーク」として使いまわされていて、個別に異なる部分のみ書き換えられるようになっています。
[ThinkIT] 第1回:Webアプリケーションフレームワークとは (1/4)
[ThinkIT] 第1回:Strutsはわかるけど、Mojaviってなんだ? (1/4)
Webアプリケーションの開発規模は巨大化の一途をたどるとともに、多様化、複雑化していく一方、低コスト、短納期、高品質といったそれぞれに相反するユーザのニーズは、企業システムが経営における重要度を増すにしたがって高まりを見せます。結果、システムインテグレータやソフトウェア開発会社を中心として、マーケットに生き残るための熾烈な競争が繰り広げられたことは想像に難くないでしょう。
このような熾烈な競争を切り抜けるために導入されたものがWebアプリケーションフレームワークです。Webアプリケーションフレームワークは、独立した機能を再利用するためのライブラリとは違い、Webアプリケーションに共通するアーキテクチャを再利用することができます。このWebアプリケーションフレームワークを導入することにより、下記のような効果を得られます。
* 低コスト・短期間でWebアプリケーションを開発できる
* 高品質なWebアプリケーションを開発できる
フレームワークはあくまでも、本当に共通な部分、テンプレート読み込みやヘッダの吐き出しなどと考えています。
質問の仕方が悪かったかもしれません。
業務ロジック内で、使いまわしを考える場合の質問でした。
比較的大規模なWebサイトの開発担当をしています。
SNSを複数別コンテンツで立ち上げるという案件があり、
しかも時期が違うという事例がありました。
この場合、最初のリリース分で再利用できるよう
フレームワークを利用して開発を行いました。
後のリリース分ではほとんど表面的なところのみの開発で
済んでしまい、大幅にコストと期限を短縮することができました。
また、品質においても実績のあるコードなのでバグも少なかったです。
大規模開発になればなるほど部品化、再利用可能なコードにすることは
有意義になると思います。
http://q.hatena.ne.jp/1187563974
※URLはダミーです。
同じような商品を作る場合は、たしかに再利用可能なコードの量も多く、楽かもしれませんね。
ありがとうございます。
>「再利用出来るコードを書け」ということを耳にした事があり
>ますが、
なぜか、ここ最近私の周りではあまり聞かないです。
最初にフレームワークを作るか、採用するんで、
あまり変なコードもかけないんですね。
再利用可能なものは、共通のライブラリに最初にしますしね。
たぶん、今後、変更があっても、変更しやすいコードを
書けという意味だと思います。
性能を優先されない部分では、読みやすいコードでと(^^;;
私はPerlを使用しているのですが、Perlの場合、色々と出来てしまうので、フレームワークを使っても制限される部分が少ないです。
変更しやすいコードは心がけるべきですね。
ありがとうございます。
ありがとうございます。
参考にしてみます。