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の新機能を取り入れた開発を行っています。


onose

【スライド有】AimingStudy8開催レポート


こんにちは!小野瀬です。

本日は1月27日に開催されたAimingStudy 8「BigQueryを利用したKPI集計ツールや、共通基盤システムの話」について報告させて頂きます。

AimingStudyとは

AimingStudyとは、Aimingが誇る開発技術や手法を共有することを目的とした勉強会です。
前回の開催から3年と長らくお待たせしてしまいましたが、今回も多くの方にご参加頂き大盛況の勉強会となりました。会場に足を運んでくださいました皆様、またUstreamで視聴された皆様に、厚く御礼申し上げます!

AimingStudy000

勉強会のテーマについて

今回はBigQueryを利用したKPI集計ツールや、課金やユーザー認証を請け負う共通基盤などの「ゲーム会社の中のゲーム制作以外の事例」に焦点を当て2つの発表を行いました。

セッションタイトル スピーカー
BigQueryで集計するシステムを作って
分かったKPI集計ツール作成
リードソフトウェアエンジニア
芝尾 幸一郎
共通基盤システムの開発について ソフトウェアエンジニア
谷道 創

どちらの発表も質疑応答では多くの手が上がり、参加者も講演者も有意義な時間を過ごすことが出来たのではないでしょうか。

「BigQueryで集計するシステムを作って分かったKPI集計ツール作成」

まず初めに、芝尾より集計ツール作成について発表いたしました。

AimingStudy_shibao

主にAimingでのデータ集計基盤のアーキテクチャーの変遷を紹介。
その変遷を元に集計基盤を作る上で“ハマりどころ”や“どのようなニーズが出てくるか”というお話をいたしました。それに合わせて、集計基盤が整備されたことで社内にデータ分析する文化がどの様に出来てきたかをまとめてあります。
ゲーム開発の技術紹介ではデータ分析の集計基盤に注目が集まることはあまりないので、
それらのことを紹介できる良い機会になったのではないでしょうか。

「共通基盤システムの開発について」

次に谷道より共通基盤についての発表がありました。
AimingStudy_tanimichi

Aiming では各ゲームタイトルがまったく別個のシステムとして開発しており、ゲームタイトル間で重複するモジュールの多重開発コストが問題となっています。
そこで開発したのが今回紹介した共通基盤システムです。
共通基盤システムを各ゲームタイトルのネットワーク内に個別にデプロイすることで、共通基盤システムとゲームタイトル間を疎結合にして、各ゲームタイトルの都合の良いタイミングで共通基盤システムの更新などを行えるようにしました。

会場について

会場は株式会社インターネットイニシアティブさんの会議室をお借りいたしました。
150名がお集まり頂ける会議室は、電源やUstreamの設備も充実しており勉強会には素晴らしい環境でした。また誘導もご協力頂きまして、本当にありがとうございました。

IIJ看板

次回について

3年振りの復活を遂げたAimingStudyですが、今後はさらに精力的に活動していきたいと考えております!今後ともどうぞ宜しくお願い致します。