SHOEISHA iD

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

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

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

特集記事

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

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

Webアプリケーションひとめぐり

 TreeFrog Frameworkはサーバサイドのフレームワークです。WebアプリケーションはModel/View/Controllerに分割されており、それぞれ動的ライブラリ(共有ライブラリ、DLL)になります。その結果、Webアプリケーションは高速に動作することが可能なのです(もちろん記述するコードに依存しますが)。

 TreeFrogアプリケーションの作成をひとめぐりしてみましょう。テキストの追加、編集、削除だけができる単純なブログシステムをつくってみます。

アプリケーションのスケルトンを生成

 blogappという名でスケルトン(ディレクトリツリーと各種設定ファイル)を作ってみます。コマンドラインから次を実行します。Windowsの場合は、TreeFrog Command Prompt上で実行してください。

$ tspawn new blogapp
  created  blogapp
  created  blogapp/app
  created  blogapp/app/controllers
  created  blogapp/app/models
  created  blogapp/app/models/queries
  created  blogapp/app/models/sqlobjects
  created  blogapp/app/views
  :

テーブルを作成

 データベースにテーブルを作ります。タイトルと内容(ボディ)のフィールドを作りましょう。

 ここではMySQLの例を示します。データベースを作る前に、設定された文字セットの情報を確認しておいてください(補足参照)。また、mysqlコマンドラインツールにパスを通しておいてください。

$ mysql -u root -p
Enter password:

mysql> CREATE DATABASE blogdb;
Query OK, 1 row affected (0.01 sec)

mysql> USE blogdb;
Database changed

mysql> CREATE TABLE blog (id INTEGER PRIMARY KEY, title VARCHAR(20), body VARCHAR(200), created_at TIMESTAMP, updated_at TIMESTAMP, lock_revision INTEGER);
Query OK, 0 rows affected (0.09 sec)

mysql> DESC blog;
+---------------+--------------+------+-----+---------------------+-----------------------------+
| Field         | Type         | Null | Key | Default             | Extra                       |
+---------------+--------------+------+-----+---------------------+-----------------------------+
| id            | int(11)      | NO   | PRI | NULL                |                             |
| title         | varchar(20)  | YES  |     | NULL                |                             |
| body          | varchar(200) | YES  |     | NULL                |                             |
| created_at    | timestamp    | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| updated_at    | timestamp    | NO   |     | 0000-00-00 00:00:00 |                             |
| lock_revision | int(11)      | YES  |     | NULL                |                             |
+---------------+--------------+------+-----+---------------------+-----------------------------+
6 rows in set (0.01 sec)

mysql> quit
Bye

 これでid、title, body, created_at, updated_at, lock_revisionのフィールドを持つblogテーブルができました。created_atと updated_atのフィールドがあると、TreeFrogはそれぞれ作成日時、更新日時を自動で挿入・更新してくれます。また、lock_revisionフィールドは楽観的ロックを実現するためのもので、integer型で作っておけば自動的に作動します。

楽観的ロック(Optimistic Lock)

 レコードにあらかじめロックリビジョンを記録しておき、ロックリビジョンが変わっていないことを検証しつつデータを保存すること。ロックをかけないので、デッドロックの心配がありません。処理速度の向上もちょっとだけ期待できます。

MySQL文字セットの補足

 MySQLの文字セットを確認するには、mysqlクライアントから次のコマンドを入力します。

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

 これはUTF-8の例です。文字セットがすべてそろっていないと(character_set_filesystemはbinaryでよい)、TreeFrogはインサートに失敗したり、文字化けしたり、正常に動作しませんでした。もし設定が異なっていたら、MySQLのマニュアルを参照して設定し直してください。その設定が終わってから、データベースの作成、テーブルを作成するのが間違いないようです。

次のページ
データベースの情報を設定

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

特集記事連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

イベント

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

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

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

メールバックナンバー