18
C++ の template ののののの ののの C# ののののの

C++のtemplate特殊化的なことをC#でやった話

Embed Size (px)

Citation preview

Page 1: C++のtemplate特殊化的なことをC#でやった話

C++ の template 特殊化的なことを C# でやった話

Page 2: C++のtemplate特殊化的なことをC#でやった話

自己紹介

神原 淳史 (33 歳♂ )@atsukanrockSansan 開発部 部長❤DDD, C#

Page 3: C++のtemplate特殊化的なことをC#でやった話

部長のお仕事

Page 4: C++のtemplate特殊化的なことをC#でやった話

コード書く時間がなかなかない

Page 5: C++のtemplate特殊化的なことをC#でやった話

プロジェクトに入ると足手まとい(velocity 稼げない & 進捗の計算が立たない )

Page 6: C++のtemplate特殊化的なことをC#でやった話

でもコード書きたい

Page 7: C++のtemplate特殊化的なことをC#でやった話

そこで目をつけたのが Sansan.LinqPad

Page 8: C++のtemplate特殊化的なことをC#でやった話

Sansan.LinqPadとは何ぞや

1

Page 9: C++のtemplate特殊化的なことをC#でやった話

Sansan.LinqPad

水平分散 (sharding) されたSansan データベースの全 shard にSQL をぶち込む機能を提供するNuGet private パッケージで、LINQPad 標準装備な Sansan 開発部エンジニアに日々、愛用されている

Page 10: C++のtemplate特殊化的なことをC#でやった話

こんな感じ

Page 11: C++のtemplate特殊化的なことをC#でやった話

プルリク出した2

Page 12: C++のtemplate特殊化的なことをC#でやった話

どりゃ

Page 13: C++のtemplate特殊化的なことをC#でやった話

優しい

Page 14: C++のtemplate特殊化的なことをC#でやった話

目的

Page 15: C++のtemplate特殊化的なことをC#でやった話

伝えたいこだわり

BroadcastResult<TResult> クラスはこう

Page 16: C++のtemplate特殊化的なことをC#でやった話

伝えたいこだわり

BroadcastResultExtensions クラスがこうじゃ…!

Page 17: C++のtemplate特殊化的なことをC#でやった話

どういうことかと言うと

Page 18: C++のtemplate特殊化的なことをC#でやった話

ジェネリック型引数が特定の型の場合のみメソッドを提供するという、C++ における template 特殊化的な発想で、BroadcastResult<TResult> の TResult が

IEnumerable<T> の時だけメソッドを生やすのを、拡張メソッドを使って実現したった話でした(C++ 忘れたので合ってるかどうか微妙ですが )

普通かも…