SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

C++でWebアプリケーションを開発できる
~ 高性能フレームワーク「TreeFrog Framework」

C++によるフルスタックのMVC型Webフレームワーク

データベースの情報を設定

 データベースの情報をconfig/database.iniファイルに設定します。エディタでファイルを開き、[dev]の各項目に環境に応じた適切な値を入力して保存します。

MySQLの例:
[dev]
DriverType=QMYSQL
DatabaseName=blogdb
HostName=
Port=
UserName=root
Password=root
ConnectOptions=

作ったテーブルからコードを自動生成

 コマンドラインから、ジェネレータコマンド(tspawn)を実行し、ベースとなるコードを生成します。下記の例ではコントローラ、モデル、ビューを生成しています。第2引数には、テーブル名を指定します。

$ cd blogapp
$ tspawn scaffold blog
 created  app/controllers/blogcontroller.h
 created  app/controllers/blogcontroller.cpp
 created  app/controllers/controllers.pro
 created  app/models/sqlobjects/blogobject.h
 created  app/models/blog.h
 created  app/models/blog.cpp
 created  app/models/models.pro
 created  app/views/blog/index.html
 :

 tspawnのオプションによって、コントローラだけ、あるいはモデルだけ生成するように動作を変えられます。"tspawnhelp"コマンドでヘルプを参照してください。

 もし使用するSQLドライバがQt SDKに組み込まれていない場合エラーが発生します。そのときはドライバを組み込んでください。

ソースコードをビルド

 qmakeコマンドおよびmakeコマンドを実行すると、コントローラ、モデル、ビュー、ヘルパのすべてをコンパイルします。

$ qmake -spec linux-g++     (← Makefileをつくるために1度だけ実行してください)
$ make
-specオプション

 -specオプションについては、Windowsではwin32-g++を、Mac OS Xではmacx-g++を指定すればよいでしょう。Windowsの場合はmakeコマンドの代わりにmingw32-makeコマンドを使ってください。

 ビルドが成功すると、4つの共有ライブラリ(controller, model, view, helper)が「lib」ディレクトリに作られます。

アプリケーションサーバを起動

 アプリケーションのルートディレクトリで、アプリケーションサーバを起動します。サーバは、コマンドが実行されたディレクトリをアプリケーションルートディレクトリと見なして処理を行います。サーバを止めるときはCtrl+cを押します。サーバは後処理をして数秒後に止まります。

$ treefrog -e dev

 Windowsでは、treefrogdコマンドを使います。

> treefrogd -e dev

 Windowsでは、Webアプリケーションをデバッグモードでビルドした場合はtreefrogdコマンドを、リリースモードでビルドした場合はtreefrogコマンドを使ってください。リリースモードとデバッグモードのオブジェクトが混在すると、正常に動作しませんので注意してください。

 ビルドモードは、プロジェクトファイル(pro)のCONFIGパラメータで設定します。デフォルトはデバッグモードです。

 ファイヤーウォールが設定されている場合は、ポート(デフォルト:8800)を開けてください。ポートは設定ファイル(treefrog.ini)で変更可能です。

ブラウザでアクセス

 ブラウザでhttp://localhost:8800/Blog/indexにアクセスしてみましょう。

 最初は1件も登録がありません。

Blog一覧画面
Blog一覧画面

 2件ほど登録してみたところの画面。すでに新規登録、参照、編集、削除を行うができます。日本語の表示も問題ありません。

2件登録後のBlog一覧画面
2件登録後のBlog一覧画面

 他のフレームワークと同様に、TreeFrogにもリクエストされたURLから該当するコントローラのメソッド(アクション)を呼び出す仕組みが備わっています。

コントローラの中身

 生成されたコントローラの中身を見てみましょう。

 まずはヘッダファイル。おまじないコードがいくつかありますが、ここでは気にしないことにします。ヘッダファイルにはCRUDに相当するアクションが定義されています。

(※ソースファイルは割愛)
class T_CONTROLLER_EXPORT BlogController : public ApplicationController
{
    Q_OBJECT
public:
    BlogController() { }
    BlogController(const BlogController &other);

public slots:
    void index();                     // 一覧表示
    void show(const QString &pk);     // 1件表示
    void entry();                     // 登録画面表示
    void create();                    // 新規登録
    void edit(const QString &pk);     // 編集画面表示
    void save(const QString &pk);     // 保存(更新)
    void remove(const QString &pk);   // 1件削除
};

T_DECLARE_CONTROLLER(BlogController, blogcontroller)        // おまじない
CRUD

 CRUDとは、Webアプリケーションにおける主要な4つの機能のことで、「Create(生成)」「Read(読込)」「Update(更新)」「Delete(削除)」の頭文字をとって表します。

次のページ
ビューの仕組み

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

AOYAMA Kazuharu(アオヤマカズハル)

イディ株式会社 代表取締役社長。TreeFrog Framework プロジェクト代表。東京の某メーカにてシステムエンジニア・プログラマとして、組込やWebシステムの開発プロ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5927 2011/05/26 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー