CodeZineのITemplateの宣伝

artonさんの所の方が宣伝がしっかりしている、というのもあれなので(^^;
ちょっとここまでのまとめをしてみます。

粗筋
ASP.NET上で開発する人はどうも基礎力に欠ける傾向にあります。
例えばDIとかデメテルとかDIPとか、Javaの世界では常識な物をちゃんと理解していなかったります。

JavaのPoEAAやExpert One on One系に該当する本は無いかな?というのが始まりです。
この時点で書いてある事、ITemplateに押し出せとかPageからControlへのリファクタリングとかITemplateのfakeなどはまだこの世に存在しない話題ですかね。
ここでITemplateの名前を出したのは、MVCやフロントコントローラなんかの話に対する牽制のつもりでした。
それではASP.NETじゃないでしょう?と。

それに対してartonさんから、patterns and practiceを読んどけという返答が。
もちろんこれはITemplateなんて出てこない訳なので、少しずらしてDataBinder.Evalの無いASP.NETなんてと答えてみました。
DataBinder.Evalはここまで話した後考えれば明らかですがITemplateを別の角度から言ってみた訳です。そこでEventを持ち出しているのはデータ連結式の内部実装が頭にあります。
この時点でそこまで気づいた人は何人いましたかね?(そもそも読者がいなかったけれど)

そんな風に裏ではITemplateの話をしつつ表では一切その仕組みについて解説をしない、というスタイルで話を楽しんでいた所、MSはふにゃふにゃで手当たり次第そこらじゅうに巻きついては狭い隙間にまで入り込んでいく豆の木の世界だという話に。

これが私が裏に持ってたWebControlの話と、うまく合致していました。
ITemplateはようするにWebControlを中心に見た時のMVCのVの部分です。
WebControlを中心と見るというのは上記の記述の裏にあると思われるコンポーネント指向という事です。
裏に何を隠していようと一歩引いた洞察を持っている相手にはかなわんなぁ、と思った訳です。

ではこちらも思想で語るか、と3部作くらいで話をしようと思いました。
相手を巻き込んでやりとりを引き出しつつ話を作ろうとしました
一部目の反応は割と鋭く、しかも予想の方向だったのでプレゼンテーションとDataBindという方向に誘導しようと二部目を書いていたら、先にコンテナというエントリを向こうがアップされました。
これが最終的に私が書きたかった事よりもよっぽど本質的でした。ここで白旗。うむ、かなわんですね。
書きかけの2部を消すか悩んだのですが、せっかく書いたからアップしました
このICallbackEventReferenceは本当はICallbackEventHandlerですね。誤植です。
AtlasとIndigoとRailsとICallbackEventHandlerとWebControlを理解していれば見るべき所もある内容ですが、やっぱり比較してしまうと、ぐでぐで。

さて、私の当初の考えは浅知恵で、あまりにもうまく行きませんでした。

それでも、向こうの出した結論は美しく、この議論には意味があったように私には思えました。
美しいのだけれども、ちょっとこのやりとりは、それなりに知ってる人じゃないと追えない。
OLEがインプレースなアクティベーションだった時代から複合ドキュメント、COMと追ってる人ならどうって事無いのかもしれませんが、私はそういう人じゃありません。
逆にここまでの私側には全てITemplateという名詞が入っています(DataBinder.Evalも同じとみなします)。
そういう組み立てで話したからなのですが、これさえ表に出せば私側は割と簡単に理解出来ます。
どうせなら裏も出して他の人にも理解出来る形にしよう、と思いました。

そこでITemplateの解説を探したら、無かった
しょんぼりしてたらartonさんが言語明瞭意味不明瞭とか本来は内部構造とかいい始める。
ち、違う!ITemplateは全てのDataBindを使うコントロールで使われている汎用の仕組みだっ!RepeaterもDataGridもDataBond系Controlも全てこれを前提としているんだっ!これを本来は内部構造というならIUnknownは内部構造だ、IDispatchだけで十分だというような物だっ!という事が言いたくなる。
日本語の方も実際分からない人にとっては意味不明なのだけれど、全部理解した人が読むとこの日本文は正しい。

「このインターフェイスは、カスタム サーバー コントロールによって使用されますが、実装されることはありません。」==DIされます。それを使って下さい。

「ASP.NET は、常にこのインターフェイスを実装します。」== ASP.NETがcontrolを作ってDIします。だから貴方は作りません。

という訳で、分からない人向けの説明として及第点で無いのは明らかですが、不正な例外が発生するのとはちょっと違う。(でも「ASP.NETだろう、という気はしますが)

そんな事が言いたくてはじめたのがITemplate三部作です。

  1. データ連結式編
  2. ITemplate編
  3. TemplateContainer編
    1. おまけ:思想編

書いてみたら長かった。

しかもデータ連結式編を最後まで読んだ人はいなかった。
しかもこのページはあまりにもgoogleで検索不能だった。悲しかった。
しかもデータ連結式編以外もほとんどの人が長すぎて読んでない、というフィードバックだった。悲しかった。

読んで理解した人からのウケは大変良かったので、ネタ自体のチョイスは良かったのだな、と思いました。
でもほとんどの人は読んでくれませんでした。

そんな訳で2と3を1に依存せず書き直して、1の内容が必要な所はもう少し簡単にまとめてみたい、と思うようになりました。
読んでもらうには内容側の話もありますが、このblogはあまりにも辺境です。
もう少しgoogleリーチャブルな所に置いた方が、読み手も多いと思います。

そう思ってCodeZineに書いてみたのがITemplate前編です。
中身は技術的に必要なコードは全て含んでいて、検索の為に必要なキーワードも全て含めて、それ以外はなるべく短くなるようにしました。
難しい部分を解説しないのではなく、難しい部分だけを解説するような内容にしたつもりです。

まとめてみると長かったですね~
自分で言うのもなんですが、結構良いやりとりだったと思います。

カテゴリー: ASP.NET パーマリンク

コメントを残す