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++に触れてみてはいかがでしょうか?

関連記事はこちら

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



ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア