ttsuchie

C++14プロジェクトでのType Erasureの活用について発表しました


こんにちは、エンジニアの土江です。

今回の開発者ブログでは、プロジェクト内の勉強会で発表した、C++のType Erasureという手法について紹介します。

併せて、Boost.TypeErasureのコンセプトを元にGoogle Mockのモックを自動生成するライブラリを開発中です。今回はそのライブラリの開発中のコードを掲載します。ライブラリのイメージとしては、C#のNSubstituteのようなものです。

 

所属しているプロジェクトについて

本題の前に、現在所属しているプロジェクトの文化と開発体制の紹介をします。

今所属しているプロジェクトでは隔週で勉強会をする文化があり、技術をチーム内で共有する場としています。

プロジェクトではC++14とBoostライブラリを活用したサーバーの開発をしています。その中でType Erasureという手法を使ってコードの見通しを良くしています。

この記事では、Type Erasureという手法について、チーム内勉強会でチームに共有した内容を紹介します。

 

Type Erasureとは

C++におけるType Erasureとは、テンプレートや継承では難しい、動的で柔軟な多態性を実現するための手法です。

標準ライブラリ内でも使用されている手法であり、少々複雑ですが非常に便利なテクニックです。

今回の発表の内容は、Type Erasureとは何か、Boost.TypeErasureライブラリの使い方、更に便利にType Erasureを利用するために、といったものとなっています。

 

Boost.Type Erasureの活用

スライド中に出てきた、Boost.TypeErasureのコンセプトからgmockのモックを自動生成するライブラリを現在開発中です。

基本となるコードを以下のgistに掲載します。

https://gist.github.com/ttsuchie/efd5dc4f200efd0b3231

まだまだ開発中ですが、基本機能はすでに整っています。

終わりに

今回の開発者ブログでは、C++のテクニックを紹介しました。

AimingにはC++を採用しているプロジェクトがいくつかあり、BoostやC++11/14の新機能を取り入れた開発を行っています。