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

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

Web フレームワーク「Drogon」とは?

つい最近、TechEmpower が独自でベンチマークを計測したランキングで、とある Web フレームワークがトップに輝きました。

【TechEmpower Framework Benchmarks】
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite

それが「Drogon」です。

C++のフレームワーク

「Drogon」は、Webフレームワークでは珍しい、C++で実装されたフレームワークです。

そのため、処理速度がかなり速く、JSON データならば 1秒間に 1,077,826 件のリクエストを捌けるとのこと。

高速処理で有名な Python WebAPI フレームワーク「FastAPI」でさえ 171,055件/秒ですので、その圧倒的な差が分かるかと思います。

実際に「Drogon」を使ってみよう!

今回は、この Drogon を実際にインストールして動作確認してみたいと思います。

C++を触ったことのない人にも分かるよう解説をしていくので、現役 Web エンジニアは必見です!

参考

【公式ドキュメント】
https://drogon.docsforge.com/

Drogonのインストール方法

インストール前に、まずは環境を整えていきましょう!

Drogon インストールに必要なもの

みなさんの使用している OS にもよりますが、とりあえず以下の環境が必要です。

  1. git
  2. gcc/g++ (C/C++コンパイラ)
  3. cmake (C++ビルド用のツール)
  4. jsoncpp
  5. uuid
  6. OpenSSL
  7. zlib

macOS は Homebrew を使おう

筆者の環境と同じく macOS であれば、Homebrew で全て事足ります。

Drogon のインストール

ワークスペースを作る

まずは、適当にワークスペースを作ってください。

本記事では仮で「drogon-lib」としています。

Github からソースをクローンしてビルド

Drogon のインストールは、Github からソースをクローンし、ビルドします。

具体的には、以下を参照してください。

インストール完了!

これだけで、Drogon のインストールは終わりです。

しっかりインストールできていれば、「drogon_ctl」というコマンドが使えるようになっているはずです。

Drogon のロゴとバージョンが表示される

サーバーを立ち上げてみる

それでは、簡単に動作確認をしてみます。

プロジェクト生成

先ほど使えるようになったコマンドを叩くことで、必要最低限のファイルが自動で生成されます。

本記事では、プロジェクト名を「dg_sample」としています。

ディレクトリ構成はこんな感じ

上記のコマンドを叩くと、以下のようなディレクトリ構成でファイルが生成されます。

今回は動作確認だけなので、main.cc しか使いません。

C++ファイルの拡張子は何を使えばいい?

余談ながら、C++ファイルの拡張子は「.cpp」「 .cc」「 .cxx」などいろいろあります。

コンパイラ依存な部分もありますが、「.cpp」か「.cc」を使っておけば基本的には大丈夫でしょう。

main.cc コード解説

さて、main.cc には以下のようなコードが書かれています。

名前空間(namespace)とは?

drogon:: は、「名前空間(namespace)」といい、名前の衝突を避けるために使用する集合体 (スコープ) を指します。

クラスや構造体と異なり、型を持たないただのグループ付けにすぎません。

Python のモジュール名を想像するとわかりやすいでしょう。

記述の省略もできる

名前が衝突しないのであれば、以下のように記述して省略することも可能です。

ローカルサーバを立ち上げてみよう

さて、いよいよ実行に移ります。

「Not Found」が表示されれば成功!

http://localhost にアクセスしてみると、以下のように表示されるはずです。

何もビューもコントローラも作成していないのでNot Found

HTML ファイルも何も作っていないので「Not Found」と出てきますが、フッターには「drogon/1.0.0」と表示されているはずです。

これで、Drogon によってローカルサーバが無事に立ち上がっていることがわかりました。

試しに何か表示させてみよう!

試しにコントローラを一つ作成し、URL アクセスしたときに何か返ってくるようにしてみましょう!

コントローラを作成

以下のコマンドを叩き、「TestCtrl」という名前のコントローラを作成します。

そうすると、以下の2つのファイルが作成されるはずです。

  1. TestCtrl.h (ヘッダファイル)
  2. TestCtrl.cc (ソースファイル)

C++の管理の仕方

C/C++では、「ヘッダファイルにクラスやメソッドを宣言し、ソースファイルに中身を記述する」という管理の仕方をします。

つまり、Drogon では、「ヘッダファイルにルーティングし、ソースファイルに処理を書く」のです。

ヘッダファイル修正

さっそく修正していきましょう。

チュートリアルに倣って、ヘッダファイルに「/」と「/test」という2つのパスを追加します。

パスの追加にはマクロを使う

ここで面白いのは、関数ではなくマクロ (大文字表記の部分) をパス追加に使用している点ですね。

実際ソースを見てみると、このマクロは「クラスメソッド定義で関数を呼び出す役割」を果たしています。

.cc ファイル加筆

続いて .cc ファイルの方も加筆していきます。

「auto」はどんな型?

C++11 で追加された型 auto は、コンパイル時に型を推測してくれます。

便利な型なので覚えておきましょう。

いざ実行!

さて、それでは実行してみましょう。

「localhost/」と「localhost/test」どちらも、"Hello World!"と表示されるはずです。

このように、Drogon では、コントローラの設定はとてもシンプルになっています。

Controller 編へつづく!

今回は、C++ Webフレームワーク「Drogon」の基礎的な解説をしました。

C++ なので一見複雑なコードですが、かなり使いやすく実装されています。

高速な C++ の恩恵を受けつつ、簡単にWebアプリケーションが実装できるフレームワークといえるでしょう!

Drogonには、まだまだたくさんの機能がありますので、引き続き解説記事を掲載していく予定です。

次回は「コントローラ」についてもっと詳しく見ていきます!

controller 編はこちら!

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



書いた人はこんな人

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

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

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

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

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

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界を変える…! /

Androidエンジニア

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

iOSエンジニア