1. HOME
  2. ブログ
  3. IT技術
  4. 【View編】最速のC++ Webフレームワーク「Drogon」を試してみた!

【View編】最速のC++ Webフレームワーク「Drogon」を試してみた!

View 編~最速のC++ Webフレームワーク「Drogon」を試してみた!~

最速の Web フレームワークとして注目を集めている「Drogon」。

前回は、コントローラについて紹介しました。

View を作ってみよう!

今回は、Web アプリケーションの中でも重要な「View」について解説していきます。

Web 上で視覚的に動作するアプリを作成する場合、データのやり取りはもちろん、ユーザビリティにも大きく関わる部分です。

Drogon では、ビューを動的に生成することが可能です。

ビューのコントローラの生成

まずは、ビューを表示させるために必要不可欠なコントローラを生成しましょう!

今回は、受け取った GET パラメータを展開するビューを作成したいので、「ListParaCtrl」と言う名前にします。

ヘッダーファイルでルーティング

それでは、ヘッダーファイルから見てみます。

「/listpara」という URL をルーティングします。

ソースファイル実装

ソースファイルは、以下のように実装します。

ここで、「GET パラメータの受け取り方」や「ビューへのデータの渡し方」を確認しておきましょう!

CSP(ビュー)の作成

さて、Drogon では、動的な HTML ページを生成するために「CSP」というエンジンを使用しています。

CSP (ビュー) とは?

CSP は「C++ Server Pages」と言って、サーバサイドで C++ライクな構文を処理し、HTMLを生成するものです。

Java における JSP の C++版ととらえればわかりやすいでしょう。

CSP の記法

最初に、CSP の記法について説明しておきます。

基本的には HTML で、あるスコープ内では C++を記述できるのが CSP の特徴です。

CSP の記法は様々あるのですが、今回は代表的なものだけご紹介します。

<%inc %>

<%inc %> 内では、 #include が使用可能です。

(例: <%inc #include <iostream> %> )

<%C++ %>

<%c++ %> 内では、その他の C++コードが記述可能です。

(例: <%c++ std::string name = "Tanaka"; %> )

@@

@@ は、コントローラ側で渡したデータ変数を指します。

例えば、先ほどのソースファイルでいうと、 data そのものを指します。

逆に CSP ファイル内では data という名前では呼び出せず、 @@ のみ参照可能となります。

$$

$$標準出力として動作します。

std::cout のようなもので、 << と一緒に使用します。

なお、改行はされません

[[ ]]

[[ ]] 内に書かれた文字列をキーとして、コントローラ側から対応するデータを取得し、表示させます。

(例: [[ title ]] )

{% %}

{% %} 内では、あらかじめ <%c++ %> などで宣言された変数を展開できます。

これは、 <%c++ $$<<name; %> と同義です。

(例: {% name %} )

<%view %>

<%view %> 内ではサブビューとして、他の CSP ファイルを展開できます。

もし header.csp が存在すれば、 <%view header %> のように記述して展開できます。

これにより、ページの共通部分を1つにまとめることが可能です。

実際に作ってみよう!

今回は、試しに以下のようなファイルを「/views」ディレクトリに作成してみました。

名前は「ListParaView.csp」です。

動作確認

試しに、 http://localhost/listpara?arg1=tanaka&arg2=suzuki  にアクセスしてみると、

動的にHTMLが生成されている

上手く動作しているようです!

エラーが出る場合

もし、ビルドでエラーが出る場合は、CMakeLists.txt に以下を追記しましょう。

ただし、drogon_ctl コマンドでプロジェクトを生成しているなら、基本的には自動生成されるはずです。

ハッシュマップ

Drogon では、GET パラメータは std::unordered_map<> で実装されています。

これはいわゆるハッシュマップで、計算量0(1)でデータを取得できます。

順序付けがされないデメリットはありますが、こんなところも Drogon が最速と言われる一因でしょう。

drogon_ctl コマンドで C++ソースファイルの生成が可能

Drogon には、C++ソースファイルを生成するコントローラを、view ディレクトリ下に自動出力してくれる機能があります。

万が一、CSP ファイルの実行ができないサーバで運用する場合などは役に立つはずです。

さいごに

これで一通り、Drogon の主要機能の紹介が終わりました。

Drogon は多くの機能が実装されたフルスタックなWebフレームワークであり、とてもユーザーフレンドリーな仕様になっていると思います。

まだまだ Drogon の可能性は未知数です。

Web エンジニアのみなさん、これを機に C++に触れてみてはいかがでしょうか?

関連記事はこちら

こちらの記事もオススメ!



書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア