青山です。

On Sun, May 12, 2002 at 11:12:35AM +0900,
 TN wrote:

>  にょにょると申します。(ここハンドル投稿ダメなのでしょうか?ダメなら本
> 名名乗ります)

ハンドルで大丈夫ですよ。

> 僕はよいと思います。なぜこうなってなかったのかと思うほどです^^;。
> HMTLを生成するという責務を、CGIが負うのはヘンだなとは思ってました。

これは HTML の生成も CGI プログラミングの一部という見方もある、という
感じでしょうか。

しかし、そういうポリシーによってそうなった、という物ではなく、単に、諸
事情により、すでに実績のある Perl のライブラリに相当するライブラリが求
められたから、というのが理由です。

> ところでセッション管理はどのようになるのでしょうか?
> >cgi.out(html)    # あるいは cgi.out(html.to_s)
> のところで何かしていることはわかるのですが、cookieが使えない場合はどのよ
> うな実装になるのでしょうか?この場合、formからhiddenフィールドかなにかで
> セッションIDを送信する必要があると思うのですが、もしcgi.out(html.to_s)と
> いう呼び出し方法をとっていたら、小細工を仕掛けるのが面倒な気がします。

このあたりは、そのまま cgi.rb と同じ方法によって form への埋め込みを...

あ、見落としがありました。なるほど、cgi.out(html.to_s) では確かに面倒
になりそうですね。String を渡すのではなく、やはり cgi.out(html) として、
HTML オブジェクトをそのまま渡してフックしやすくした方が良さそうですね。

> ある程度の規模になったら、eRubyやERb、html-templateを使うと思いますし、
> それを使うと速度が気になるという方は、ヒアドキュメントで直接HTMLを埋め込
> んでいると思います(その意味でHTMLの生成機能は位置付けは微妙だと思います。
> 確かにHMTLをRubyで書けるのは、かっこいいのですが)。
> ので、その人たちにとっては読み込みにかかる時間が短縮される2や3のアプ
> ローチがよいと思います。(このあたりは青山さんは熟考しておられるとは思い
> ますが)

あ、読み込み時間については、それぞれ独立していますので、1. の場合にも
高速にはなります。

もっとも、1. の場合には、cgi.rb はそのまま、という事ですから、HTML 生
成機能については高速になりますが、CGI の処理関連は現状まま、という事に
なりますが。

2., 3. の場合には、cgi.rb もダイエットされますので、HTML 生成機能を利
用しない人にも嬉しい、という感じでしょうか。

なお、ruby による HTML の生成のメリットは、記述を簡単、正確に出来る、
という点があると思っています。doctype を自動付加してくれたり、a("url")
というような書き方ができたり、などですね。

また、ブロックを利用して使った場合には、確実に終了タグを付加してくれる、
ブロックを閉じ忘れると、文法エラーになり、ruby の機能を利用して、HTML
の簡易チェックも行える、というメリットも。

つまり、デザイン優先の場合には、HTML のテンプレートや埋め込みが有効。
HTML は見たくない、簡単手軽に生成したい、という場合には HTML 生成機能
が有効、という感じかと思います。

デザイナー向けか、プログラマー向けか、という感じかもしれませんね。

> ちなみに僕は、簡易掲示板というかなり小規模なものを開発しているのに、ERb
> を使ってます。(オーバースペック^^;)

オーバースペックという事はないと思います。掲示板でも、デザインを綺麗に
しようとすると、外部のデザインツールは有効ですから、積極的に利用して良
いと思います。

というより、むしろ、そういう場合の方が多くなってきていると思われるので、
ERb や eRuby などの方が需要は多くなってきているようにも思われます。

> ので、僕個人の意見としては、クラス設計がよりスマートになっている(と僕は
> 思う)2を支持させてもらいます。(僕にはどの選択肢もデメリットがないので、
> 好き放題言ってます)

そうですね。2. には互換性の問題があるとは言っても、cgi.rb の HTML 生成
機能についての事なので、それを利用していなければあまり問題も無さそうで
はありますね。

> ところで、XHTML 1.0, 1.1, Basicはサポートするのでしょうか?

今のところ、まだ検討もしていません。ただ、HTML の拡張、というより、
XHTML という別のカテゴリのように思われるので、ruby_lib/xhtml/ を用意す
る、という感じが良いような気はします。


-- 
青山 和光 Wakou Aoyama  <wakou / fsinet.or.jp>