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

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

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

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

前回は、Drogon のインストールと動作確認を行いましたが、実用的な使い方までは紹介しきれませんでした。

Drogon のコントローラについて学ぼう

今回は、Drogon の「Controller (コントローラ)」について見ていきます。

コントローラは、Web フレームワークの心臓部と言っても過言ではない超重要ポイントです。

この記事で、しっかり理解しておきましょう!

Controller とは?

「コントローラ」は、URL リクエストを解析し、どういった処理をするか決定する Web アプリケーションのコアです。

前回は、Drogon がサポートしている Controller の中で、最もシンプルな HttpSimpleController の紹介をしました。

実用的なコントローラ「HttpController」

今回は、皆さんにも馴染みのある、実用的なコントローラを紹介していきます。

今回紹介する HttpController クラスは、URL パラメータなどを捌くためのコントローラです。

HttpController の生成

drogon_ctl コマンドで、同じように生成します。

通常のコントローラ生成コマンドは -h オプションをつけた、以下のような構文で生成します。

名前空間はなくても構いませんが、管理のしやすさと名前衝突を避けるために、何かしら定めた方が良いでしょう。

Drogon の名前空間は URL にも反映される

また、Drogon では、名前空間がそのまま URL にも反映されます。

今回は公式ドキュメントに倣って、controller ディレクトリで以下のように作成しました。

これで、今から作成するコントローラは全て「/demo/v1/user/{ルーティングしたパス}」というURLで処理されるようになります。

ファイル生成

コマンドを実行すると、「demo_v1_User」という名前の.h ファイル、.cc ファイルが生成されます。

モデル作成に見えるけど…

HttpSimpleController とは、やや形式が異なっていますね。

User というモデルを作っているように見えるかもしれませんが、これは単なるコントローラなので、User モデルは生成されません。

URL によって表示を変える

ここからは、Drogon の公式ドキュメントでは分かりにくい箇所を解説していきます。

まずは、「/info/{userId}」でユーザ ID と名前を JSON で返す処理を実装してみましょう!

ヘッダーファイルに宣言を記述

まずは、ヘッダーファイルに宣言を書きます。

ソースファイルに処理を記述

続いて、処理をソースファイルに書いていきます。

動作確認

試しに、「http://localhost/demo/v1/user/info/12345」にアクセスしてみると、

と返ってくるはずです。

コンソール表示も確認

さらにはコンソールでは、デバッグ用の出力で、

のように表示されているはずです。

Drogon のデバッグ出力は C++ 標準出力と同じ

C++では、標準出力を std::cout << "Hello" << std::endl; のように記述します。

Drogon のデバッグ出力も同じような実装をしており、普段 C++を使っている人なら難なく扱えると思います。

GET パラメータ処理も同じ

例えば「/info?userId={xxx}」のような URL も、同様に処理ができます。

のようにするだけです。

URL パラメータの記法

先ほどの例では、全て {1}, {2} といった書き方をしていましたが、他にもちょっとした決まりがあります。

  1. {} : 通常のパラメータマッピング。
  2. {1}, {2}  : パラメータの番号付。
  3. {anything} : {} と同じ。可読性向上のために何かしら文字列を入れることができる。
  4. {1:anything}, {2:xxx} : {1}, {2} と同じ。可読性向上のためのもの。

公式では、3番目と4番目の記法が推奨されています。

これらのことを踏まえると、以下の URL クエリは全て同義であることが分かりますね。

  1. "/users/{}/books/{}"
  2. "/users/{}/books/{2}"
  3. "/users/{user_id}/books/{book_id}"
  4. "/users/{1:user_id}/books/{2}"

Drogon の便利な機能「URL 正規表現」

Drogon のコントローラでは、他にも多くの便利な機能が提供されています。

今回は、「URL 正規表現」についてご紹介します。

Multiple Path Mapping

以下のようなルーティングであれば、様々な URL リクエストを1つのコントローラに集約させることができます。

Regular Expression (Regex: 正規表現)

もっと細かく指定する場合は、「正規表現」を使いましょう。

これを上手く使えば、全ての URL を漏れなくユーザに提供できるようになります。

ただし、くれぐれも競合しないよう注意して下さい。

View 編へつづく!

今回は、Drogon のコントローラの扱いについて簡単に紹介しました。

これで、シンプルな WebAPI であれば作成できそうですね。

次回は、「Web アプリケーションの View の扱い」について解説していきます!

View 編はこちら!

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



書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界を変える…! /

Androidエンジニア

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

iOSエンジニア