フレームワークについて。


phpのCakePHPを使っていますが、
こういうフレームワークは徐々にバージョンが上がっていきます。

つくったアプリでは
あまり深くフレームワークの中をいじったりはしてませんが、
ちょこちょこと追加や修正しているところがあったりします。

こういう場合、バージョンアップに対応させるときに、
毎回あちこちいじりなおす必要があって、とても面倒です。

フレームワークを使っているサイトは、
こういう問題にどう対処しているのでしょうか?

何か良い方法があれば、アドバイスお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/06/29 11:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント23pt

普通、フレームワークそのものに修正は加えません。

どうしても修正・改造が必要な場合は、別ファイルに書いて、オーバーライドします。

id:onigirin

どうもありがとうございます。

別ファイルで管理できるなら、本体はいじらなくてすみそうですね。

参考になります。

2009/06/22 16:45:14
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント23pt

こういう場合、バージョンアップに対応させるときに、

毎回あちこちいじりなおす必要があって、とても面倒です。

フレームワークを使っているサイトは、

こういう問題にどう対処しているのでしょうか?

  • フレームワーク自体をいじることはしない。
  • フレームワークとの密接な連携は出来るだけさける
  • バージョンアップが本当に必要な物か検討し、必要なければバージョンアップをしない
  • テストをきちんと手順化し、影響範囲を特定できるようにしておく
  • 上記がいやなら人の作ったフレームワークは使用しない
id:onigirin

どうもありがとうございます。

手順化は大切ですね。

参考になります。

2009/06/22 16:41:13
id:hijk05 No.3

回答回数1307ベストアンサー獲得回数23

ポイント22pt

フレームワークのバージョンをあげない。

>こういう場合、バージョンアップに対応させるときに、

>毎回あちこちいじりなおす必要があって、とても面倒です

バージョンアップの際は、修正する工数分お金をもらいます。

id:onigirin

どうもありがとうございます。

バージョンアップしないという方法もあるのですね。

2009/06/22 16:39:30
id:ttakao No.4

回答回数276ベストアンサー獲得回数31

ポイント22pt

ふたつの場合があると思います。

ひとつは、Cakeを使ってお客さんにシステムを納品した場合です。この場合、フレームワークのマイグレーションは一般的にはやらないと思います。やるとしたら、お客さん自体が大幅な機能アップを望み、計画した時でしょう。小規模な修正ならばそのフレームワークのまま使い続けるしかありません。

なぜならば、フレームワークのバージョンをあげると結果的に修正箇所が広範囲になってしまい、トラブルが起きた時に余計な作業を背負い込むからです。

もうひとつは、自社で使うシステムを内製化に近い形で開発している場合です。Cakeを使う理由はMVCモデルと生産性の高さだと思います。であるならば、Cakeが提供してくれる機能を100%享受するべきでしょう。こういう場合は、修正、定義した場所を文書化し残しておくことは重要です。

仮に新機能により既存のコードに手を入れることがあったとしても、フレームワークなしの環境を考えたら必要なワークロードとして考えられるのではないでしょうか?Cakeを例に取るならば、私はViewモジュールは1.2になった時にすべて書き直しました。でもそれはとても機械的な作業であり、ロジックを変えるほどのものでもありませんでした。それで新機能の利点を使えるならばいいや、と思いました。

いずれにしてもCakeクラスのフレームワークを作っている人たちは、少なくとも私よりは、はるかにスキルが高いのでその知恵を使わせてもらってラクをしていると、いつも思ってます。だから、できるだけ使ったほうがいいかな、と。

id:onigirin

どうもありがとうございます。

自社内で使うものなので、修正箇所を残して、バージョンアップをしていくのがよさそうですね。

2009/06/25 15:24:21
  • id:tdoi
    CakePHPのどのあたりをフレームワーク側に手を加えていますか?
    多言語対応などのところでどうしてもフレームワークに手を入れないとできない場合があるという話を聞いたことはありますが、pahooさんがおっしゃるようにほとんどの場合はオーバーライドで解決できます。

    もちろん、オーバーライドで対応していたとしても、1.1系から1.2系のようなメジャーバージョンアップされると、動かない可能性はありますが。。。

    でも、そのあたりは、ある意味、PHP4からPHP5に上げる場合と同様に考えるべきなのかなと思います。
  • id:onigirin
    tdoiさん

    どうもありがとうございます。

    質問のレベルがみなさんの想像よりもっと低かったようです。

    appフォルダの中のcontrollerやview、
    configフォルダ内のcore.phpやroute.php、bootstrapなど、
    appフォルダ内のファイル設置やファイル内に追加や修正したケースを想定していました。

    1.2系からマイナーバージョンアップをしてゆく際に、
    新しいバージョンの中に、
    過去に設置したファイルを置き直す・修正した物は修正しなおす、
    という流れでやっていたので、手間がかかるなぁと思って疑問に思ったということでした。

    ここは、置いたファイルを列挙しておいて、手作業になるんですかねぇ・・・。
  • id:tdoi
    マイナーバージョンアップであれば、cakeディレクトリだけ上書きすればよいと思います。
    一応リリースノートとかは確認した方がいいとは思いますが。

    バージョンアップで問題となるのは、cakeディレクトリ以下で定義されているclassの仕様の変更です。
    仕様の変更として、関数が存在しなくなるなどはエラーもでるので問題ないですが、引数の意味が異なるなどは、型無の言語のために気づきにくいです。
    Controller::findは1.1系と、1.2系で動作変わっていて、ちょっとはまったことがあります。

    また、設定系のもの(configディレクトリの中、index.phpなど)では、マイナーバージョンアップでも影響はあるかもしれませんが、

    リリースノートを見る

    あるいは、

    編集前のconfigをどこかにおいておいて、diffをとる

    などをすれば、そのまま上書きしていいか分かるのではないでしょうか?


    参考になれば。
  • id:onigirin
    どうもありがとうございます。

    cakeディレクトリだけでいいのですね。
    それは助かります・・・。

    バージョンアップ時にリリースノートを見て、cakeディレクトリの上書きでいいのですね。
    参考になります。

    コメントでご助言ありがとうございます。
    オープンしておきますので、
    もしよろしければ投稿の方に何か書いておいてくださいね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません