2019-07-02に更新

C++ ベースのウェブアプリケーションサーバ Cerflet のご紹介

はじめに

CerfletMaya Posch さん作の C++ ベースのシンプルな Web Application server です
Raspberry Pi でもサクサクに動いています

python の tornado みたいにリクエストハンドラを書くだけで簡単に使える上に、オール C++ かつオンメモリなので超高速が期待できます

ちなみに Cerf はジビエ好きな方はピンと来るかと存じますが多分、フランス語の 鹿(セール) なんじゃないかなと想像してます、Maya さんの他のプロダクトも動物の名前のが多いし、彼女の会社の名前からして Nyanko だし

実装

本体の実装は物凄くシンプルでコメント込で 80行ぐらいしかないです、すごい
私だったら C++ の80行ってコマンドライン処理するだけでもゆうに超えちゃったりします

サーバの処理も実行時オプションの処理も POCO の機能が有効に使われてて、POCO の凄さと、POCOを使えば Web Application でさえこんなにシンプルにつくれるという Maya さんのソフトウェア・アーキテクチャのセンスの良さに敬服いたしますとともに、Poco.Net のプラグマティックなチュートリアルとして大変ありがたく読ませていただきました次第でございます

How to try it

  1. POCO をインストール
  2. git clone https://github.com/MayaPosch/Cerflet.git
  3. cd Cerflet/sample
  4. make
  5. ./hellocerflet

「libPocoNet.so.60 がないよ」とかエラーになるようでしたら ldconfigしてみてください

で、hellocerflet を起動したサーバの port 8080 番をブラウザで開くと

スクリーンショット 2019-04-20 11.27.15.png

ビックリするほど簡単です

こちら の HTTPRequestHandler の中身を変えて、たとえば ContentType を "text/html" じゃなくて "application/json" にして、ostrjson 文字列を返したら超高速かつコンパクトな API サーバーとしてすぐにでも大活躍しそうです

作者の御紹介

作者の Maya Posch さんですが、御本人のブログによると生まれつきに抱えるいくつかの問題、特に両性具有に起因する問題(当時のニュース番組がこれ とか これ とか残ってます)で祖国オランダを離れざるを得ず、安住の地を求めて世界を旅しながら自分の会社 Nyanko を運営しつつプログラミングと電子工作に関する数々のプロダクトと著作を世に出していらっしゃいます
まるで物語みたいに数奇な人生を歩みながら outcomes を出されていることに正直圧倒されてしまいました、すごい人がいるもんなんだなぁ
翻って自分を鑑みるにいったい何をやってるんだと情けなく忸怩たる思いに至る次第です

近著 Hands-On Embedded Programming with C++17 を魅力的なタイトルに惹かれて読んだのが彼女を知るきっかけだったんですが、この本も POCO の紹介をふくめて Raspberry Pi みたいなSBC でプロダクトをつくる上でのオリジナルな話題にあふれていてとても面白い本でした

感想

数日前に某所で「C++でウェブアプリ書く気にはならないし」なんて言っちゃったの、謹んで取り消させてください

読書は時として人の世界観をダイナミックに変えてしまうものなのです ^^;;;;;;;


Dr. Takeyuki Ueda

Je suis un Japonipais, experimants ingénieur logiciel de mobile et cloud. Ph.D en ingénierie.

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント