« jQuery 1.0.3 | Main | PS3 »

Sunday, November 05, 2006

Tripletail風のサンプル

Catalyst::Manual::Tutorial::Basicsと同じことをTripletailを使ってやったのでその感想とか
に関して,Tripletailでの例がでていたけれども,ちょっと良い例ではないと感じたので,その点について書いてみる.

せっかくTripletailの話題を出してもらっているのにちょっと申し訳ないのだが(^^;
TL風はこんな感じ,ってことで読んでもらえると嬉しい.

・フレームワークを使うなら…

フレームワークの良いところは,その作法というか,考え方に沿ってコードを書けば,簡単に目的を実現できるところにあると思う.

何を想定しているかは直接書いてあるわけではないけれど,たとえばTripletailでは,O/Rマッパは使わない想定だし,dispatchが関数の分岐をやっていることから,モジュールを細かく分ける想定でも無いというのは予想できると思う.

Tripletailで同等のものを書いてみるのなら,Tripletail流(?)にサンプルを組んでみた方が,両者の違いが良く理解できるかと…

というわけで...

・Tripletail風で書き直す

以下のような感じになった.

動いているもの

http://pepper.sherry.jp/mikage/books.cgi
http://pepper.sherry.jp/mikage/hello.cgi

ソース

http://pepper.sherry.jp/mikage/source/

・Tripletailの特徴とか

関数は,わたしのやり方でDoとDispの2種類に分けている.
そのため,books.cgi の DoList は単にDispListを呼んでいるだけだけど,これは以下のような方針で分けているため.

DoXXX は,リクエストされた内容の処理と,次画面への遷移を行う.
例えば,データを入力した場合,そのデータのチェックを行い,ダメならエラー画面のDispXXXへ,OKならDBへの書き込みを行い,結果表示の画面のDispXXXへ,という処理を行う.

DispXXXは,XXXで表される画面の表示を行う.

今回は,単に表示するだけなので,DispXXXだけ,という感じ.


上のサンプルを見ればわかるとおり,モジュール化などはせず,
CGIファイルにベタで書いていく手法をとっている.
この手法のデメリットはいろいろあると思うけど,メリットとしては
ファイル数や行数を削減できるところ.

他の例と比較すると,

フレームワークファイル数行数バイト数 備考
Catalystの場合4260317876画像・DB ・テストファイル・POD部分・ヘルパースクリプトは除く
TripletailでCatalyst風の場合2847212003テストファイルは除く
Tripletailで普通に書いた場合81782599自動化テストは考慮外

となっていて,ファイル数も行数もきわめて少ない.

Catalystなどはほとんどをヘルパースクリプトが作ってくれるので,最初の構築はこの量は気にならないかもしれない.
ただ,サイトを構築して,その後保守していく場合は,自分が書いた部分だけを見るのは難しいと思うので,結局全ファイル・全ソースを見ていく必要が生じてしまうはず.
そうなったとき,大変じゃないのかな?というのがわたしの感触.
実際に運用してみた訳じゃないので,実際のところは知らないけれども.

こういうやり方は10人を超えるような大規模案件には通用しないとおもうけど,数人くらいのプロジェクトなら効率がいいんじゃないかと思っているところ.
(実際に比較した訳じゃないので,感覚でそう思ってるだけ)

・テンプレートエンジン

テンプレートエンジンに関しては,他のエンジンとは違って,HTML側にロジックを入れられないような仕様になっている.
これは,設計時の社内事情(^^;などが大きく影響しているわけだけど,HTMLに関してはプログラマ以外が編集することを前提に考えたため.
プログラムはわからないけど,ロジック入りのHTMLをうまく編集できる,って人もいるとは思うけど,うちの状況はそうではなくて,IF文すら入れると厳しい,とか言われたりしてた.

その結果,HTMLの中には,文字列を展開するタグと,ブロックを作るタグだけ,という極めて限定的な仕様になったのです.

ただ,結果として,お客様に納品するような場合に,簡単な修正などをお客様がやりやすい環境になっているので,この方針は今後も維持するつもり.

プログラマが個人でサイトを作るような場合,HTMLもプログラマがいじることになるので,そういうケースでは使い勝手が悪いと感じるとは思うけれども・・・

でも,慣れればそんなに面倒ってほどでもないし,テンプレートエンジンの書き方とPerl言語の書き方の2種類で考えなくて良いので,ある意味楽な部分もあると思う...

・サポートDB

現在MySQLだけ.今のところ他のDBを使う必要性に迫られていないので・・・というのが原因だったり.(^^;

----

追記

POD部分が多く含まれているのでフェアではないという指摘をいただいた.

確かに中を覗いてみると,POD部分がかなり多い.
というわけで,削除して計測し直した.
また,script/ 以下にヘルパースクリプトのようなものがあったけど,これも対象外にした方が適切のように思えたので,カット.

その結果
48 -> 42ファイル
1141 -> 603行
29197 -> 17876バイト
となった.

|

« jQuery 1.0.3 | Main | PS3 »

Comments

Catalyst の方は自動生成された、POD も大量に含まれているので、単純な行数比較はフェアではないと思うのですが

Posted by: トオルスガルモノノ | Monday, November 06, 2006 02:13 PM

コメントありがとうございます.
確かにその通りのようなので,記事の方,修正&追記しました.

行数の半分,サイズの3/1はPODなのですね...多い(^^;

Posted by: みかげ | Monday, November 06, 2006 10:18 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Tripletail風のサンプル:

« jQuery 1.0.3 | Main | PS3 »