|
|
||
2004-12-01 [Wednesday] 晴れ■[other]-失敗とはSeasarとKijimunaは失敗です。が、失敗ではない。まだ手仕舞いしてないから。ただ、うまくないことも多いので少なくとも次世代のSeasar3&Kijimuna3ではすべての成功と失敗を踏まえたうえで、イメージングの限りを尽くした上で作りたいなと。すくなくともEJB3の仕様がでる4月以降ですから、おそらく半年近く後のことです。Seasar3&Kijimuna3がどんな機能で、利用するとどんなことができるか想像できますか?まだ作ってないから、それらは最強です。想像しうる限りの最上のソフトウェアなのです。それも、一人が想像するのではなく、たくさんの人でイメージを共有しながら計画をすればいいものできると思います。実装力はあるからね〜。リアルに細部まで考えられたら、あとは作るだけ。アジャイルとかウォーターフォールとかって、その後のHowtoの話ですよ。まず自分が何をやりたいのかもわかってなきゃしょうがないと思います。 なんか宗教がかってきましたが。徹底的にリアルにイメージすると、自然にできちゃうのです。ソフトウェアって。それが言いたかった。ということで、みなさんも今日から考えてみてください、半年間。毎日、毎日、Seasar3とKijimuna3のことを。私は今、毎日MayaとNPOのことを考えています。 実はこの考え方もどうなのか、ディスカッションすべき話題なんですけどね。私の前提ではあっても、みなさんの前提とか限らないですから。 ■[maya]-S2JSF組み込み版Maya(2)みました。SourceForgeにはまだあがってないのかな?メールで送ってもらったものみたのですが、サンプル実行してみたところ、やはりAタグが追い越されてうまく動作してないので、サンプルとして意図された動作をおえてないです。しかし、実装については、TLDのロードやテンプレのパースなど、計画している動きが結構の割合で実装されています。きちんと動くものができるものも近いでしょう。 でもね、申し訳ないけどこれはMayaじゃないです。表面の仕様は追ってるけど、つくりの根幹のところで私の持ってた問題意識はとらえていないし、わざわざ時間かけて実装を先延ばしにしても仕様をオープンにして練ってきた意味を反映したものではないです。困ったなぁ、実装量が圧倒的なのともうちょいで動くところまで来ているんで惜しいのですが。理由を以下に述べます。
とりあえず、ひがさんのこの実装系、Mayaの名前をはずしてもらえませんか?ちょっとコードネームとしては私には思いいれがある名前なのです(だって娘の名前だもの、きっかけは偶然でしたが)。進め方としては、元の名前のS2Pagesとして実装すすめてもらって、きちんとリリースしてください。後に、ひがさんも本を書いたり、S3をつくったりしないといけないですからS2PagesおよびS2JSFから手が離れるでしょう?ぼちぼちに平行で、手をあげてくれているまるおさんとすがさんと私のほか、意欲ある方をつのったうえ、S2Pagesの成果をしっかり再利用して根幹からMayaとして再構築していくというのではいかがでしょうか? あとは、SeasarもKijimunaも失敗プロジェクトなんだってこと、指摘させてください。実装に突っ走ったために誰も他の人がメンテナンスできない・やりたいとおもわない。Mayaはそうしたくないのが、迂遠ながら一番初めにドキュメントを書いているということです。試行錯誤ですから、手段が正しいかはわかりませんけど。 最後に、それなら何時になるかわからない、と思われる方が多くいらっしゃるかもしれません。けど、ひがさん一人で2週間ぐらい?でそれっぽいものできちゃうわけですよ。実装は特別時間がかかることではないです。ソフトウェアを作るうえで一番時間がかかるのはイメージングだと私は思います。何をどう作るか、ネクストステップでどう発展させるか、誰にやらせるか、どう見せるか。予算はどうするか。すべてにおいてイメージングできるまで頭をつかいます。手はあと。営業も会社経営も全部いっしょ。イメージングを練る時間と手間を惜しむと、かえって時間はかかる、金はかかる、質は落ちる。NPO組織もそうだし、子供だってそうでしょう。どう育ってほしいかを夢にみるぐらい念じるわけです。 ■[maya]-式言語まとめとにかく時間かかったのは、JSPやJSFのELのインターフェイスがよく理解できなかったためです。いろいろ考察してやっとわかった(と思う)。
Sunの実装より、OGNL3は相当先の実装だと思います。ELの仕組みだとKijimunaでのRTTIサポートでやったような作りは難しいんじゃないかなと思います。JSP2.1でやっと追いつくんじゃないかな。ただ、バックワードコンパチに囚われるのと、JSP&JSFの2系列の式言語の統合は結構ヘビーでしょう。 ■[maya]-S2JSF組み込み版Maya(1)ひがさんのほうでS2JSF組み込みでMayaServletを開発中とのことです。コメントの雰囲気から何かやってるなとは思いましたが、実装はいってましたか。仕様を煮詰めつつ、ひがさんの実装を取り込んでいきましょう。ひがさんにはくーす本かいてもらわないといけないしね。私のほうはカスタムタグインジェクション機構でコードジェネレーションハンドラ(仮称)でアダプタブルにカスタマイズできるようにする仕組みを、式言語ホストの仕様を考えたみたいに考えます。 禁をみずからやぶってしまいましたが、インターフェイスを軽く組むだけでも実装すると細かな点がぼろぼろでてくるんですよね。コード実装&メンテを属人にしないために戒めていたのですが。。。私のほうは本格実装参加は後々です。仕様案つくったら次はNPOやらないといけないし。 ■[maya]-式言語ホスト周辺の実装ドキュメントを書いていて、説明が難しいので、サンプル実装を作りました。先の考察を踏まえているものです。 http://package.gluegent.com/~kurihara/maya/MayaELImplSample20041201.zip 軽く組んでありますのでコンパイルは一応通してありますが、当然動きません。パッケージなども特にこだわってつけてるものではなく、直感的につくってます。 これらを柔軟にやるためのアイディアを出しました。この方向でよければ、あとはハードコーディングしているカスタマイズポイントを設定に適宜出したりするなどして煮詰めていくつもりです。いきなり「ソース読め」で申し訳ないですが、ご意見いただけましたら幸いです。 ■[maya]-式言語のカスタマイズ仕様の考察JSFのValueBinding、MethodBinding、VariableResolver、PropertyResolverは登場人物としてJSR245にも出てくるという前提のもと、それらがどうなるかを考察します。
一番はじめの、「Property Resolver API」はおそらくOGNLのPropertyAccessorの機能だと思います。今でもPropertyResolverのメソッドは、getValue(Object, Object)で、一番目の引数がベースのBean、二番目の引数がプロパティ名です。型はObjectですが、内部でtoString()して名前に変換しているので、事実上Stringです。これをValueBinding(バックワードコンパチを考えて、JSPのExpressionEvaluator)に、addPropertyResolver(Class, PropertyResolver)とするのでしょう。デフォルトでObject.classに汎用のまともにプロパティを見に行くPropertyResolverをセットしておけば、バックワードコンパチもOKです。そうであれば、Mayaの対応ではJSP2.1のスペックがでるまで独自に軽量にやっておいてもよい機能です。ここはSeasarとの連携とかで必要になる機能なので、何らかの機能がいることはいります。 二番目および三番目のVariable ResolverとProperty Resolverのアプリケーションおよびページごとにプラグインできる機能ですが、おそらくweb.xmlでアプリケーション全体の設定、JSPファイルには@ディレクティブを用いてプラグインするのだと思います。Mayaではその機能の有用性が見えてきたらでよいかと思います。エンジンいじる機能なので、簡便にやれるようにしなくてよいと思います。ただ、VariableResolverのカスタマイズによって組み込みオブジェクトのカスタマイズができます。このへんはファクトリーで対応したいと思います。 四番目の「Method Binding API」はJSFのMethodBindingを指して言ってるのだと思いますが、この機能もExpressionEvaluatorに盛り込んでしまっていいのではないかと思います。バックワードコンパチと新実装の効率を両立すると、ExpressionEvaluator#invoke(String, Class, Object[])かなと。Maya的にはOGNLでまずやるのでこのMethodBindingについては保留できます。 五番目の「Property Binding API」は値の参照のみならず設定ができるようにあらかじめ式言語エンジンを作りこんでおくということだと思いますが、Mayaの初期実装では不必要です。JSF1.2対応で必要になってくるものでしょう。JSF1.1ではスルーで式言語をJSFに行って、JSFでハンドルするのでMayaの中でやらず、S2JSFの中でやる内容と見ています。 最後がどう見せるのかよくわからないけど、バックワードコンパチ的には、デフォルトでエンジン評価なのでしょう。初期Mayaでは${}と#{}の式言語の囲いの違いで結果的にスイッチングできます。 ■[maya]-JSP2.1とJSF1.2JSR245およびJSR252での議論はMayaへの影響がいくらかあるものです。とりわけJSR245は式言語を名指しで変更すると予告しているものですから、吟味しました。昨日の移動中に整理したのは以下のとおりです。
これらから、
あくまで予想ですけど。 [コメントを書く]
トラックバック - http://d.hatena.ne.jp/masataka_k/20041201
|
まさたかアンテナ |
# higayasuo 『今のMayaの実装では、Binding関係は何もしてません。
一応、ELのVariableResolverに投げているのですが、
やり方が悪いのか、nullがかえってきます。
なにもしなくてもS2JSFがやってくれるので、
困らないのですが、Strutsと組み合わせるときには
必要になってきますね。
JSP2.1は今のJSFの仕事に踏み込んでいて、ちょっとやりすぎな気がします。』
# masataka_k 『上記の考察の結果、おっしゃるとおり踏み込まないんです。踏み込むのは、PropertyResolverの対応だけ。これをつかってSeasarとつなぎます。』
# higayasuo 『メールボックスが容量いっぱいで送信に失敗した。orz』
# masataka_k 『届きました。ありがとうございます。早速見ますね。』
# masataka_k 『混乱を恐れますが、Mayaドキュメントや今日作ったサンプル実装の横に公開しておきます?マニアな方(笑)やコミッタ候補は興味あるだろうし。。。』
# masataka_k 『おっと、SourceForgeにあがりますか。了解。』
# masataka_k 『うーん、たぶん動いてない。テンプレのままでてきちゃいます。設定の問題かな?』
# higayasuo 『コメントしておくと、
Seasar2を使うことじたいは問題あると思ってません。
プラグインのサポートについて言えば、何が必要か分からないので、やりようがないと思います。だからこそ早目に出したんだけど。
コードジェネレーションは、どうかなと正直思っています。Mayaコンポーネントを自動的にtaglibにする部分ですが。
という細かいことは実はどうでも良くて、分業することに意味があるということだと思うので、それは賛成です。
別に1人で作るつもりじゃなくてたたき台として出したわけだけどまぁいいでしょう。』
# maruo_syunsuke 『開発の仕方ですけどひがさんとまさたかさんの考え方に隔たりを感じます。
私はひがさんさえよければS3も今のままの開発法でいいのではないかと思います。』
# maruo_syunsuke 『そろそろ本格的にMayaの開発者募集しますか?
どの程度集めるのか分からなかったのでWikiにも具体的に書かずにいたのですが、大々的にやるのでしたらそれなりのキャンペーン(?)をはろうかと思います。』
# masataka_k 『>ひがさん。うん、ごめん、メールとか読んでひがさんの意図が後でわかりました。「プロトタイプ」っておっしゃってましたし。ポイントは分業で、ほかは一段落とすべき話題でした。ちょっとストレスだったのは、私とひがさんの2人でも分業できてないのにこの先たくさんでできるかなぁというところだったので。』
# habuakihiro 『トライ&エラーが、オープンでプロセスを進めていくことの真骨頂。まぁ、食い違いが出ることもあります。慌てず急いで着実に(^^) がんばろ〜!』
# masataka_k 『>まるおさん。それは不要だと思います。門戸を開いておくだけで呼び込むまではいいかと思います。開発過程でドキュメントを残したり、たとえBLOGであっても考察を書き続けていくことによって、後々参加していただく方とできるかぎりギャップが生じない努力をするのが大事だと思います。コード書いて終わりでなく、その意味や考えを残しておくこと。それが後でやるのはつらければ、先にやるというのがMayaですすめてみたいところです。後でドキュメント書くの、気分がのらないでしょう?』
# maruo_syunsuke 『了解です。最近の日記から推察するに大所帯でやるのかと思いましたので。』
# masataka_k 『最終的には所帯がおおきくなるといいですね。』