【PHP】フレームワークについて語るスレ10【総合】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/08/24(日) 21:43:37ID:???http://pc11.2ch.net/test/read.cgi/php/1202521438/
0554nobodyさん
2008/11/13(木) 23:25:55ID:???0555nobodyさん
2008/11/13(木) 23:27:41ID:???0556nobodyさん
2008/11/13(木) 23:41:23ID:???0557nobodyさん
2008/11/14(金) 13:45:00ID:???0558nobodyさん
2008/11/14(金) 13:52:53ID:???0559nobodyさん
2008/11/14(金) 13:53:13ID:???0560nobodyさん
2008/11/14(金) 14:12:00ID:???0561nobodyさん
2008/11/14(金) 14:31:47ID:???Cake
0562nobodyさん
2008/11/14(金) 14:34:00ID:???なぜ大規模向けと?
0563nobodyさん
2008/11/14(金) 14:42:11ID:???(重量級フレームワーク=動作が遅い)≒自由度が低い=開発のルール化度が高い≒多人数でも均一なコードレベルを保ちやすい
とはいえ、フレームワークが案件に合う合わないもあるので、
どのフレームワークを使っても、大規模開発ならプロジェクトのルールが必要だと思われ。
逆を言えば、ルールさえ作れば軽量なフレームワークでもいいと思う。
重量級フレームワークが用意してくれる機能を、自分達で実装しないとならないけどね。
あと、大規模=多人数と勝手に解釈したけど。
0564nobodyさん
2008/11/14(金) 14:50:52ID:???逆に自由度が高いフレームワークを使って自分たちで実装したいって需要もかなりある
0565nobodyさん
2008/11/14(金) 15:31:36ID:???開発期間が数年?PHPでそんな案件はほとんど無いけど。
あと、それを適当にやると、どんどん「フレームワーク」自体に修正が入ってしまって、地層のように
古いコーディングとより新しいコーディングがどんどん積み重なって手に終えなくなる。
やるなら、全くいじらないか、最初にきちんと徹底的にいじって固めてしまうのがいいのかな?
0566nobodyさん
2008/11/14(金) 16:00:34ID:???0567nobodyさん
2008/11/14(金) 16:19:50ID:???0568nobodyさん
2008/11/14(金) 16:22:17ID:???プロジェクト全体で数年っていうのはあるよ
複数サイトを作るような事業でも共通フレームワークを作成することはあるし
0569nobodyさん
2008/11/14(金) 16:31:35ID:???しかも素の状態に近いベンチとか。
もちろん非常にシンプルに作りたいときにFWの軽さは重要かもしれないけど。
色々な機能を実装するなら、結局ある程度の重さにはなるだろうし。
だったら多少重いといわれる高機能FWを使用したほうが開発効率は良いと思う。
単純なスピード比較がよく話題が出るから、疑問に感じていた。
0570nobodyさん
2008/11/14(金) 16:52:52ID:???帰れ
0571nobodyさん
2008/11/14(金) 22:44:45ID:???多すぎず少なすぎず
0572nobodyさん
2008/11/14(金) 23:35:14ID:???まぁ、一番近いものを選べばいいが
0573nobodyさん
2008/11/14(金) 23:36:59ID:???パフォーマンスくらいしか差が無い気が
0574nobodyさん
2008/11/14(金) 23:49:38ID:???開発の工数ではなかったけどためになった
アクセス数という意味では軽量かどうかが非常に重要と思われ
サーバの台数などのメンテナンス代が高くつくから
とはいえ重量級のものを使ってあとからプロファイリングして
リファクタリングなりすればいいような気もしてきた
0575nobodyさん
2008/11/14(金) 23:58:04ID:???効率的な実装になってるならいいんだけどね
cakeは実装が酷いよ
0576nobodyさん
2008/11/14(金) 23:59:29ID:???その辺までRailsを踏襲していると言えばそうかも
0577nobodyさん
2008/11/15(土) 02:26:07ID:???でも、それってフレームワークはあんまり関係ないよな。ハードウェアスペックとか、もっと低いレイヤーの問題であって。
PHPに限らずウェブサイトの開発で数年かけるなんて、まず有り得ないと思う。官公庁のサイトで、手続きが面倒とかでない限り。
GmailとかGoogle Mapsでもそこまで行かないでしょう。まして、よくあるショッピングサイトやSNSみたいなのに1年も時間使ってたらアフォだよ。
0578nobodyさん
2008/11/15(土) 02:37:10ID:???1ページだけのHTMLを出力するサイトでも大量アクセスがあれば大規模なのか?
俺は普通コード量とか機能数だと思うけど
0579nobodyさん
2008/11/15(土) 02:38:10ID:???てか絶対作ってる
他にも大企業は手の込んだ事やってそうだけどなあ
0580nobodyさん
2008/11/15(土) 02:50:13ID:???mixiとかamazonとか、確かに画面数は多いけど、結局のところ、掲示板作るのと変わりはない。
ユーザからの入力を受け取って、何枚かのテーブルを更新して、テーブルをSELECTしなおして、文字列を加工してHTMLに埋め込むって言う。
これをひたすら繰り返して巨大化するだけ。
0581nobodyさん
2008/11/15(土) 02:53:39ID:???ユーザからのデータを何かしら加工するとか、
なにか特別なアルゴリズムでデータを収集して、
それを提供するとか。
0582nobodyさん
2008/11/15(土) 03:02:01ID:???自動的にDBを保守してくれたりHDD壊れたらバックアップの方へ自動的に繋いで新たなバックアップ先を作るとか
(PHPコード内の接続先DBサーバIPが動的に変わるって事ね)
思いつきで書いた
0583nobodyさん
2008/11/15(土) 04:39:48ID:???0584nobodyさん
2008/11/15(土) 05:03:15ID:???> ウェブアプリで機能の数って言っても、単に画面を増やしていくだけだからなあ。
> mixiとかamazonとか、確かに画面数は多いけど、結局のところ、掲示板作るのと変わりはない。
> ユーザからの入力を受け取って、何枚かのテーブルを更新して、テーブルをSELECTしなおして、文字列を加工してHTMLに埋め込むって言う。
> これをひたすら繰り返して巨大化するだけ。
それはウェブアプリだからではなく、SNSやオンラインショップという
システムが、そうなっているってだけだろ。
たとえば、YouTubeのようなウェブアプリではエンコード技術が使われる。
0585nobodyさん
2008/11/15(土) 05:05:22ID:???結局、ファイルにデータ読み書きして、画面に点を表示しているだけともいえる。
0586nobodyさん
2008/11/15(土) 05:47:54ID:???なんて言っちゃってる企業とか腐るほどあるからなぁ
0587nobodyさん
2008/11/15(土) 09:41:57ID:???インプット・アウトプットの対象の幅広さは、ウェブアプリなんかとは比べものにならんように思う。
ウェブアプリの場合は、一部APIサービス的なものを除けば、ほぼ「画面」相手でいいわけだが。
>>586
その理由でテンプレートエンジンを使いたがらない人も未だに多いがな。同じじゃね?
0588nobodyさん
2008/11/15(土) 13:00:48ID:???つーかFWに組み込まれてるし
0589nobodyさん
2008/11/15(土) 13:15:36ID:???やり方を検討するのが面倒くさいことだけの事が多いと思う。
論理削除ってあるじゃん。レコードに削除フラグを立ててデータは残すって言う。
あのフラグのチェックををいちいち手で (del_flag IS NULL OR del_flag = 0) とか書いている
会社があった。
なぜ NOT NULL制約を付けないのかと聞いたら、「重くなる」って答えが返ってきた。
全力でこけた。いろいろ間違ってる。
0590nobodyさん
2008/11/15(土) 14:11:03ID:???そのテクニックが使われるタイミングを考えると、誤差でしかないとか、
よくあったよね。
むしろコードが読みにくくなったり、書きにくくなったりと、
その時間のほうがもったいないとか。
0591nobodyさん
2008/11/15(土) 14:39:00ID:???たとえば、↓
http://www.sooey.com/journal/2007/05/26/648/
symponyだって。
でもサービスによって違いはあって
http://wakatsukichinatsu.yahoo.co.jp/index.php?itemid=128
↑これなんてPHP?
0592nobodyさん
2008/11/15(土) 14:39:25ID:???0593nobodyさん
2008/11/15(土) 14:54:51ID:???方法がフラグってとこが間抜けってなら少しはわかる気もするが。
0594nobodyさん
2008/11/15(土) 14:55:03ID:???0595nobodyさん
2008/11/15(土) 15:09:50ID:???active enum('Y','N')か、status = 0 なら削除とか?
0597nobodyさん
2008/11/15(土) 16:06:02ID:???0598nobodyさん
2008/11/15(土) 16:34:55ID:???0599nobodyさん
2008/11/15(土) 16:57:52ID:???0601nobodyさん
2008/11/15(土) 17:52:20ID:???0602nobodyさん
2008/11/15(土) 17:55:22ID:???0604nobodyさん
2008/11/15(土) 18:49:10ID:???0606nobodyさん
2008/11/15(土) 19:09:25ID:???0607nobodyさん
2008/11/15(土) 19:12:51ID:???0608nobodyさん
2008/11/15(土) 19:13:24ID:???0609nobodyさん
2008/11/15(土) 19:27:12ID:???削除された、と言う状態がシステム上にありうるならそれはnullで表現すべきじゃない
0610nobodyさん
2008/11/15(土) 19:54:48ID:???全フィールド NOT NULL で作ってしまえと言いたい。
その方が何かとトラブルが少ないし、コーディングも楽だ。
テキストフィールド? 空文字でも入れとけ。 数値? 0が初期値だ。それで都合がわるけりゃ、
-999999999 が初期値だ、文句あるか、ってな感じで。
0612nobodyさん
2008/11/15(土) 23:07:45ID:???そう、カラム名。
id, created(datetime), updated(datetime), deleted(datime)を標準的に使用。
あるいは、statusとしてa)Activei)/Inactive、h)Hidden, b)Obsoleted D)deleted
とか詳しい状態が必要な時に使うとか。
0613595
2008/11/15(土) 23:12:27ID:???皆さん有り難うございます。
0614nobodyさん
2008/11/15(土) 23:21:42ID:???実際問題何も消してないわけなんだし
だから、そういうのは無効化とか不活性化とか利用不可とか、そういう「状態」で呼ぶべきで
削除って言うならならきっちりかっちりまるっと全部消してしまえ!
と思うんだよなー
スレ趣旨と全然関係ないんだけどなー
0616nobodyさん
2008/11/16(日) 02:05:02ID:???警察照会とか、CS対応で必要とかやっぱり要るシーンが多くて>>614みたいに消してしまえーが使えない場合も少なくないよ
>>615
そうだね。
0617nobodyさん
2008/11/16(日) 02:08:47ID:???ソフトウェアなんだから全て論理だし
無効化、凍結、と言う呼び方が正しい
0618nobodyさん
2008/11/16(日) 02:19:28ID:???http://publib.boulder.ibm.com/infocenter/wbihelp/v6rxmx/index.jsp?topic=/com.ibm.wbia_developer.doc/doc/connector_dev_java/java61.htm
0619nobodyさん
2008/11/16(日) 03:13:45ID:???0620nobodyさん
2008/11/16(日) 06:39:55ID:???0621nobodyさん
2008/11/16(日) 06:56:48ID:???呼び方の慣習の問題。
言葉遊びをやってもしょうがないんで、ここでは便宜的に、論理削除とは、
物理的には削除せずにサービス上削除されたようにふるまわせること
でいいかな?
0622nobodyさん
2008/11/16(日) 09:11:01ID:???滔々と語ってるが、>>612の前者のdeleted (削除日時) はまあともかく、
後者の方では、レコードにユニーク制約のカラムがあった時に不便だろ。
削除フラグ(というかカウンタなど)とセットでユニーク制約にしてしまうって
のは、あんまり流行って無いのか?
0623nobodyさん
2008/11/16(日) 12:27:21ID:???0625nobodyさん
2008/11/16(日) 13:00:36ID:???例えばユーザアカウントをユニークにしたいとかで、一意制約をユーザ名カラムに付けるとする。
んで、そのユーザが退会した後、そのデータを残してたら、そのユーザ名がずっと使えない。
それを避けるために、削除データだけ一意制約から考慮外にしたい場合、削除フラグと2カラム連結で
ユニークにしてしまう。
んでレコードを削除する時に、同一なユーザ名を持つデータの削除フラグを、一斉に +1 UPDATEしてしまう。
削除フラグが 1以上なら( というか、0でなければ ) 削除データという扱い。
こんなやり方。マイナーなのかな?と思った。
書いてて思ったが、これ一意制約のカラムが二つ以上あった場合、そのままでは使えないなw
もちょっと応用を利かさないと無理か。
整数部分と少数部分で分けるとか桁で分けるとかビットで分けるとかwww
# DBの一意制約を使わずアプリで常にチェックするなら別にこんなことしなくていいんだけど。
0626nobodyさん
2008/11/16(日) 13:06:04ID:???マイクロ秒まで入れておけばいいのではと後から思ったのは内緒だ。
0627nobodyさん
2008/11/16(日) 13:24:25ID:???飲みながらレスするもんじゃないな。
退散します。
0629nobodyさん
2008/11/16(日) 13:51:02ID:???さて、ユーザーアカウントを例にすると、ちょっと怖すぎるんだが、
CMSなんかのアイテム管理だと、リビジョン管理に同一itemidで
複数のインスタンス、しかも最新以外は非アクティブっていう状態を
表現するという用途があったりする。
その場合、削除フラグを使わずに、使用目的に合わせたタグを振る。
外部キー側もタグやリビジョン番号を考慮した設計にしないといかんわけだけどね。
0630nobodyさん
2008/11/16(日) 14:12:40ID:???そういうのの設計はちょっと知りたいなーと思っていたんだけど、
MediaWikiのソースでも読めばいいのかな?
0631nobodyさん
2008/11/16(日) 14:19:46ID:???リビジョンと直接は関係ないけどソースはしっかりしてるかも
0632nobodyさん
2008/11/16(日) 14:26:24ID:???0633nobodyさん
2008/11/16(日) 14:43:16ID:???0634nobodyさん
2008/11/16(日) 15:05:16ID:???>>587
> インプット・アウトプットの対象の幅広さは、ウェブアプリなんかとは比べものにならんように思う。
> ウェブアプリの場合は、一部APIサービス的なものを除けば、ほぼ「画面」相手でいいわけだが。
それをいったら、ウェブじゃないアプリだって、ほぼ画面(ディスプレイ)相手だろ?
なんか比較している対象がずれてるよ。
画面じゃなくてOffice系の大規模アプリだって、結局は画面にGUI表示してファイルに書き込むだけなんだし。
ゲームだってそう。ハードウェアデバイスを扱うものもあるだろうけど、それをウェブアプリでやってはだめってことはない。
ブラウザでコーヒー沸かす装置とかw
0636nobodyさん
2008/11/16(日) 15:33:36ID:???元のレスが、アプリとは書いてなくて、「ウェブじゃないシステム」って書いてあるからじゃね?
対象がずれてるというか、「Office系の大規模アプリ」とかゲームとかが念頭にあるのは
わかっててわざと書いてるんだろw
車のエンジン制御とか、通信インフラ系とかはシステムじゃねーの?って。
>>585
> それにウェブじゃないシステムが何をしているかというと、
> 結局、ファイルにデータ読み書きして、画面に点を表示しているだけともいえる。
いえねーよw
これがむしろ、言いたいことと表現がずれてるんじゃね?
0637nobodyさん
2008/11/16(日) 17:24:18ID:+7h73lOIスペース区切りでtextカラムに入れて、全文検索するのがシンプルでいいかと思ったのですが、
他にいい方法があったら教えてください
0638nobodyさん
2008/11/16(日) 17:26:45ID:???これはひどい
0639nobodyさん
2008/11/16(日) 17:28:47ID:+7h73lOIhttp://blog.nomadscafe.jp/archives/000643.html
他にいい方法があれば教えてください。
0640nobodyさん
2008/11/16(日) 17:43:46ID:???0641nobodyさん
2008/11/16(日) 17:44:48ID:???タグテーブル作って
アイテムテーブルとの間に多対多のリレーションテーブル持てばいいだけだよね
いかにもリレーショナルに解決出来るケースだと思うけど
0642nobodyさん
2008/11/16(日) 17:45:10ID:???それ、フレームワーク関係ないし、それ以前にPHPの問題でもないよ。
DBの問題だからDB関連スレで質問しろよ。
まぁ、正規化すら理解してないみたいだからまずは本でも買って勉強することをオススメするけどね
0643nobodyさん
2008/11/16(日) 17:52:11ID:???基礎知識が足りてなさそう
0644nobodyさん
2008/11/16(日) 17:59:55ID:???ありがとうございました。
0645nobodyさん
2008/11/16(日) 18:01:45ID:???けど、割とありきたりの機能になったのに、
情報が少なくてベストプラクティスな設計が出来たか不安なんだよね。
タグはパターンとしてどっかに情報がまとまっててもいいと思うんだが。
0646nobodyさん
2008/11/16(日) 18:10:11ID:???それ以外に特別な事なんて無いんだから
0647nobodyさん
2008/11/16(日) 18:20:02ID:???不安ってのはRDBの理解が不十分なのかと。
0648nobodyさん
2008/11/16(日) 18:26:03ID:???0649nobodyさん
2008/11/16(日) 19:46:05ID:???0650nobodyさん
2008/11/16(日) 20:18:46ID:???0651nobodyさん
2008/11/16(日) 20:20:48ID:???0652nobodyさん
2008/11/16(日) 20:23:39ID:???RoRのアプリケーションはRubyで書けるけどSymfonyではRubyで書けない。
これは大きい。それに比べりゃモデル周りなんて大差ないんじゃね?
0653nobodyさん
2008/11/16(日) 20:25:04ID:???フレームワークの比較より言語の比較だし
0654nobodyさん
2008/11/16(日) 21:54:05ID:???■ このスレッドは過去ログ倉庫に格納されています