X



ウェブプログラミングで使えるデザインパターン
0001nobodyさん
垢版 |
03/11/22 06:56ID:Lh+gL3bz
ゲッチューポン
0002nobodyさん
垢版 |
03/11/22 11:16ID:???
結構良スレっぽいスレタイなのに、>>1がクソで萎え
0003nobodyさん
垢版 |
03/11/22 22:25ID:???
こんなスレはシングルトンであって欲しいものだ。
0004nobodyさん
垢版 |
03/11/22 22:44ID:LH4aw5t2
とにかくリクエストとレスポンスが一組になる
1パターンリクエストに対し数パターンのレスポンスがあって、他パターンのリクエストと共通だったりする
0006nobodyさん
垢版 |
03/11/23 19:42ID:???
サーブレットは知らんがCGI、PHPあたりだとだいたい

フォームデータ処理
if
 エラー表示1
else if
 エラー表示2
・・・
else if
 処理1
 フェーズ1表示
else if
 処理2
 フェーズ2表示
・・・・
って感じになるな
0007nobodyさん
垢版 |
03/11/23 21:40ID:???
>>6
えと、>>1はGoF辺りのデザパタを聞きたいんではないかと。

後、それダサい。
0009nobodyさん
垢版 |
03/11/24 15:47ID:???
ここでいうデザインパターンってなんですか?
0010nobodyさん
垢版 |
03/11/24 23:53ID:6o1aVvpy
GoFに限定しないオブジェクト指向にも限定しない
寧ろウェブプログラミングのためのパターン
0011nobodyさん
垢版 |
03/11/25 17:04ID:???
GOFのどれがWEBプログラミングに使われるんですか?
0012nobodyさん
垢版 |
03/11/26 12:58ID:e6YvtpHr
PHP関連でそういった事を解説してるサイトなかった?>WEBPrograming/DesignPattern
Stateパターンでログイン・ユーザの認証状態を管理する。etc

コーディングに特化しない話題でもいいなら、
WEB関連&&デザインパターンという事で、こんなサイトも。
http://www.designpattern.lu.unisi.ch/index.htm
0013nobodyさん
垢版 |
03/11/26 13:08ID:???
まずはPerl5やPHPにGoFを翻訳することからはじめるか
Perl5やPHPって継承やインターフェース使えたっけ?
0015nobodyさん
垢版 |
03/11/27 00:07ID:0zBWj9/p
>>13
GOFの実装例なら、すでに幾つかありますね。
http://www.perldesignpatterns.com/

Perl5 や PHP4 にはインターフェースのための構文は用意されていないので、
(標準では)Javaみたいにインターフェースで定義したメソッドの実装を強制する事は出来ません。
多くのサンプルでは、インターフェース代わりに空メソッドを定義しているだけか、
実行時にメソッドが実装されていなければ終了する。と、いったものが殆んどの様です。

インターフェースを継承したクラスがそのメソッドを実装しているか確認したいのであれば。
perlについては、CPANにコンパイル時にインターフェースをチェックするモジュールがあります。
PHPでは、PHP5からインターフェースが導入されています。

0016nobodyさん
垢版 |
03/11/27 00:41ID:???
ごめん、インターフェースって何?継承とは違うのかい?
0017nobodyさん
垢版 |
03/11/27 02:07ID:???
インターフェースは知らんけど継承はわかるのか?
なんじゃそりゃ
0018nobodyさん
垢版 |
03/11/27 02:15ID:???
ウェブプログラミングじゃあんまGoF通用しないんじゃね?
Perl PHP Rubyじゃインターフェース無いし、GUIもHTML吐いて作るわけだし、
インスタンスを次のセッションで使うのもしんどいじゃん
0019nobodyさん
垢版 |
03/11/27 06:30ID:???
>>18
>Perl PHP Rubyじゃインターフェース無いし
プロトタイプベースだからいらんでしょ。アホか。

>GUIもHTML吐いて作るわけだし、
むしろその辺のGUI部品より融通が利くわけだが。


後、J2EEとかASP.NETはWebプログラミングに入らないんですか?
完全無料主義者のあなたの中では。
0020nobodyさん
垢版 |
03/11/27 07:30ID:???
オブジェクト指向が必要なほど大規模になることもなく
やっぱり>>6みたいなものになっちまうのか

>>6を汎用的に書ければいいんだけど
0021nobodyさん
垢版 |
03/11/27 07:31ID:0zBWj9/p
>>18
オブジェクトの永続化について調べてみるといいかも。
PHPなんかでは、普通にセッションにオブジェクトを格納出来るよ。

0022nobodyさん
垢版 |
03/11/27 08:17ID:0zBWj9/p
>>20
一連の処理をひとつのアプリケーションとし、
各処理をそのアプリケーションの状態とみなすと、
Stateパターンを適応できますね。perlのCGI::Application みたいに。

勿論、非オブジェクト指向でも同様の処理は可能です。
ハッシュ等にキーと処理へのポインタを登録し、
与えられたキーの処理を呼び出すといった方法で、冗長な分岐から解放されます。


ところで、ウェブプログラミングで*使える*(eq 有用な?)デザインパターンって、
例えばどんなの?
0023nobodyさん
垢版 |
03/11/27 08:46ID:8RwaY1jw
Webプログラミングの場合、GUIより、モデルやコントローラ周りでの
プログラミングでデザインパターンを多用するケースが多い気が。

結城 浩著書の本は役立ってます。

0024nobodyさん
垢版 |
03/11/27 11:23ID:lzQjXivq
>>19がなんでそんな必死になるのかわからんし
全然反論になってない
0025nobodyさん
垢版 |
03/11/27 12:31ID:???
ごめん、クラスの組み合わせがデザインパターン?
つかデザインパターンを易しく説明きぼんぬ。まじで。
0026nobodyさん
垢版 |
03/11/27 13:01ID:???
GOFならぐぐればいくらでもでてくる
0027nobodyさん
垢版 |
03/11/27 13:58ID:???
Web Service なシステムを作る上でのデザインパターンなら考えられるかも
ConcreteStrategy を一個の CGI として実装して… うーいまいちメリットないな
0028nobodyさん
垢版 |
03/11/27 14:15ID:???
フォームデータ処理
if
 obj=new Hoge(query);
else if
 obj=new Piyo(query);
else if
 obj=new Foo(query);
else if
 obj=new Bar(query);
・・・・

obj.proc

>>6とあんま変わらんな
0029nobodyさん
垢版 |
03/11/27 16:50ID:???
MVCさいこー。
いや、本気で。
0030nobodyさん
垢版 |
03/11/27 17:03ID:???
テンプレート使えばモデルとビューは分離できるな
0031nobodyさん
垢版 |
03/11/27 22:02ID:0zBWj9/p
>>25
オブジェクト指向にクラスが必須ではないのと同じくらい、
デザインパターンにオブジェクト指向が必須という訳ではないと思う。(私見)
オブジェクト指向以外でも応用することが出来ます。

>>28
>>22 の方法、伝わらなかったかな。サンプルこんな感じです。
use CGI;
my $query = new CGI;
my $app = new App(
func1 => \$func1,
func2 => \&func2,
func3 => \&func3
);
$app->exec($query->param('mode'), $query);
sub func1 { my ($query) = @_; print "func1\n"; }
sub func2 { my ($query) = @_; print "func2\n"; }
sub func3 { my ($query) = @_; print "func3\n"; }

package App;
sub new {
my ($class, %menu) = @_;
bless({menu => \%menu}, $class);
}
sub exec {
my ($self, $key, @args) = @_;
if (ref $self->{menu}->{$ket} eq 'CODE') {
&{$self->{menu}->{$key}}(@args);
}
}
0032nobodyさん
垢版 |
03/11/27 22:15ID:0zBWj9/p
>> 23
アプリケーションサーバや、フレームワーク内でなら使われてる例は多いよね。GOFに限らず。

うーん、OOP/GOF な話題がメインなのかな、ここ?
WEBパターンとかの話題はスレor板違い?
http://www.c2.com/cgi/wiki?WebsitePatterns
0033nobodyさん
垢版 |
03/11/27 22:29ID:???
>>31
非オブジェクト指向言語でオブジェクト指向ごっこしたら大体は破綻するけどね。

言語もパターンも使いよう。
あんたの実力はソースコードレビューではなく客先試験で発揮して下さいよって感じになりかねない。
0034nobodyさん
垢版 |
03/11/27 23:54ID:???
25です。
>>31
ますます分からなくなりました。
これって特殊な例じゃない?
0035nobodyさん
垢版 |
03/11/28 00:49ID:???
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め
0036nobodyさん
垢版 |
03/11/28 02:36ID:???
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め      だってよ。(w
0037nobodyさん
垢版 |
03/11/28 06:43ID:???
>>34
だからぐぐれよ
解説サイトいくらでもあるだろ
それか本かって読め      だってよ。(w      だってよ。(w
0038nobodyさん
垢版 |
03/11/28 07:55ID:???
PEARのソースコードは
デザパの勉強なるよ
0040nobodyさん
垢版 |
03/11/28 10:57ID:???
いまだに(wとか使う奴いるんだな・・・
0042nobodyさん
垢版 |
03/11/28 17:57ID:9mFpNgVw
ごめん、混乱させるような事言っちゃたかな。>25
http://www.hyuki.com/dp/dpfaq.html DesignPatterns FAQ日本語訳

パターンとは、あるコンテキスト(状況・背景)上の問題に対する一つの解決策。

繰返し発生するコンテキストは、フォームデータ処理などで発生する if else の条件分岐 like >6 >28
問題は、条件分岐の文にbugが混入しやすい事
解決策の一つは、>22 冗長な分岐を排除する。
これなら、オブジェクト指向でなくとも、ハッシュの様なデータ構造さえ使えれば適用できるでしょう?

これだけでは不十分で、これ以外にもこのパターンはどう言った時に適用すると良いとか、
適用した場合にどういった状況になるか、他に考慮するべき事もパターンに記述されます。
詳しくはパターン・ランゲージについて調べてみて。

"パターン"が理解出来たら、デザインパターンはすぐ理解出来ると思う。でも
単純に、すべてのクラスの組合せがデザインパターンと呼ばれるわけではない。(FAQにもそう書かれている)
"パターン"として有益な情報に成り得るのは、特定の条件の元の問題に対して。

組合せを指して"パターン"と呼んでいるのではないので。
デザインパターンの考え方は、オブジェクト指向をサポートしていない言語にとっても有用だと思う。
別に非OOP言語でのOOを推奨しているわけではないよ。>18 >19 >24 に対するフォローのつもり。>32
0043nobodyさん
垢版 |
03/11/28 19:07ID:???
コソーリとデザインパターンって何と聞いていいですか
0044nobodyさん
垢版 |
03/11/29 13:48ID:???
>>38

phpにおいて、というならまぁそうなのかもな。
リファクタリングされてないようなのがいっぱいあるけど。

なんか重いし、無駄が多いし、好きになれない
0045nobodyさん
垢版 |
03/11/29 21:36ID:???
>>44
>リファクタリングされてないようなのがいっぱいあるけど。

は再利用の際の技であり成果物にわざわざ適用しても仕方ないのでは?
0046nobodyさん
垢版 |
03/11/29 22:56ID:???
>>44
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。

ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど


0047nobodyさん
垢版 |
03/11/29 23:21ID:???
>>46
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
0049nobodyさん
垢版 |
03/11/30 00:32ID:Fs/0s5IP
>>31よりもっと使えるやつカモン
実際modeで分離なんて簡単にはいかない
005046
垢版 |
03/11/30 00:35ID:???
>>48
してないっす

>>49
Webで現実的な問題はやっぱり時間
金銭的なコストというよりも時間のコストが
惜しいケースが多い
(もちろんそれが金銭的なコストにも
繋がってくるのはそうなのだろうけど)

PHPは大規模なwebアプリにも通用するとは思うけど
確かにフレームワーク的なものは発展中
だからこそPEARがその役割を担っていくと考えてる
PHP5ではよりPEARの役目は大きくなると思う
0051nobodyさん
垢版 |
03/11/30 00:43ID:???
>>50
PHPで大規模システムって無謀だと思う。
0052nobodyさん
垢版 |
03/11/30 00:57ID:???
>>49
commandパターンで実装

>>50
モノにもよるんじゃない
パフォーマンスも求められるものはキツいかもしれないが
ただ単に規模だけが大きいんなら
PHPでも十分メンテナンスしやすい
再利用性そこそこのもんはちゃんと作れると思う
0053nobodyさん
垢版 |
03/11/30 01:17ID:???
>>52
commandパターンがどう使えるのかぜんぜんわかんね
0054nobodyさん
垢版 |
03/11/30 01:33ID:???
>>46
リファクタリングの目的はパフォーマンスを多少犠牲にしても
メンテしやすいコードを作ることだよ。
0055nobodyさん
垢版 |
03/11/30 01:49ID:ENFs/Hl7
>>53
じゃあ使わんでいいよ、それだけのもんだ
なんで使えるのかなんで使うと得するのか
調べるコストをかけれないなら
最初から使わないのも選択のひとつ
0057nobodyさん
垢版 |
03/11/30 02:35ID:ENFs/Hl7
>>56
ああもちろんだ
俺も別に完全になんか理解してるわけない

つーか何しようとしてるか知らんが
その>>49のmode毎にたいそうな処理が
あるならともかくどうせおまえらの事だから
書き込みか確認かとかそんなだろ
なら>>6で別にいいよ
command毎にクラス作って別々の実装のコード書いて
呼び出しが $com->exec(〜) に一見なったところで
>>6がダサいからと単純に割り切るような奴が
中身実装しても良くなるとは思えん
0058nobodyさん
垢版 |
03/11/30 03:11ID:???
>>6がダサいからと単純に割り切るような奴が中身実装しても良くなるとは思えん
この部分には全く根拠がないし、見当外れだな
0059nobodyさん
垢版 |
03/11/30 09:48ID:???
>>6

なが〜い関数無しのスクリプトが見えます・・・。
0060nobodyさん
垢版 |
03/11/30 10:01ID:???
最近WebProg飽きたからやってないけど、昔はこんな感じに組んでたよ。
勝手にSDM-VCモデルとか呼んでたけど。
後から調べたら似たような思想の設計法とかやたらとあってちょっと欝。

S:ストレージ
ファイルとかDBとかを同じメソッドでアクセスできるようにするためのラッパクラス。
三層スキーマの内部スキーマ相当でODBCとかと似たような概念。
ここをモジュール化することで次回から使い回しが可能。

D:データ
ストレージに保存するエンティティ(データ)クラス。
同概念スキーマ相当。JDBC的な考え方。
Sを差し替えるだけで様々な媒体に永続化が可能なため移植が楽に。

M:モデル
言うまでもなく、MVCのM。
ビューに依存しないロジックを提供する。

VC:ビュー&コントローラ
リストボックスとか汎用的な部品だとVとCの分離には激しく意味があると思うが
オーダ特化のVはむしろCと一緒に管理した方が便利という判断でいっしょこたんに。
マンマシンインターフェースを担当する。
0061nobodyさん
垢版 |
03/11/30 12:35ID:???
>>60 おれもそういう経験あるよ。
有名なモデリングパターンや、デザインパターンを知らかったとき、
もっと効率良く開発したいと心掛けながら、設計していたら、
結局有名なパターンと同じ方法で設計してた。
0063nobodyさん
垢版 |
03/12/01 02:53ID:i/vnv4B8
>61
質問いいかな?
MVCとかってパターンランゲージの用語で言う「パターン」に含まれるの?
モデリング・パターンのパターンとか?MVCにもパターンの様なもの
(どういった時にMVCで設計するといい。とか)の記述がある?


自分のデザインパターンに対する認識が他の人とは違ってるよーな気がしてきた。
「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
0064nobodyさん
垢版 |
03/12/01 06:30ID:???
>>63
>>6をパターンとかほざいてるんだからなんでもありっしょ。
0065nobodyさん
垢版 |
03/12/01 10:49ID:???
>>46-47

いや、>>38でデザパの勉強になるといわれての>>44では?

俺も好きになれない。
よく使いたいと思うものに無駄が多いように見えるから。AuthしかりDBしかり。

sql作るのは Builder & Directorでやって欲しいし、
CREATE 〜なんて AdaptorやDecoratorでいい。
メソッドの中にベタ書きだし、クエリ発行関数はあちこちに散らばってるし。
詳しいわけじゃないけど、これがデザインパターンといわれるとなんか抵抗あるわけですよ。

それでもPEARスレはのぞいちゃうんだけどね。
0066nobodyさん
垢版 |
03/12/01 11:09ID:???
無駄が多いんだけならいいんだよ。その分汎用性が高くなってるわけだし。
でもダサいコードが多いじゃん。あれなら Perl で CPAN の方が(゚Д゚)ウマー
0067nobodyさん
垢版 |
03/12/01 13:06ID:???
>「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
>等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。

それは、多くの経験の集約から「このパターンはこのケースに使える」というのが出てくるのであって、
今は「こういうパターンがあるんじゃね?」って段階だろ。このスレ的には
0068nobodyさん
垢版 |
03/12/01 19:00ID:???
>>60
いわゆるDAOとValueObjectですね。
Javaだとそのあたりを担ってくれるフレームワークも多いけど、
PHPなんかだとこれからの分野なのかな。
0069nobodyさん
垢版 |
03/12/01 19:39ID:???
>>65
成程ちょっと納得
じゃあデザパの勉強として
DBのリファクタリングにチャレンジしてみる
0070nobodyさん
垢版 |
03/12/02 06:42ID:???
>>47
>「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。

「しんどい」仕事をふやさんでも・・・。
0071nobodyさん
垢版 |
03/12/02 06:42ID:???
>>69
リファクタリングとチューンナップを一緒こたんにしてないか?
0072nobodyさん
垢版 |
03/12/02 06:46ID:???
リファクタリングって再利用しやすいようにメソッド名を適切に書き換えたりするくらいじゃないの?
ロジックを変更すればそれに影響するすべての部分に再試験が必要になるわけで
それって非常に効率が悪いわけで。

それをやらずにごにょごにょ言ってるなら非常に危険なソフトウェアがちまたにあふれることになるかと。
0073nobodyさん
垢版 |
03/12/02 08:27ID:1mz3fQJ8
>67
パターンランゲージってそういった経験を文書化するものじゃなかったっけ?

>PHP/DesignPattern
horde の人とかデザインパターンを結構意識して使っている様だよ。
PEARだったらLog関連のクラスがGoF適用例として参考になると思う。

0074nobodyさん
垢版 |
03/12/02 10:58ID:???
PEAR みたいなダサいもん、参考にすんなよ。
0075+++
垢版 |
03/12/02 11:11ID:???
>>72
いやもっとあるよ。オレは詳しくはないけどね。
もちろんリファクタリングするにはテストファーストが重要だから。
それがなけりゃダメ。
0076nobodyさん
垢版 |
03/12/02 14:00ID:c/j/bWHB
デザインパターンて何?
0077nobodyさん
垢版 |
03/12/02 14:11ID:???
>>76 ずばり!システムデザインのパターンです。
0078 
垢版 |
03/12/02 17:54ID:???
なんでデザインなんだろう。
0079nobodyさん
垢版 |
03/12/02 19:32ID:/3byaW6X
デザイン≒設計
0081nobodyさん
垢版 |
03/12/02 21:34ID:???
デザインパターン≒下絵
?→?→?
↓ ↑ ↑
?→?←?
0083nobodyさん
垢版 |
03/12/05 00:56ID:???
おすすめの書籍を教えてよ。
リファクタリング+デザインパターンもの?
0084nobodyさん
垢版 |
03/12/05 22:40ID:???

       Java言語で学ぶデザインパターン入門
0085nobodyさん
垢版 |
03/12/21 01:33ID:hM57n5k9
昔Observerを使ったMVCを知って、
『こりゃいいや!』ってWebプログラムで使おうとして
かえってごちゃごちゃになった。
0086nobodyさん
垢版 |
03/12/21 01:36ID:hM57n5k9
あ、本題書き忘れた。
Compositeパターンはツリー型掲示板なんかにうってつけじゃないの?
0087nobodyさん
垢版 |
03/12/21 10:57ID:???
>>86
そうですか?

なんかただの木構造と混同してないか?
008885
垢版 |
03/12/21 13:13ID:???
>>87
ん?……あ、そうか。
スレッド(トピック?)の下にスレッドがあるような再起構造じゃないや。

でも、子記事を持つものをComposite、持たないものをLeafと見立てて
使えないかな?

それとも俺何か勘違いしてるかな?
0089nobodyさん
垢版 |
03/12/21 15:35ID:???
>>87
木構造を表現するのに適切なデザインパターンだと思うけど?> Composite pattern

>>79,81
パターン言語には、その(solution)解法を適用する場合のコンテキスト
(背景・解決する問題の状況)や、force(制約・制限)等が書かれているはず。
更に言えば、具体的な事例や、そのパターンを適用した際に起こる副作用とかトレードオフ等、
こういった一連の状況を指してパターンと呼んでいるんじゃなかった?

solutionの部分だけを指してパターンと呼んでいる人が多い様に見受けられる。
FAQにもパターンという表現は誤解を招きやすい言葉だったって書かれているけどね。
だからと言って誤解されたままでは有益な議論は出来ないよ。
一言で説明するのは難しいかも知れないけど、設計と言い切ってしまうのはどうかな?と思う。

デザインパターン => オブジェクト指向での設計上の問題に対する解決策とそれに関する知見。

>>85
かえってごちゃごちゃになったのなら、どうしてそうなったのか考えてみよう?何か原因あるはずだよね?
ここで、パターン使ってこうなったからパターンは使えない、なんて短絡的な発想はせずに。
どうすれば、その問題をスマートに解決出来るんだろうと考えてみる。

例えば、Observerパターンで知られている問題点は、
Subjectが複数になった場合に保守や拡張が困難になる、その場合はSubjectに中間層を設けるなど。
パターンの説明には必ず関連するパターンへの参照や、例外/制限事項等が書かれているはずです。

クラス図だけ見真似てデザインパターンを使ったつもりに浸っていると、
パターン使った=>更に悪化 という*パターン(繰返しの意味で)*に陥りやすいです。
0090nobodyさん
垢版 |
03/12/21 15:43ID:???
>>89
めんどいから要約してくれ。3行位に。大体それくらいの情報量だろ?
0091nobodyさん
垢版 |
03/12/21 15:55ID:???
無理。
ジャンプ&フローで要約性がないパターン。
0092nobodyさん
垢版 |
03/12/21 17:02ID:???
>>90

>>89を要約すると「お前らもっと勉強しろ、俺はこれだけ物知りだ」になります
009385
垢版 |
03/12/21 17:14ID:???
>>89
ああ、ごめん、言葉が足りなかった。

>>85
Observerを使ったMVCはGUIなソフトとかには使えるけど
Webアプリケーションなんかには向かないぞ、気をつけろー。
Webアプリケーション用のMVCはJ2EEとかを参考にしろー。

って意味だったんです。
0094nobodyさん
垢版 |
03/12/22 01:36ID:???
CGIはGoF的なデザインパターン使って作っても
オブジェクト生成して一回で捨てちゃうもんな
0095nobodyさん
垢版 |
03/12/22 01:50ID:???
こんな100レス近くも語ってて
結局>>6を改善することはできないんですか?
0096nobodyさん
垢版 |
03/12/22 07:37ID:???
>>94
再利用できる要素はいっぱいあるんだけどな。
ファイル操作とか毎回組んでも面倒くさいしバグの入り込む余地があるしろくな事がないと思うよ。
0097nobodyさん
垢版 |
03/12/23 02:36ID:???
>>95
>>6みたいなのが良いとは思ってないが、
>>6の代行になる優れたコードがあったとしても
結局>>6レベルくらいで求められる規模のwebAPPの場合
実際のところ>>6が一番速く書けて一番シンプルで
一番速く動くコードだったりしちゃわないか
0099nobodyさん
垢版 |
03/12/26 13:59ID:5BZ0FoxA
>>96
ファイル周りで、こういう処理にはこういうパターンがいいよ、みたいのある?
趣味でCGIスクリプト作ってるけど結局ファイル入出力が処理の中心で、
ここをシンプルに書ければだいぶ綺麗になるんだけどなぁ。
0100nobodyさん
垢版 |
03/12/26 23:27ID:???
>>99

>>60


後、今、RubyとXML使って汎用的なCGI向きなファイルシステム書いてます。
0101nobodyさん
垢版 |
03/12/26 23:57ID:???
だれか
>ファイルとかDBとかを同じメソッドで
>アクセスできるようにするためのラッパクラス。
これ作ってください。
0102ヽ(´ー`)ノ
垢版 |
03/12/27 04:55ID:???
> だれか
> >ファイルとかDBとかを同じメソッドで
> >アクセスできるようにするためのラッパクラス。
> これ作ってください。
Perl の DBI に当たるクラスって Ruby には無いの?



0103100
垢版 |
03/12/27 09:14ID:???
>>102
アルみたいですな。知らなんだ。
ちょっと興味があるんですが、データをCSVとかXMLに落としてくれるドライバって存在するんですか?
0107nobodyさん
垢版 |
04/01/05 19:45ID:???
PHP、言語として機能が足りてないからデザパタに向いてないよ。
典型的な例が Singleton。
0108nobodyさん
垢版 |
04/01/05 20:23ID:???

$a = NULL;

function GetSameObject(){
global $a;

if($a == NULL){
$a = new SameObject();
}

return $a;
}
0109nobodyさん
垢版 |
04/01/07 09:41ID:???
>>108
だから、そういう小汚いコード書かなきゃイカンから言語として機能が足りてないんだろ。
PHP5 だと static あるから Singleton は書けるようになるが…それでもどうかと思う。
0110nobodyさん
垢版 |
04/01/07 18:00ID:???
>>109
PEAR パッケージでよく使われてますが、 PHP4 でも普通に書けますよ。

class Hoge
{
function &singleton()
{
static $instance;
if (!isset($instance)) {
$instance = new Hoge;
// $instance = HogeHoge::factory;
}

return $instance;
}

$instance = &Hoge::singleton();
0111107
垢版 |
04/01/08 05:49ID:???
>>110
>>109 の言う「小汚い」部類じゃないかね、そのコードは。
クラス内唯一のインスタンスなんだから、論理的に言えばクラスが static 変数として持つべきだろう。
> PHP5 だと static あるから Singleton は書けるようになるが
と言っている時点で >>109 の言いたい事は自明だと思うんだが…。あんた大丈夫か?

PEAR のコードや Do You PHP にあるデザインパターンのサンプルでも良く見掛けるが、
PHP4 自体の機能が足りずに他の言語ではしなくていいような事をしている点がいくつもある。
少くとも俺は PHP はオススメしない。
0112nobodyさん
垢版 |
04/01/08 06:38ID:???
>>111
デザパタの本の「はじめに」とか「概要」を読み直すことを推奨。

0113nobodyさん
垢版 |
04/01/08 06:44ID:???
>>111
てことはCはダメ言語でerronoなんて使ってるunixは目も当てられないって事になるのだろうか。
そんなことだからいつまでもプログラマ + Web特化なんだな。
0114nobodyさん
垢版 |
04/01/08 06:47ID:???
まぁ C はダメ言語だろうな。
0115nobodyさん
垢版 |
04/01/08 08:32ID:???
>>110
クラス・メソッドを使わずnewすると普通に別のインスタンス作成出来るよね?
0116110
垢版 |
04/01/08 09:17ID:???
>>115
できますよ。
言語特性や制限はありますが PHP や Perl では Private メソッドも含めてそういう
ものは書く側が慣習的に守るというだけのことです。 111 さんがいうようなことも
当然ありますけど、だからといってその言語の利点があるわけですから使い分けるの
が良いというだけの話でしょう。
0117nobodyさん
垢版 |
04/01/08 14:14ID:???
そうだなあ、singleton という、
コンストラクタの実装とクラス変数に大きく依存するパターンは、
PHP の言語仕様とインピーダンスミスマッチが大きい、ということは言えそうに思う。

ただ、GoFパターン全部がそういうわけではなく、
むしろ singleton が例外的だとも言える。

つか、そもそも singleton ってウェブプログラミングで使う?
まあ、singleton 以外のパターンも今のところウェブプログラミングでの使い道が
あまり見つかってないようではあるが。

しかし、ぱっとすぐ思いつかないが、
singleton 以外でも PHP が向かないパターンはありそうな感じではある。

>>107 への宿題として、
singleton 以外で PHP が向いていないと思われるパターンを提出せよ。
「ウェブプログラミングで使える」というスレの趣旨を満たすとモアベターだが、
さすがにそこまでは難しいか。
0118nobodyさん
垢版 |
04/01/08 20:51ID:???
>>116
一応、慣習や暗黙の了解みたいなのは理解しています。が、
言語としての機能が足りていない部分という論点に関して言えば、コードの奇麗汚いではなくて
singletonパターンの条件を完全に満たす事が出来ない点じゃないかな。と思った。

>>117
例:データベースへ接続するクラスをSingletonにする。
ウェブプログラミングでもアプリケーションサーバ等フレームワークにはよく使われてるよ。
0119107
垢版 |
04/01/08 23:07ID:???
>>117
宿題も糞も、PHP のデザインパターンのサンプルコード読めよ。
その辺の問題点も全部書いてるわ。
0120nobodyさん
垢版 |
04/01/08 23:24ID:???
まぁ、極論すればグローバル変数をラップしただけという代物だ。
気を付けてグローバル変数を使用するのと早々大差はない。
0121nobodyさん
垢版 |
04/01/09 07:36ID:???
                       ,イ    │
                    //      |:!
                      //,. -/r‐- 、| !
                   /,/ ./ |  _」 ト、
                 /.\`/  |二...-┘ ヽ
.                  i   ,.>、;/ー- 、    l
                 ! ∠.._;'____\   |
                ,!イ く二>,.、 <二>`\.、ヽ.     
               /'´レ--‐'ノ. `ー---- 、 |\ ヽ、    
              \  `l  (!"      Jfヽ!  `''-;ゝ    大佐ではない
                `‐、jヽ ヾニニ>   ゙イ" }_,,. ‐''´     
                   `´\  ー   / ,ィ_}
.                    |_ `ー ''´ _」'
           , ー‐-‐‐‐--''.‐''゛,,;,,...:    ゛''-、、,;,,
         ,ィ'゛              ゛゛""'     ゛"'''-、
         /                          ヽ
         /                             '、
        l                             l 
.       l             i.                       l 
        l           :i.          ヽ.:.:...:.::     "'
.        l         .:l             ヽ.:.::...     "''、
.        l.          .:l              ヽ.:..:.       `'、
        l         ::l:           ';.:.:.....      ヽ
        l          .:l.:..     .:ィ.):.:.     l.:.:.:       .:.ヽ、
.        l            .:l..:     ''ー.:    .:.:l.:.:..:..::      .:i'゛

0122nobodyさん
垢版 |
04/01/09 10:45ID:???
>>118
フレームワーク内で使われるのはわかるが
DBのコネクションプールはそうやってフレームワークが管理してくれるはずだから
ユーザがコード書く段階では気にしなくていいぢゃん。
Perl ですら mod_perl + Apache::DBI 使えばいいし。

と思ったが、よくよく考えてみたら、PHP にはコネクションプールが無いのか。
それは確かに問題だな。
0123110
垢版 |
04/01/09 11:34ID:???
>>122
私の知る限りでは Apache::DBI はコネクションプールをしているわけではな
くて PHP の持続的接続と同等の機能を提供するはずです。
つまり DSN 毎にコネクションを維持するだけ (さらにプロセス毎に) だと理
解していますが。

さらにコネクションプールは SQL Relay 等で実現できますよ。
0124nobodyさん
垢版 |
05/01/27 00:47:17ID:???
一生懸命読んだけど23の中の一個も理解できませんでした
どうしればいいでしょうか。
早くオブジェクト脳になりたいんです!
0127nobodyさん
垢版 |
2005/04/24(日) 12:25:02ID:???
PHP5だとデザインパターンも生きてくるのかな?
0128nobodyさん
垢版 |
2005/05/02(月) 21:38:03ID:M34Qp7Tn
プログラムの改修作業で、既存の動いているクラスを
変更なしに機能を追加したりするときにアダプタっていう
デザインパターンを使うのかな?使い方間違ってる?
0130nobodyさん
垢版 |
2005/05/03(火) 22:22:38ID:???
>>129
実は仕事で既に動いているPHPプログラム改修作業をすることに
なったのですが、

・非常に見づらいソース。開発者は既に退社&ドキュメントは無し。
・納期は短いのでリコーディングすることはできない。
・動作自体には問題はなく、現在正常に稼動中。
・機能拡張もあり。

という状況です。ソースが非常に見づらく保守性が著しく低いのと
機能拡張は大幅な仕様変更になるので、できればリコーディングしたい
ところなのですが、納期も無いことですし、何より現在問題なく
稼動中なのでそれはできません。

そこでなるべく既存のクラスに手を加えずに、機能拡張をしたい
という感じです。
このような場合、既存のクラスを継承させた新しいクラスを作り、
動いている部分は利用しつつ、新規の仕様に合わせた設計に作り変える
というやりかたを考えているのですが、これは別にデザインパターンという
わけではなくて、ただのOOPの継承を使ってるだけということですかね。

ちなみに、上記のような場合皆さんならどのような手法を取りますか?
識者のご意見をお聞かせいただけたらと思います。
0131nobodyさん
垢版 |
2005/05/05(木) 23:01:05ID:???
手法云々以前に、そんなDQNな物を担当させられる事になったら
漏れなら先ず上司に現状を報告し、指示を仰ぐな

1.現状のプログラムが如何に問題点の多い物であるか
2.前任者の無能さを叩き、リコーディングの必要性の訴え
3.リコーディングすれば納期に間に合わせる事は難しい。
 しかし前任者のプログラムに手を入れた場合、(極端に保守性が悪いので)変更によって障害が起きる可能性が高く、納期が大幅に遅れる危険がある。

以上を伝えて今後の方針を決め、増援を求めるなり何なり対策を協議して・・
(要は、「責任逃れの道はちゃんと作っておけよ」と)
0132130
垢版 |
2005/05/20(金) 00:05:10ID:???
>>131
遅レスですが・・・
非常に勉強になりました。
0134nobodyさん
垢版 |
2005/06/11(土) 13:52:15ID:???
PHPでデザインパターン使ってる?
0136nobodyさん
垢版 |
2005/07/14(木) 05:02:59ID:Dw3R1Zsm
良スレだと思うんだけど
みんなデザインパターンってあまり知らないのか?
0137nobodyさん
垢版 |
2005/07/14(木) 05:09:10ID:???
ムのスレもそうだけで知ってる人ってほんと書かないね
0138nobodyさん
垢版 |
2005/07/14(木) 05:35:55ID:???
このスレはお題があれば再生するんじゃないの。
0139nobodyさん
垢版 |
2005/07/14(木) 20:33:00ID:???
良スレだと思うんだけどな。
0140nobodyさん
垢版 |
2005/07/14(木) 21:17:21ID:???
待ったり進行でいいんジャマイカ?
0141nobodyさん
垢版 |
2005/08/09(火) 19:13:09ID:1DO6YyCD
まあ、とりあえずJ2EEパターンやPoEAに書かれているパターンは抑えるべきだと思うが。
後者の場合、Webは選択肢の一つに過ぎないけど参考になる。
これらをPHPに適用するとどうなるか考えるのも面白い。
0142nobodyさん
垢版 |
2005/09/02(金) 22:29:06ID:???
このスレ死んでるのか^^; 既に語り尽くされてしまっているからなぁ。
0144nobodyさん
垢版 |
2005/09/09(金) 01:34:49ID:???
PHP向けのは要らない
0145nobodyさん
垢版 |
2005/09/13(火) 13:39:23ID:???
>>143
ペーパーバッグなのにやたら高いね
0147nobodyさん
垢版 |
2005/09/19(月) 10:34:02ID:???
ペーパーバックって何よw
0148nobodyさん
垢版 |
2005/09/19(月) 11:32:36ID:???
>>147
「ペーパーバック」なら表紙が紙でできた安もんくさい本のことかな。
0149nobodyさん
垢版 |
2005/09/20(火) 02:45:05ID:???
うわ、今まで
ペーパーバッグとペーパーバック間違えてた
ビートルズの曲もペーパーバッグライターと思ってた…
0150nobodyさん
垢版 |
2005/09/20(火) 02:46:20ID:???
ペーパーバッグライター の検索結果 約 148 件

よかった他にもたくさんいた…
0151nobodyさん
垢版 |
2006/01/19(木) 19:25:49ID:tf3J2l5I
俺の場合、Singleton、Template Method、Factory Method、
Strategy、あたりを使うねぇ。
0152nobodyさん
垢版 |
2006/01/20(金) 08:07:06ID:???
でたこのパターーーーーーーーーン
0154nobodyさん
垢版 |
2006/01/20(金) 09:48:05ID:???
でたこタンハァハァ
0155nobodyさん
垢版 |
2006/01/20(金) 13:38:24ID:???
PHPだけど、
class array_formatter{
    function format_array(&$array){
        if(!count($array)) return $this->format_empty();

        $html  = $this->format_header($array);
        foreach($array as $key => $value){
            $html .= $this->format_item($key, $value);
        }
        $html .= $this->format_footer($array);
        return $html;
    }
    function format_empty(){
    }
    function format_header(&$array){
    }
    function format_footer(&$array){
    }
    function format_item($key, $value){
    }
}

こんな感じのクラスを継承して使いまくってる。
0156nobodyさん
垢版 |
2006/01/25(水) 17:02:55ID:thETe4Qv
>>155
それがデザインパターンと何の関係があるの?
0159nobodyさん
垢版 |
2006/09/27(水) 12:34:29ID:???
http://www.amazon.co.jp/gp/product/4798013188
はじめてのPHP5プログラミング エキスパート編

ワイズノット (著)
価格: ¥ 2,730 (税込)
単行本: 378ページ
出版社: 秀和システム (2006/05)
ASIN: 4798013188

目次

オブジェクト指向プログラミング
クラスの作成とオブジェクトの操作
PHPのオブジェクト指向のその他の話題
PEAR
Smarty
ユーザ認証とアクセス制御
セキュリティ
エラーと例外処理
Mojavi
PDO
オークションシステムの作成
データベースアクセスの実装
プログラムの実装
システムの問題点と、改良、拡張方法

Chapter03「PHPのオブジェクト指向のその他の話題」(P60〜76)で、デザインパターンの説明があります。
PHPでデザインパターンを勉強する人は参考になるかな?
0160nobodyさん
垢版 |
2010/06/02(水) 21:28:21ID:???
4年ぶりに記念カキコ。
0161nobodyさん
垢版 |
2012/05/25(金) 13:18:41.79ID:/0EJtfhp
この課題の意味を日本語に翻訳してくださいw

Command パターン、Observer パターン(イベントリスナ)のような、デザインパターン、あ
るいは、MVC モデルを利用した、独自のプログラムを設計する。GoF の 23 パターンであれば、どのようなパ
ターンを用いてもよい。レポート中には、適用したパターン名、および、適用箇所を明記すること。なお、最低
でも4つ以上の独自のプロトタイプ・オブジェクトを用いてプログラムを設計するものとする。設計内容として、
次の3項目を記述する。
1. デザインパターンによって生みだす特徴を参考に、ソフトウェアのテーマを詳細に記述する。
例: Facebook のようなアドレス帳
例: Twitter のような掲示板
デザインパターンとソフトウェアの機能との関連性を考察し、なぜそのソフトウェが必要で、なぜデザイン
パターンを適用したのかを説明する。
2. 設計したソフトウェアについて、プロトタイプ・オブジェクトの一覧と、各プロトタイプ・オブジェクトが
実現する機能、および、各プロトタイプ・オブジェクト間の関係を記述する。なお、全プロトタイプ・オブ
ジェクトについて、下記のように、クラスの属性とメソッドがわかるように、ソースコードを添付すること。
0162nobodyさん
垢版 |
2012/05/27(日) 11:21:33.31ID:I9XKNPOE
 
 
0163nobodyさん
垢版 |
2012/05/27(日) 22:35:05.32ID:pPYyk92v
>>161
命令形態、観察者形態(出来事聴取者)のような、設計形態、あ
るいは、模表制 模型を利用した、独自の計画を設計する。四の団 の 弐拾参 形態であれば、どのような形
態を用いてもよい。論文中には、適用した形態名、および、適用箇所を明記すること。なお、最低
でも四つ以上の独自の原型・物体を用いて計画を設計するものとする。設計内容として、
次の参項目を記述する。
一. 設計形態によって生みだす特徴を参考に、柔軟製品の思想を詳細に記述する。
例: 顔本のような住所帳
例: さえずり のような掲示板
設計形態と柔軟製品の機能との関連性を考察し、なぜその柔軟製が必要で、なぜ設計
形態を適用したのかを説明する。
二. 設計した柔軟製品について、原型・物体の一覧と、各原型・物体が
実現する機能、および、各原型・物体間の関係を記述する。なお、全原型・物
体について、下記のように、部門の属性と手法がわかるように、源符号を添付すること。
0164161
垢版 |
2012/05/28(月) 16:57:47.92ID:???
>>163
回答ありがとうございます。
「四の団 の 弐拾参 形態」とは何でしょうか?
0167nobodyさん
垢版 |
2014/10/18(土) 13:39:25.49ID:7o723kow
 
お世話になります。
私、責任者の加茂と申します。以後、宜しくお願い致します。
http://www.apamanshop.com/membersite/27009206/images/kamo.jpg
浪速建設様の見解と致しましては、メールによる対応に関しましては
受付しないということで、当初より返信を行っていないようで、今後につい
てもメールや書面での対応は致しかねるというお答えでした。
 
このように現在まで6通のメールを送られたとのことですが、結果一度も
返信がないとう状況になっています。
 
私どものほうでも現在までのメール履歴は随時削除を致しております
ので実際に11通のメールを頂戴しているか不明なところであります。
 
弊社としましても今後メールでのやり取りを差し控えたく、浪速建設様
と同行の上でお会いさせていただきたい所存です。
 
・ブラックロックシューター
 http://s-at-e.net/scurl/BRS.html
・ベヨネッタ
 http://s-at-e.net/scurl/BAYONETTA.html
・風ノ旅ビト
 http://s-at-e.net/scurl/JOURNEY.html
 
http://s-at-e.net/scurl/kabetokyojinto.html
 
・2012
 http://s-at-e.net/scurl/2012.html
・プロメテウス
 http://s-at-e.net/scurl/Prometheus.html
・アバター
 http://s-at-e.net/scurl/Avatar.html
0168nobodyさん
垢版 |
2015/10/27(火) 08:47:29.44ID:AiH50osU
転職の際は要チェック。
下記の条件が全て当てはまる会社にご注意下さい。

・IT系 in Tokyo
・転職会議で2.5点
・転職会議の「その他>2ch情報」の欄で過去の2chスレが表示される
0169nobodyさん
垢版 |
2017/12/30(土) 13:22:56.31ID:YhlYw6jg
誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。

グーグル検索⇒『半藤のブブイウイウレレ』

V6XHOPNRFF
0170nobodyさん
垢版 |
2023/08/22(火) 11:52:14.26ID:???
参考書買っただけで、勉強をした気になったよ
レスを投稿する


ニューススポーツなんでも実況