- 1 名前:名無しさん@お腹いっぱい。 [2001/05/27(日) 17:59 ID:6pK8snWA]
- ASPでもPHPでもPerlでもJavaでも形こそ違えど結局は可変部を吐き出すための
<%〜%>やらprint文の嵐になってしまう。 「HTMLはHTML、プログラムはプログラムと完全に分離する方法はないものか。」 を話し合うスレッドです。
- 485 名前:316 mailto:sage [02/10/22 13:25 ID:???]
- >>480
>質問その1 >どういうWebサイトを作る時にCocoonはメリットがあるの? 一言で言うと、力技でたくさんコンテンツを作る必要があるサイトだな。 Cocoon2自体は、ローテク同士の接着剤の役目を果たす。Webアプリケーションを ごりごり作るというよりも、大量のコンテンツが並ぶサイトを構築するための ものだ。 もちろん、ありがちなショッピングカートみたいなものを作るのも結構 簡単なんだが、それは他のソリューションでも同じように出来る。 Cocoon2が便利なのは、元ネタは殆ど同じなんだが、見せ方やら使い方が 色々で、しかもそれがべらぼうに多くて、という場合に、どんどん楽になる。 XSLTに対してすんなり入れるなら全然OKだろう。XMLのありがたみを最大限に 活かしてくれる枠組みという感じだ。
- 486 名前:316 mailto:sage [02/10/22 13:30 ID:???]
- >質問その2
>Cocoonではどうやってロジックとデザインの分離を実現するの?(一応スレの内容に合った質問として) まず、Cocoon2の肝はサイトマップという仕組みにある。 サイトマップの中でコンテンツごとにパイプラインというのを定義していく。 サイトマップ自体はXMLファイルだが、これを読み込んで動的に Servletに変換してくれるというのが秀逸だ。 さて、サイトマップに書くパイプラインの簡単な例は、こんな感じになる。 <map:pipeline> <map:match pattern="hello"> <map:generate src="hello.xml"/> <map:transform src="hello.xsl"/> <map:serialize type="html"/> </map:match> </map:pipeline> これはブラウザからURLに、localhost〜〜〜/helloと指定すると、 まず、hello.xmlというファイルを読み込んで、そこにhello.xslというXSLTを 適用し、最後にHTML形式に変換して返信するという定義だ。
- 487 名前:316 mailto:sage [02/10/22 13:33 ID:???]
- ここで面白いのは、URLは何でもOKだということだ。
実体のファイルとは関係ない。 さて、元ネタが同じで、見た目だけ変更するにはどうするか。 この場合は、もうひとつパイプラインを追加して、適用するXSLTを別個用意すればOKだ。 <map:pipeline> <map:match pattern="hello2"> <map:generate src="hello.xml"/> <map:transform src="hello2.xsl"/> <map:serialize type="html"/> </map:match> </map:pipeline> これはサイトマップファイルに追記するだけで、on the flyでServletに なる。どうだ、便利だと思わないか(藁
- 488 名前:316 mailto:sage [02/10/22 13:37 ID:???]
- しかし、これでは質問への答えになっていない。ロジックはどうするのか、という
問いだ。ここで考えてみて欲しい。コンテンツを生成するときのロジックとは 元ネタのXMLを動的に生成することだということだ。そこで、Cocoon2では XSPというものを使う。 <map:pipeline> <map:match pattern="hellodb"> <map:generate src="hello.xsp" type="serverpages"/> <map:transform src="hello.xsl"/> <map:serialize type="html"/> </map:match> </map:pipeline> こういう記述をすれば、XSPを実行できる。実行した結果、XMLがメモリ上に 生成されて、こいつにXSLTが適用されるという按配だ。
- 489 名前:316 mailto:sage [02/10/22 13:40 ID:???]
- 勘のいい香具師なら気付いたことだろう。
そう、これは分業が可能だということだ。 ダミーのXMLを用意しておいて、XSLTの作成をする奴と、 そのダミーのXMLどおりのものを生成するXSPを書く奴とで別個に 作業できる。 最後に、サイトマップで合体すればOKという風になる。 しかも、それぞれは普通のエディタだけで作業可能だ。もちろん XMLエディタや、DreamWeaverのようにXHTMLを書けるツールを使うことで 生産性をUPできる。
- 490 名前:316 mailto:sage [02/10/22 13:42 ID:???]
- XSPのポイントは、決して見た目の中にロジックを埋め込んでいるわけでは
ないということだ。あくまでも、元ネタとなるデータの生成にロジックを 使うわけだ。 それに独自タグは一切不要だ。何故なら、単純なXMLとXSLTをくっつけているだけだからだ。 昼飯を食うので、続きは後ほど書く。
- 491 名前:316 mailto:sage [02/10/22 13:53 ID:???]
- さて、分業という点で言うと、
XSPプログラマ(M) XHTMLデザイナー(V) XSLTプログラマ(C) という分担が可能になる。XSLTはちょうどSQLプログラミングと同じような 感じだから、手続き型言語におけるプログラミングとは、また風情が違う。 XSPのロジックは、Javaで記述する。Servletになるのだから当然だな。 だからJavaで出来ることは何でもOKだ。
- 492 名前:316 mailto:sage [02/10/22 13:56 ID:???]
- 同じURLで、複数のUser-Agentごとに見た目を変更するのも簡単だ。
<map:pipeline> <map:match pattern="hello"> <map:generate src="hello.xml"/> <map:select type="browser"> <map:when test="imode"> <map:transform src="hello_imode.xsl"/> </map:when> <map:otherwise> <map:transform src="hello.xsl"/> </map:otherwise> </map:select> <map:serialize type="html"/> </map:match> </map:pipeline> このように、ブラウザセレクタを使って、適用するXSLTを変更することが出来る。 だからもう、i.〜〜やら、http://〜〜/iなどとして、分離する必要はない。
- 493 名前:316 mailto:sage [02/10/22 13:58 ID:???]
- もちろん、DBへのレコードの追加/更新/削除も簡単だし、
セッション管理や認証も簡単に実現できる。 大規模なサイトになれば、グループごとにサイトマップを分割して マウントという機能で連結させることも可能なので、個別に開発を 進めることもできる。
- 494 名前:316 mailto:sage [02/10/22 14:07 ID:???]
- さて、重要な質問に答えなければならない。
>質問その3 >うちの職場は男しかいないんだけど、Cocoonを使って開発したらカワイイ新人の女の子が入ってくる? まず、これまでの漏れのカキコを良く読んで欲しい。どうだろうか、女の子に 任せたい部分があるはずだ。そう、HTMLの作成〜XSLTのプログラミングだ。 ここは、見せたい数の分だけ作成する必要がある。もちろん、XSLTもファイルではなく <map:transform src="http://〜〜〜/hello_xsl"/>のようにXSLTを生成するServletを 作成して動的に生成させることも可能だが、これにも限度はある。 要するに、C/Sのシステム開発で画面周りをやる人足が一番必要となるように、 Cocoon2をつかった場合でも、画面周りの作成を担当する人間が多く必要となる。 しかし、得てして男のプログラマは、こんなところより、コードをがりがり書くことに 情熱を燃やしているはずだ。そこで、女の子の採用をする余地が生まれる。 幸いなことに、この不況のさなか職にあぶれている婦女子は多い。若い子もいっぱいだ。 そこにWebデザイナー募集初心者歓迎などと出せば、いっぱい集まってくるのは必然だ。 あとは面接して、好みの子を選べば良い。但しルックス偏重で戦力にならん奴を雇っても それはCocoon2の責任ではないことに注意しなければならないという罠(w
- 495 名前:316 mailto:sage [02/10/22 14:11 ID:???]
- もうひとつ注意点がある。初心者の女性には根気よく接してやることだ。
いきなり難しいテーマを与えて、ほったらかしにしておいて、出来なかったら 怒声を浴びせるなどというデリカシーのない行為は慎みたい。 残念ながらCocoon2はパブリッシングフレームワークではあるが、君の言葉の パブリッシングまで管理はしてくれないということだ。 Cocoon2はトランザクション系のWebアプリケーションも容易に開発可能だが、 その場合、簡単な画面をたくさん、という女性を必要とする状況にはなり辛い。 特に、コンテンツ数の多い、力作業の多い案件でこそ、女性の必要性をアピール可能だ。 だからこそ、Cocoon2を適用する案件は慎重に選ばねばならないのだ(藁
|

|