テンプレートエンジンの独り言

なんか、とても疲れた。俺は駄目駄目よと。どうも、携帯Javaアプリ作ってたせいで、無駄にクラス増やしたくない病になってる。特に、Exceptionクラスを継承したクラスなんてサイズを大きくするだけだと思っちゃってるんだよなぁ。
でも、そんなんじゃいかん。特にオンライントークRPGの企画をスクエアに持ち込もうとして失敗した後だし、ウェブアプリケーションフレームワーク作りも何度も失敗してるし、誰からも見放されてしまう。根気が続かないでポシャるのはもう沢山!アイディアはいいはずだから、絶対完成してやるぞ!!!もう、D言語の人たちは飽きっぽいなんて言わせないぞ!!!と、思うのでありました。
クソゥ!!アイディアは沢山あるんだ。スパイラル的に技術も身に付けてきたんだ。再就職する前に、いいソフトを作れるっていう自信を付けなきゃ!!!何のために仕事休んでたのかわからなくなる。このフレームワークは、WebObjectsTapestryのよさを継承しつつ、より良いものを作ってるんだぞ!ストリーミングもしちゃうんだぞ。fiberとかの途中で処理中断して、また再開とかもしてるんだぞ。しかも只だぞ。分かりやすく作るんだぞ!絶対完成させるぞ!仕様書が書けたらいいのに時間が無くてかけなくてデザイナとプログラマが対立して嫌な思いをした悔しさを晴らすには完成させなくてはならないんだ。クソ!もう沢山なんだ。わけのわからないタグを埋め込んでは失敗し、試行錯誤するのは。だけど、HTMLは自分で思ったとおりに吐き出したいんだ。空白一つ変って欲しくは無いんだ。それでデザインがくずれるかもしれないんだ。ウオ−!ASP.NETなんて全然駄目なんだウォー!VBに戻るだけで面白くも何とも無いんだ!負けてたまるかぁ!!只の売れないプログラマーから脱してやるぅぅぅぅぅ!!一生このままなんてイヤダァぁあぁあ!!
明日からまた、着実に開発つづけよう。
まずは、セッション機能だったな。とりあえず、リンクに文字列埋め込むところまで作った。

  • URLエンコードしてないので、エンコードして埋め込む。
  • セッション情報をファイルに書き出す仕組みと、読み込む仕組みをつくる。とりあえず、xmlバイナリに入れておこう。
  • セッションを使って、ページ仕様エディタのぱんくずリストを動的に生成していけるようにしよう。
  • エディット終了後、ぱんくズリストでもう一度編集画面に戻っても大丈夫なようにしよう。
  • ページ仕様エディタの入力文字列チェックをしっかりしよう。
  • ページ仕様エディタ本体の機能をちゃんとしたものにしよう。
  • 無意味かもしれないけど、そこまで作ったらUPしよう。
  • 変更点も書こう。サンプルURLも公開しよう。
  • アクセスログとクリック履歴とりたいけど後だ。
  • ロスコンパイラのfreebsd版最新gdcをビルドしよう。これは後だな。とりあえず、無いものを作るのを優先しよう。
  • xreaのクロスコンパイラも再挑戦しよう。これも後だな。
  • テンプレートからページ仕様を生成する機能を作ろう。
  • プログラム出力から動的にページ仕様が生成されていく仕組みを考えよう。ある条件下でプログラムを実行した場合は、ページ仕様にあっているかをチェックせずに、ページ仕様になかったら追加するしくみだ。あぁ、頭がこんがらがる。考えたくない。でも、できればいいんだ。無駄にエディタで仕様書くのは嫌だ。ここらへんよくわからない。XP的な開発手法に則りつつ、仕様は常にきちんと存在させておきたいんだよなぁ。無駄な手間かけずに。もう一度、webobjectstapestryを研究する?か、自分で考えるか。自分で考えよう。まねだけしても駄目だ。なんか違かったんだ。そうだ、webobjectsは最初に仕様を決めてそこからドラッグ&ドロップして名前を決めてた。だけど、プログラマ的には、テンプレートとプログラムだけみて弄繰り回しながらかんがえたいんだ。そうしてきたんだ。だけど、その開発効率をあげたいんだ。そのために、プログラムだけかけば、テンプレートがじどうせいせいされるとうれしいんだ。そのあと、テンプレートに修正を加えていきたい。で、もう一度プログラムを直すと、テンプレートに項目が足りないので、自動的にとりあえず、タグが予想位置に埋め込まれる。それを、見てテンプレートを直すと言った感じが出来ないか、実際に作ってためしてみたかったんだ。でもきっとうまい位置に設定されないだろうし、型が指定されてないから、自分の思い通りのタグを埋め込むには結局テンプレートファイルをいじらなきゃだめだよ。ってなる気がする。何ィ。ってことは、プログラマは、テンプレートの簡素なイメージファイルと、プログラムをソースからいじりたいのか?いやまて、そのとき仕様を書き換えてから、仕様から、ドラッグ&ドロップでテンプレートに埋め込めたら良いんじゃないか?作業の流れはそんなに変るまい。問題は、仕様からドラッグ&ドロップで埋め込みタグを埋め込めるツールを作るのが大変というか、どうしようってことに行き着く。htcだかhtaか、IEコンポーネントいじるか、XULを使うか?htmlエディタでいいソリューションを探すか?WebObjectsがいいけど、あれは、タグが<WEBOBJECTS>になるから、他のツールでいじりにくそうで嫌だ。ってことだ。フリーじゃないし。フリーでタグが普通のhtmlのもので、D言語webobjectsなのか。作りたいのは。いやもっと良いもの。じゃあそのアイディアはあるのか?それは、今書いてた内容のもののどこかにある。うぇえ、何処が分岐点だかこの文章よんだだけじゃわからないぞ。構造化したほうがいいね。でも、面倒だよ。ちょっと読み直せばいいだけじゃないか。そうだな。プログラム出力からのテンプレートファイル自動埋め込みか。プログラム出力で、タイプを設定できるよな。とりあえず設定するってぇとテンプレート自体かわるってのはどうだろう。どっちにしても、場所だけは指定してやらなきゃいけないけど。その名前で検索してやればすぐ見つかるだろうし、そこコピってちゃんとしたとこに移動して、後でプログラムからタイプ出力やめればいいきもするなぁ。セレクトとか設定してやって、コメントと値は、カンマ区切りで入れてやると。テンプレートが勝手にできてくると。こめんと,value,こめんと,valueってのをコメントとして出力して、値はその中のうちの選択項目が1つなら1つ二つなら2つのカンマ区切りをせっていしてやってはどうか?いいかな。分からんな.とにかくそのへんのサイクルを一番速くできるように試行錯誤してみるひつようがある。結果的にWebObjectsの方式がいいのかどうかはわからないけど。asp.netvbとおなじだから、webobjectsのほうが勝ってるんだからいいんじゃないかな。とにかく、ここが一番の肝だな。悩んで試行錯誤して一番良い解が得られるんじゃないかと思う。なんていうか、パターンがあるようなきがするなぁ。パターンにあわせた元ファイル用意しておくと速いかもナァ。もうひとつ、デザイナの視点があることをお忘れなく。うむ。そう、企画書からつくるんだよなぁ。この画面はどうしようかみたいなのは。で、大体は決まったパターンのテンプレートに変換できる。変にこってると悩むかんじだな。ツリー表示とか、画像を横に5個までならべられて、6個目は次の段に入るとか。それって、xsltで凄く悩んで出来ないことはないってやつで、今のテンプレートで実現するにはプログラムが対応したデータをはかないといけない。5個がデザインの関係で6個になったらプログラムもかきかえなきゃいけない。それはしかたないことなのかな?プログラマだったら、すぐ直せるんだからいいんじゃないかな。うーん。テンプレートからプログラムに値を引き渡せれば良いのかな。そういう構文を用意すれば良いのか。なるほど。ツリーの場合はどうだろう。横にずらす方法がいろいろあるとおもうけど。テーブル使ったり。スペーサー入れて実現したり。そういう時って、いろいろいじりまわして、プログラマーが仕様決めるから、ページの仕様なんて邪魔になるんだよなきっと。デザイナはデザイナで好きにツリー構造を出力するHTMLデザインするだろうしなぁ。想定したプログラムではそのデザインに対応できないとかあるな。全部テーブル1つで対応とかしてたら、テーブル組むプログラムかかなきゃいけなくなるし。こういう場合は後付けで仕様書作れるといいんだな。場合によると。てことは、場合によって作成順序が異なるけど最終的に全部そろえられなきゃいけないので、相互に生成できないといかんのだな。で、デザイナの作った仕様とプログラマの作った仕様、突き合わせてdiff取ったり出来るといいのかな。うーん。仕様ってそのまんま簡単なhtmlのほうがいい気がしてきた。必要最小限のhtml。それが仕様だ。あとは、それをパースして仕様書と表とかにして、みるだけっつうのはいいんじゃないかな。しかし、テーブルのcolspanやらrowspanやらを書き換えるプログラムでテンプレートなんて用意できるのかな?想像がつかないな。テンプレートが用意できたとして、そこからテーブルがすっきりした状態で1つだけ使っている仕様htmlを自動で作れるとは思わない。テーブルはすっきりさっぱりなくなってしまうだろう。仕様にコメント書いとくとかするしかないな。ああ、わかんない。それでもどうにか形をつくらなきゃいけない。答えは混沌の中にある。