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には、まだまだたくさんの機能がありますので、引き続き解説記事を掲載していく予定です。

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

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
システム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・アプリエンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

controller 編はこちら!

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



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

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

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

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

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

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

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

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

採用情報はこちら

書いた人はこんな人

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

関連記事