Entry

C++ でウェブアプリっぽいものを書こうかなぁ……と考える

2008年08月15日

少し前に蔵書のインデックスを作ったんですけど,あれから画面をごにょごにょ作ったのでした。もっとも,フレームワークに ROR(Ruby on Rails)を使ったところ,あまり面白くない。いや,ROR がいけないんじゃなくて,あまりにもサクサクできちゃうのがつまらない。

蔵書のデータベースって,マスタのメンテ画面みたいにしかならないもんで,CRUD の機能が一通り揃っていればそれでよかったりします。で,そゆのは ROR にもとからあるもんですから,こちとらやることがあまりない。ほとんど既存の機能で,できちゃいます。

で,そういうのもあまり面白くないなぁ,ということで,C++ で Web-DB なシステムを作ってみるのはどうだろう……と,ちょっと思っています。Web システムというと,PHP や Java,それに Ruby や Perl あたり(ColdFusion もか?)を使うのが一般的だけれども,J2EE はサーバを貸してくれるところがないし(あっても高い),LL は先に書いた通り,お手軽すぎてあまり面白くありません。

つことで,ここはいっちょう C++ で書いてみよう,ということになった,と。

以前,C で CGI を作ったとき(今もこのサイトで動いてます)は,文字列の操作に割と気を使ったんですけど,C++ だと,そこら辺に気を回さなくていいところがお手軽です。また,今ローカルにある DB は,ローカルアプリからも使いたいので,Model 部分は使い回したいところ。C++ だと,手元の VC なり Qt なりと連携させるのも比較的楽にできそうです。

ウェブアプリの構成は,Struts の構成をパクって,まずは MVC のフレームワーク層を作ることにします。ただ,Struts なり Servlet が速いのは,もとから Java Servlet のプロセスが走っているから。C++ で作る場合は,CGI を使うことになりそうなので,URL にリクエストを送る度にプロセスを起動しなくちゃいけません。このオーバーヘッドを減らす必要があるので,Struts とまったく同じ構成にすることはできなさそうです。つまり,1回起動すれば済む J2EE アプリのように,プログラムをひとまとめ(EAR ファイルとか)にすることはできないので,プログラムを細かく分けて,共通部分(フレームワークになるのか?)を小さめに作り込む必要がありそうです。

一方で,いくら C++ は文字列操作ができるといっても,それはあくまでも C と比べての話だったりします。LL と比べたら不得意なことには変わりはないので,View 部分を C++ でゴリゴリ書くのは得策じゃありません。ここは,内部的に XML の DOM ツリーを作って,XSLT で Model(の結果)を View に変換するのがよさげな感じです。ここでの XSLT は JSP や ASP に相当するもんだと思ってもらって構いません。C++ なので,ここら辺の変換処理は LL や Java と比べて有利だと思います。

要するに,やることは,

  • URL リクエストを受け取って解析する。
  • リクエストに対して呼び出す機能を決める(大きくはプログラム単位で分ける)。
  • Model の規約(Bean)みたいなものをそれっぽく作る。
  • DAO 周りを作る。
  • 出力内容の DOM ツリーと,適用する XSLT テンプレートを作る

といったところになるのかな。DOM ツリーを作った後は,XSLT プロセッサにぽいぽいっと投げちゃえばいいので,こちらですることはありません。

なんか,それっぽくできそうな気がしてきた。やってみるか?

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN