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の新機能を取り入れた開発を行っています。
-
前の記事
【スライド有】AimingStudy8開催レポート 2016.02.01
-
次の記事
GAME CREATORS CONFERENCE’16 登壇させて頂きました 2016.03.07