Tapestryについて語ろうよ!

■ このスレッドは過去ログ倉庫に格納されています
1Ace
垢版 |
NGNG
JakartaのTapestryフレームワーク使ってますか?
日本ではなかなか情報が手に入らず、本家のドキュメントも
古いバージョンのままなので、使いたいと思って挫折した人多くありませんか?

私はTapestry2.3あたりのころにTapestryの存在を知りました。
それまではStrutsでした。
デザイナーを内輪にかかえていない我が社では外注先から戻ってきた
HTMLからJSPへの変換および、再修正依頼が非常に困難でした。
○JSPへの変換ってつまらないよね!
○デザイナーがStrutsの拡張タグ理解できるわけないだろう!
○できたとしてどうやってデザインするの?
そんなあなたにはTapestryしかありません!
ぜひ日本でもこの2chを中心にTapestryの輪を広げて
Strutsにイカレテいる古臭いプログラマーたちを見返してやりましょうよ!

ちなみに私は携帯&PC向け有料サイトでTapestry使ってます。(^o^)v
登録ユーザ○十数万人、売上○千万円程度の規模です。
携帯は全機種対応確認済みです。
携帯のブラウザのバグ的なものに対応するために、
Tapestryのソースいくつか書き換えてるけどね(^_^;

Tapestryに興味ある人レスよろしくね!
NGNG
https://betterpetshop.dev.java.net/
Tapestry, Spring, Hibernateで作り直したPetShopだそうな。
298295
垢版 |
NGNG
>>296 サンクス。
NGNG
>>297
そんなあなたに the National Hockey League

http://www.nhl.com/

Cayenne もあるでよ。
300& ◆LMRaV4nJQQ
垢版 |
NGNG
さて、4/29にTapestry 3.1( & hiveMind)がスタートしたわけだが。
301デフォルトの名無しさん
垢版 |
NGNG
Tapestryでは、StrutsのTilesみたいな機能はないのでしょうか?

Webサイトで共通のヘッダーやフッターも全てのHTMLテンプレートに書かなければ
いけないのでしょうか?
NGNG
もうサーバサイドJavaは勘弁して欲しいよ
なんでこんな複雑なものが必要なんだ?
冷静に考えれ
NGNG
馬鹿発見

難しくしならないようにフレームワークがある
そしてTapestryは結構よくできている用に見える

反面、まったくできてないのはドキュメント

個人で作ったツールは出来がよくてもドキュメントがないとか
そういうのはよくあるがそんなイメージに近い

単なる一ライブラリならともかくその上で動かそうってんだから
ドキュメント無いとお仕事にならないよ
NGNG
本質が見えていないバカは303だ。
サーバサイドJava、俺も面倒だと思うよ・・・
全然スマートじゃない。
NGNG
何がどう面倒なのよ?
NGNG
自分の理解不足を、面倒という考え方に転嫁してるやつがいるな。
NGNG
客観的に見て、Webアプリ組むのに、Javaが一番楽チンか?
EJBってカンタン&楽チン?
TapestryとかVelocityとかStrutsとか誰でも簡単にすぐ使える?
俺は人にも教えてるし、書籍の執筆や翻訳したり雑誌記事も書くが
そのたびに内心「あ〜面倒!」と思うよ
逆に、ちゃんと理解してないヤツが何となく「簡単そう」と
思いこんでるだけじゃないの?
やればやるほどマンドクセ
NGNG
EJBが必要なレベルのWEBアプリってあんま無いと思うが

フレームワーク開発はプログラマの品質がピンキリなために
業務ロジックだけに集中させるという目的があるはず

分業考えるとstrutsよりTapestryとかのほうがいいとかそういうお話かと

ちょっとした動的コンテンツ程度ならPHPだろうがなんだろうがいいし
その程度なら豊富なライブラリもあるしjsp一本でいいだろう
ただある程度の規模になったとき困る
書籍の執筆で扱うサンプル程度の規模じゃ面倒になるだけなのは当たり前
NGNG
>>301
http://dorffweb.com/?page=taptutorial
このチュートリアルの第7章のサンプル見ればわかる。


ってだけでもアレなんで。結論からいうと、

  ・ヘッダー/フッターを司るJWCを自分で作って、テンプレートから呼ぶ。
  ・そのJWCの中では、呼ばれたテンプレートの内容を丸ごと書き出す
   Tapestry謹製のJWC "RenderBody" を呼ぶ。

という方法です。

RenderBodyのもっと詳しい説明はコチラ↓
http://jakarta.apache.org/tapestry/doc/ComponentReference/RenderBody.html
NGNG
×呼ばれたテンプレートの内容
○呼ばれたjwcidを持つタグの内容

スンマソン
311デフォルトの名無しさん
垢版 |
NGNG
StrutsやTapestryを一ヶ月の超短納期prjで採用するのが
間違ってる。。。
NGNG
>>311
ばりばり使いこなせるメンバーのみの少数精鋭ならいいけどね・・・
313初期不良
垢版 |
NGNG
>>307
WebObjects とか初心者に使わせることを考えたらどうだ?
凝ったことをしなければ非常に簡単に、しかも従っていれば
基本的にきれいな方向に持っていってくれる。そんなフレームワークが
できるならがんばって作ってもいいじゃないか。

そんな WebObjects のフレームワークに一番近い感じの
Tapestry age
314301
垢版 |
NGNG
>>309
なるほど。分かりやすい説明サンクスです。
NGNG
>>311
メンバ全員が使うフレームワークを熟知してれば問題ないんでは。
見た事無いけど。
316デフォルトの名無しさん
垢版 |
NGNG
>>315
Tapestryに限らないと思うけどフレームワーク熟知してる人間は少数で
いいのでわ?
んで、フレームワークとかわかんないけどJavaはかけるぐらいのPGに
ちゃんとした仕様書渡してビジネスロジックを実装させる(もちろん単体テストも)。
あとはフレームワークわかってる人間が組み込めと。
317301
垢版 |
NGNG
教えてクンで申し訳ないのだけど、
HTMLテンプレートやpage specification等のファイルの配置ディレクトリを
カスタマイズするにはどうすればよいのでしょうか?

いくつかのサンプルアプリを見てみたのだけど、常にHTMLテンプレートファイルは
context直下のディレクトリに、それ以外はcontext/WEB-INFのディレクトリに
置かれてた。

それと、
複数の階層(ディレクトリ)を設けて、ページの内容に応じてHTMLテンプレート
ファイルを管理したいのだけど、そんなわがままは許されないのでしょうか?
ひとつのディレクトリにしか置けないと、規模が大きくなったときに管理が
不便じゃない? 複数人での制作だとファイル名がダブらないようにするだけでも
大変かも知れないし。
318デフォルトの名無しさん
垢版 |
NGNG
なんでTapestryを使うの?

ってお客さんに問われたらどう答えますか?
NGNG
JSP拡張で効率化できますよ〜
とでも逝っておけ
NGNG
>>317
だな。
それは漏れも尻鯛w

イソアクショソ読めば、どっかに書いてありそうな希ガス。
NGNG
>>318
開発工数を削減できます。とこたえます。


でも、本当にそれを実現できるには、開発メンバー全員が
Tapestryのことを或る程度まで知っていなければならない罠。
NGNG
>>321
新しいものなんてだいたいそんなもんだ。
そこを乗り越えてなけりゃ未だにみんなアセンブラおんりーで50年前から進歩してないわけだし。

NGNG
>>321
じゃあ削減分、値引いてね♪と言われる罠w
NGNG
>>323
納期短縮をせまられたり。うぅ・・・
そうじゃない、そうじゃないんだ・・・。
NGNG
新技術を使って前より少ない工数でできました(生産性向上)

じゃあ次は値引いて、
じゃあ次は機能増やすね、
、、、


人月の弊害だよなぁ。。。
生産性向上の利益がエンジニアに配分されない。。。
スレズレスマソ
NGNG
>>307
そうなんだよ。激しく面倒。

>>308
勘弁してよ。全員が仕組み理解してないと生産性は上がんないよ。
だからできるだけシンプルに作るべきなんだ。だからEJBは絶対だめ。
自前で必要な分だけ作ったほうが絶対シンプルになる。

>>325
それは模前が選んだ組織の問題だ・・・
Javaのサーバサイド系の技術のほとんどは生産性は上がらないんだよ・・・
NGNG
定期的に湧くアンチがいるな

フレームワークがなかったらあとで修正したりするの大変じゃないか?
みんな好き勝手にdoGetとかでガリガリ書いたりするのか?
開発者が1人2人くらいならともかく100人超える規模とかでそれやられたらたまらんな

初期の開発だけじゃなくて運用後の修正のコストなどもトータルで考えるべきだろう

もちろんEJBが必要な案件もあれば必要がないものだってあるさ
そのへんをかまわずにとにかくJ2EE技術すべて使わなければ損とか
いいつつ開発にコストかかりすぎてjavaダメだぁとかあほなやつがいるのも事実
NGNG
小規模、短納期にJ2EEは使うなってことで
NGNG
>>327
フレームワークはそのアプリケーションに合わせたものを作ればよいということ。
その方がスマートかつシンプル。

フレームワークが必要なのは、ウェブのリクエストを処理するところだけじゃなく、
コアな部分においてアプリケーション毎にいくつか出てくるでしょ。100人だろうが
1000人だろうが好き勝手やらないのは当たり前。

フレームワーク作らなきゃいけないところをサボって、どうでもいいフレームワーク
を使おうと一所懸命な感じがしてる。サーバサイドアプリケーションの作り方
ってのをもう一度ゼロベースから考え直してみたらどうだろうか。
NGNG
もちろん俺の仕事はちゃんと規模にあわせて選択、自作してるさ

あほな連中がそういうことやらないで(というか新しいこと勉強してない連中は
フレームワークという単語を知らないらしい)みんなガリガリやるのに慣れているとか
そういうことらしい

まぁ、チームとか会社とか場所によって面白いほど考え方が様々で
そのへん整備されてないところに回されると大変だぞ、と

んでこのスレらしい話に戻すとwebはなんでもあわないのにstrutsそのままとか
そういう話もかなり多い(雑誌で単語を目にしたしったか上司が多い)ので
Tapestryもがんばって欲しいなと
NGNG
>>329
最初にまず、すでにあるもので簡単にできるなら利用しないのは損、ってことだろ。
その上でいいものを探して、選択する。

ただ、通常、どのフレームワークでも、いろいろなケースに対応するために、
すごく複雑な設定まで出来るようになってる。
それを切り落として、自分が利用するケースで必要十分なところまで絞り込んで、
ここまで出来れば十分、というところまで絞り込めばいい、ということ。
本当に基本的なところだけなら、実はどのフレームワークも意外に簡単。
作るべきものも定型化しやすいものがおおい。

って、正直Tapestryが本当にいいかどうかはまだ分からないし、
Strutsにはだいぶ苦労させられた口だが。

まあ、そうは言っても、StrutsやTapestryなどのフレームワークを使わないのは損だ、
という認識に変わりはない。自分で作ろうと思うと、以外に大変な割りに、
結局どれかの既存のフレームワークに似たようなつくりになること多いし。

覚えるのが面倒だからという理由なら、ドキュメントが出るのをまってもいいし、
なんなら、コンサルでもいれなよ。一度、カタにはまった開発、ってのをやってみれば、
楽なのが分かる。面白いかどうかは別にしてね。
NGNG
>>331
長いしわかりずらいよ、文章が
NGNG
>>331
コンサルって奴は一般的に何をしてくれるものなんですか?
フレームワークの使い方を教えてくれるの?
NGNG
>>321-325

あとは、『保守作業がえらく簡単になりますぜ旦那』くらいかな。
Strutsは、開発はJSPガリガリ君より簡単になったけど、
保守はむしろ煩雑化した記憶しかない。。。
NGNG
>>334
でも「Tapestry知ってる人」をアサインするのが大変なような・・・
NGNG
>>334
JavaScriptをスクリプトレットで制御するようなJSPを書かれる心配が無くなるぶん
Tapestryには導入メリットがありますね。
 
なんてな・・・
337301
垢版 |
NGNG
317の件はやっぱり無理?
NGNG
>>337
ドキュメントが少ない&
その少ないドキュメントを読みきった香具師が少ないので、

「可能か無理か判断する」のが無理な状態。
339デフォルトの名無しさん
垢版 |
NGNG
>>333 少なくとも型にはまった開発、っていうのは見られるかな。
NGNG
おまいらスピソjがRC1になりますたよ。

Redirect Filter も扱えるようになりましたよ。
341デフォルトの名無しさん
垢版 |
NGNG
age
342デフォルトの名無しさん
垢版 |
NGNG
>>338
同じ事悩んでるヤシがいたか。漏れもかなり探したよ。で、出来た。

WEB-INF/config/Home.page
/comp/ShowProducts.jwc
/contents/Home.html
/comp/ShowProducts.html
みたいなとき、

.applicationに、
<page name="Home" specification-path="config/Home.page"/>
とか
<component-type type="ShowProducts" specification-path="config/comp/ShowProducts.jwc"/>
みたいに書く。

.pageや.jwcには、
<context-asset name="$template" path="WEB-INF/contents/Home.html">
という風に書く。

さらに、templateのデフォルトのsearch pathも変えられるらしいが、
まだ、試してない。317やってみてくれ。
http://www.caddr.com/macho/archives/tapestry-users/2003-12/2948.html
343317
垢版 |
NGNG
>>342
ナイス。時間ができたら試してみます。
344デフォルトの名無しさん
垢版 |
NGNG
>>317
なんだよ、そっちかよ
標準Documentに乗ってるじゃねーか
TemplateSourceDelegateを使ってsearch pathを変更することを期待してるのかと思って
必死でサンプル作って試していたのがショック!!!(T_T)
NGNG
>>344
既知のTipsだとしても、それを情報として知るのと、
自ら試してみるのとでは理解度がまったく違うと思うよ。
決して無駄骨ではないと思われ。
その心意気に、敢えてGJ!!
346342
垢版 |
NGNG
>>344
それ、教えて欲しい。
サンプル公開きぼんぬ
NGNG
>>344
オラも見てみたいズラ。
NGNG
おれはどっちでもいーや
NGNG
見せてもらえるものは見せてもらった方がいいわね、アータ。
350デフォルトの名無しさん
垢版 |
NGNG
3.0リリースから、もう一ヶ月たつのに、一向に盛り上がってこないなあ。

やってるー? みんなー?
351デフォルトの名無しさん
垢版 |
NGNG
つうかFlashMXにはまってるからもういいや
NGNG
>>350
一応MLが立ち上がっているみたいだけど、
2週間でレス2通(ML開設者の挨拶等)、参加者13人、技術的な
質問0。既に廃墟だね…。

ttp://www.freeml.com/ctrl/html/MLInfoForm/tapestry-japan@freeml.com

NGNG
所詮、ニッチなわけで
NGNG
悪くないと思ったんだが、だめかなー。

Strutsより現実的でいいと思うんだがなー。
355デフォルトの名無しさん
垢版 |
NGNG
>>352
場の空気の読めない人が2番目のTapestryのML立ち上げてんだよね
"leader19731221" <s.owada@athens-net.com>
YahooのTapestryのMLに
--------------------
FreeMLにてTapestry-Japan MLを開設しました。

以下のURLにて閲覧、投稿ができますので、是非とも参加下さい。
http://www.freeml.com/info/tapestry-japan@freeml.com
--------------------
何なのこの人?
356デフォルトの名無しさん
垢版 |
NGNG
>>342
できたよ
決定事項
●テンプレート置き場:アプリケーションコンテキストの下の/sample/hoge/
●作成するDelegateクラス名:test.SampleTemplateSourceDelegate

手順
●1.TemplateSourceDelegateの登録
sample.applicationに
<extension name="org.apache.tapestry.template-source-delegate" class="test.SampleTemplateSourceDelegate"/>
を追加
●2.SampleTemplateSourceDelegate.javaにDefaultTemplateSourceのソースをコピー
 2.1 クラス名をDefaultTemplateSourceからSampleTemplateSourceDelegate書き換え
 2.2 インターフェースにITemplateSourceDelegateを追加
 2.3 LOGの引数を「DefaultTemplateSource.class」から「SampleTemplateSourceDelegate.class」に書き換え 2.4 以下のfindTemplateメソッドを追加
●3.テンプレートを書いておしまい
 /WEB-INF/Home.page
 /sample/hoge/Home.html
357デフォルトの名無しさん
垢版 |
NGNG
public class SampleTemplateSourceDelegate implements ITemplateSourceDelegate,ITemplateSource {
    public static final String SAMPLETEMPLATEDIRECTORY="sample/hoge/";
    private IResourceLocation _sampleResourceLocation;
    public ComponentTemplate findTemplate(
        IRequestCycle cycle,
        IComponent component,
        Locale locale)
    {
        IResourceLocation location=component.getSpecification().getSpecificationLocation();
        String name = location.getName();
        int dotx = name.lastIndexOf('.');
        String templateBaseName = name.substring(0, dotx + 1) + getTemplateExtension(component);
        LOG.debug("component="+templateBaseName);
        
        if (_sampleResourceLocation == null){
            IResourceLocation _applicationRootLocation = Tapestry.getApplicationRootLocation(cycle);
            _sampleResourceLocation=_applicationRootLocation.getRelativeLocation(SAMPLETEMPLATEDIRECTORY);
        }
        
        IResourceLocation baseLocation =
            _sampleResourceLocation.getRelativeLocation(templateBaseName);
        IResourceLocation localizedLocation = baseLocation.getLocalization(locale);

        LOG.debug("location="+localizedLocation);
        if (localizedLocation == null)
            return null;
            
        return getOrParseTemplate(cycle, localizedLocation, component);
    }
-------------------------------
358デフォルトの名無しさん
垢版 |
NGNG
public class SampleTemplateSourceDelegate implements ITemplateSourceDelegate,ITemplateSource {
    public static final String SAMPLETEMPLATEDIRECTORY="sample/hoge/";
    private IResourceLocation _sampleResourceLocation;
    public ComponentTemplate findTemplate(
        IRequestCycle cycle,
        IComponent component,
        Locale locale)
    {
        IResourceLocation location=component.getSpecification().getSpecificationLocation();
        String name = location.getName();
        int dotx = name.lastIndexOf('.');
        String templateBaseName = name.substring(0, dotx + 1) + getTemplateExtension(component);
        LOG.debug("component="+templateBaseName);
        
        if (_sampleResourceLocation == null){
            IResourceLocation _applicationRootLocation = Tapestry.getApplicationRootLocation(cycle);
            _sampleResourceLocation=_applicationRootLocation.getRelativeLocation(SAMPLETEMPLATEDIRECTORY);
        }
        
        IResourceLocation baseLocation =
            _sampleResourceLocation.getRelativeLocation(templateBaseName);
        IResourceLocation localizedLocation = baseLocation.getLocalization(locale);

        LOG.debug("location="+localizedLocation);
        if (localizedLocation == null)
            return null;
            
        return getOrParseTemplate(cycle, localizedLocation, component);
    }
-------------------------------
359デフォルトの名無しさん
垢版 |
NGNG
このサンプルはコンポーネントのテンプレートにも使えるよ(^o^)v
/WEB-INF/Hoge.jwc
/sample/hoge/Hoge.html
360デフォルトの名無しさん
垢版 |
NGNG
age
NGNG
日本語ドキュメント整備されればとびつくけどな
362デフォルトの名無しさん
垢版 |
NGNG
このスレも50毎に>>361の結論が出て、その繰り返しで1000行きそうだな。
NGNG
>>354
Strutsから乗り換える教育投資に見合うメリットがあるのか?

おれは、ないと思うんだが。
NGNG
乗り換えるんじゃなくて方向がまったく違う

でも結局>>361
NGNG
>>363
乗り換えるなら、JSPから。
366342
垢版 |
NGNG
>>356
おー、すげぇ。
明日にでも、さっそく試してみるよ。

しかし、こういうの書かなくてもサクサクっと設定出来ないと
普及は厳しいかなぁ、という気がしないでもないなぁ。
NGNG
>>363
Strutsをメンバーの過半数が、機能をフルに使いこなせていたら、
意味は無いだろうね。

Strutsを使っているのになぜかJSPにスクリプトレットを
多用しているようなところだったら、まだ、ある。






でも結局>>361
NGNG
今やってる仕事、strutsなんだけど、ご多分に漏れず、
struts-config.xmlが肥大化。
DynaActionBeanの設定とか、もういやすぎ。
例の分割管理とかそういう対策はアフォみたいだし。。。鬱。
タペットマペット使いたいYO!!
369デフォルトの名無しさん
垢版 |
NGNG
オブジェクト指向の分散管理思想に真っ向から反するStrutsの設定ファイル。
フレームワークが滅びるには十分な理由だ。
370デフォルトの名無しさん
垢版 |
NGNG
同じようなやり方で、ISpecificationResolverを実装する方法もあるよ
こちらの場合.page,.jwcと.htmlは同じフォルダに置ける
NGNG
>>368
XDoclet使えば?
Strutsコンフィグファイルなんてほとんどさわらなくなった。
NGNG
>>369
すでにXDocletのようなものもあるし、J2SE1.5からはメタデータという仕組みも組み込まれて同様のフレームワークの設定がやりやすくなるから、いまとなってはあまり問題ないね。
NGNG
ListEditコンポーネント(とKistEditMapクラス)を使って、
Stale Link状態を事前に検出できるようになる仕組みが、

  Java Doc API を読んでも
  Component Reference を読んでも
  Tapestry In Action を読んでも

なぜだかサパーリわからません。
そんな俺はおhる?
374デフォルトの名無しさん
垢版 |
NGNG
age
NGNG
作者が「テスト助けてくれ〜」と悲鳴ageてるわけだが。
NGNG
名前は結構好きだな。
NGNG
Tapestryはなぜ流行らないのか

ttp://www.fuka.info.waseda.ac.jp/~k_ogino/study/fwzemi/b4/k_ogino040430.ppt
ttp://www.fuka.info.waseda.ac.jp/~k_ogino/study/fwzemi/b4/k_ogino040430resume.pdf
378デフォルトの名無しさん
垢版 |
NGNG
>>377

>>361
NGNG
>>361
NGNG
>>377
企業での開発経験がない、学生だとあんなもんだろ。

NGNG
わたしの現場では派遣先が開発した独自フレームワークしか流行っていない
作るのいいけどさ、もっとマシなの作ってよ
なんかソース見てると一部のクラスは「ほ〜」という感じでかなりレベル高いのに
のこりのほとんどのクラスは「ヘンなやり方〜」ってかんじ
内緒でインナークラス使って自分達のわかりやすいやり方(てか普通のJavaのやり方)に変えてます

NGNG
Tapestry
383デフォルトの名無しさん
垢版 |
NGNG
Tagestry
NGNG
T
NGNG
Tanasinn
NGNG
tapestory
387デフォルトの名無しさん
垢版 |
NGNG
>>377

ナイスだなー
だいたい、高度なアプリケーションにデザイナーがDreamweaver使いたいからという
だらけた理由でプログラマが苦労すること無いんだよ
ページのデザインくらいプログラマだってできるだろ

よって、Tapestryは存在価値なし
NGNG
>>387
ページのデザインってデザイナが(ユーザーの要望により)ちょくちょく変えるもんだから
そのたびにhtmlいじったりjsp化は非現実的

struts使うのならたとえばJBuilderについてるstrutsコンバータとか使わないと大変

現場知らないお子さまはカエレ
NGNG
Spindleってそんなにええのんか?

しかし、ブツを落とさないと稼動前提条件とかインストールの仕方がわからんのは
致命的。はやらす気はなさそう。
NGNG
>>387
Dreamweaverの生産性は異常
だらけた理由とかいって、おまえ、
あ、ごめん、DQNデザイナーを起用してる、DQNプロジェクトの話でしたかpgr
NGNG
ただいま、>>387は顔を真っ赤にしてDreamweaverの体験版を落としております
NGNG
>>390
単なるHTMLエディタだろ?
何がそんなにいいのん?
NGNG
>>392

387?

まずは体験版おとしてやってみろ
Tomcat連携機能とか検証機能とかスタイルシートまわりとかいろいろありすぎてな
NGNG
>>392
カスタムタグなんかにも対応してたりもする
NGNG
>>394
それじゃ、Tapestryいらないじゃん。
NGNG
>>395
実際にやってみろ
カスタムタグはあくまでも解釈されない程度だ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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