Suche senden
Hochladen
C#でもメタプログラミングがしたい!!
•
12 gefällt mir
•
16,637 views
T
TATSUYA HAYAMIZU
Folgen
わんくま同盟大阪勉強会#57 セッション資料
Weniger lesen
Mehr lesen
Melden
Teilen
Melden
Teilen
1 von 43
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて
Photon運営事務局
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
MagicOnion入門
MagicOnion入門
torisoup
Empfohlen
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
200人での対戦も可能!?Photon 新SDKについて
200人での対戦も可能!?Photon 新SDKについて
Photon運営事務局
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
MagicOnion入門
MagicOnion入門
torisoup
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
Unity Technologies Japan K.K.
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
Unity Technologies Japan K.K.
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
UnityTechnologiesJapan002
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会
モノビット エンジン
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
Haruki Yano
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
光晶 上原
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
Weitere ähnliche Inhalte
Was ist angesagt?
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
Unity Technologies Japan K.K.
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
Unity Technologies Japan K.K.
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
UnityTechnologiesJapan002
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会
モノビット エンジン
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
Haruki Yano
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
光晶 上原
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
Was ist angesagt?
(20)
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
多機能ボイチャを簡単に導入する方法
多機能ボイチャを簡単に導入する方法
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
【Unite Tokyo 2019】SRPで一から描画フローを作ってみた! ~Unity描画フローからの脱却~
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
年の瀬リアルタイム通信サーバ勉強会
年の瀬リアルタイム通信サーバ勉強会
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
Andere mochten auch
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
Kouji Matsui
T4使ってみた
T4使ってみた
Ryota Murohoshi
T4 Template 入門
T4 Template 入門
Hiroshi Maekawa
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
2014 08-30 life with roslyn
2014 08-30 life with roslyn
shibuki
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
Kouji Matsui
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
Demystifying dot NET reverse engineering - Part1
Demystifying dot NET reverse engineering - Part1
Soufiane Tahiri
Dockerとdev ops
Dockerとdev ops
Hiroshi Maekawa
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
Manato KAMEYA
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
外道 父
ソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごと
peto_tn
Andere mochten auch
(20)
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
T4使ってみた
T4使ってみた
T4 Template 入門
T4 Template 入門
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
2014 08-30 life with roslyn
2014 08-30 life with roslyn
中3女子でもわかる constexpr
中3女子でもわかる constexpr
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Demystifying dot NET reverse engineering - Part1
Demystifying dot NET reverse engineering - Part1
Dockerとdev ops
Dockerとdev ops
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
ソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごと
Ähnlich wie C#でもメタプログラミングがしたい!!
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
Akira Hatsune
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
Knowledge & Experience
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会
nemumu
業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド
You&I
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
システム設計の原則
システム設計の原則
You&I
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
The Japan DataScientist Society
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
Mitsuhito Ishino
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
モデルベースソフトウェア開発
モデルベースソフトウェア開発
Akira Tanaka
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
Shinichi Nishikawa
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
Masahiro Nishimi
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
研究生のためのC++ no.6
研究生のためのC++ no.6
Tomohiro Namba
Ähnlich wie C#でもメタプログラミングがしたい!!
(20)
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会
業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
システム設計の原則
システム設計の原則
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
モデルベースソフトウェア開発
モデルベースソフトウェア開発
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
研究生のためのC++ no.6
研究生のためのC++ no.6
Mehr von TATSUYA HAYAMIZU
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
TATSUYA HAYAMIZU
わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門
TATSUYA HAYAMIZU
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
TATSUYA HAYAMIZU
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
TATSUYA HAYAMIZU
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
TATSUYA HAYAMIZU
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
20131123 playgroundハッカソン
20131123 playgroundハッカソン
TATSUYA HAYAMIZU
Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化
TATSUYA HAYAMIZU
Metro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきた
TATSUYA HAYAMIZU
より良いコードを書くための
より良いコードを書くための
TATSUYA HAYAMIZU
ゲームノシクミ
ゲームノシクミ
TATSUYA HAYAMIZU
Mehr von TATSUYA HAYAMIZU
(11)
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
20131123 playgroundハッカソン
20131123 playgroundハッカソン
Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化
Metro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきた
より良いコードを書くための
より良いコードを書くための
ゲームノシクミ
ゲームノシクミ
C#でもメタプログラミングがしたい!!
1.
C#でもメタプロがしたい!! @thayamizu わんくま同盟 大阪勉強会 #57
2.
おしながき • • • • イントロダクション メタプログラミング C++におけるメタプログラミング C#におけるメタプログラミング わんくま同盟 大阪勉強会 #57
3.
イントロダクション わんくま同盟 大阪勉強会 #57
4.
自己紹介 • H.N:Crest – Twitter
@thayamizu – Blog http://d.hatena.ne.jp/Crest – 博士(情報学) • 職業:PG • 趣味:カラオケ・プログラミング・イラスト・読書 • よく使う言語:C++/VC++, C# わんくま同盟 大阪勉強会 #57
5.
自己紹介 • 勉強会・読書会やってます – Effective
C++ 読書会 (終了) – Exceptional C++読書会(開催中) – 型システム入門読書会 (開催中) – 来年はVisualStudioハッカソン倶楽部で playgroundハッカソンやります わんくま同盟 大阪勉強会 #57
6.
諸注意 このセッションにおける発言は個 人のものであり特定の組織に帰属 するものではありません わんくま同盟 大阪勉強会 #57
7.
諸注意 ツッコミ歓迎です わんくま同盟 大阪勉強会 #57
8.
メタプログラミングとは わんくま同盟 大阪勉強会 #57
9.
メタって? • メタ(meta -
) – 語源はギリシャ語のmeta – から – 高次の~,超~,~の間などの意味がある • レベルの変化を示すのに使われる – 物理学(physics)→形而上学(meta-physics) – 心理学(psychology)→超心理学(metapsychology) わんくま同盟 大阪勉強会 #57
10.
メタプログラムとメタプログラミング • メタプログラム – 他のプログラムや自分自身を記述したり操作する プログラム –
プログラムからプログラムを生成したり加工する ようなプログラム • メタプログラミング – 上のようなプログラムを作成する行為 – メタプラグラムをプログラミングすること わんくま同盟 大阪勉強会 #57
11.
メタプログラムの例 • メタプログラムの例 – プログラムジェネレータ –
コンパイラ,インタプリタ – マクロ – オプティマイザ – リファクタリングツール わんくま同盟 大阪勉強会 #57
12.
なんだか難しそう・・ (´・ω・`) わんくま同盟 大阪勉強会
#57
13.
そもそもメタプログラミングの 何が嬉しいの? わんくま同盟 大阪勉強会 #57
14.
モチベーション • 個別のソフトウェアコンポーネントを自動的に 構成したり,個別に構成されたコンポーネント を自動的に組み合わせたい わんくま同盟 大阪勉強会
#57
15.
モチベーション • システムの環境変化に合わせて調整したい – システムの負荷に合わせたスケジューリングや キャッシュシステムの自動的な修正 –
新しい環境へデプロイする前に必要なアダプタを 自動生成する能力 わんくま同盟 大阪勉強会 #57
16.
メタプログラミングの利点 • システムが環境に合わせて適応できる能力を 順応性(Adaptivity)という – 興味深いことに,システムの順応性は実行時限 定されません –
プログラムのビルド時に環境に適合するようなラ イブラリコードは実現可能 • メタプログラミングは,このような順応性 (Adaptivity)の高いシステムを作るための手 段の一つ わんくま同盟 大阪勉強会 #57
17.
メタプログラミングのための機能 • 実行時型情報(RunTime Type
Information, RTTI) – GetType,typeof • Template, Generics – 型をパラメタライズするメカニズム – 型に依存しないコンテナやアルゴリズムの実装が可能 • マクロ – C++のマクロはテキスト置換なので結構なんでもできる – C#ではプリプロセッサは用意されているものの,マクロ機 能は言語的に存在してない わんくま同盟 大阪勉強会 #57
18.
メタプログラミングのための機能 • リフレクション(reflection) – プログラムが実行中にその状態を表現するデー タとして自分自身を操作できる機能 •
型名の取得,メソッド・フィールド情報の取得・設定 • イントロスペクション(introspection) – プログラム自身の状態を解析するメカニズム • リアフィケーション(reification) – プログラム自身の状態をデータとして符号化する メカニズム わんくま同盟 大阪勉強会 #57
19.
まとめ • メタプログラミングとはプログラムを編集・加工 するプログラムを作成する行為 • これにより,移植性・順応性が高く,環境の変 化に応じて動的に修正可能なプログラム –
実際の事例も幾つか存在する(GMCLなど) – しかし,あくまで理論上であって実際のビジネスに 応用するにはかなり難度が高い わんくま同盟 大阪勉強会 #57
20.
C++におけるメタプログラミング わんくま同盟 大阪勉強会 #57
21.
C++におけるメタプログラミング • C++で行われるメタプログラミング手法は現 在主に3つある – CPP(
C PreProcessor ) を使ったプリプロセス時 メタプログラミング – Templateを使ったコンパイル時メタプログラミン グ – Constexprを使ったコンパイル時メタプログラミン グ わんくま同盟 大阪勉強会 #57
22.
CPPメタプログラミング • C プリプロセッサを用いた技法 –
現在も使われている – やっていることはテキスト置換による強引な置換 処理 – その昔,Generic.hというのがあって今で言う std::stack,std::vector相等のコンテナとかが提 供されていたらしい わんくま同盟 大阪勉強会 #57
23.
Template メタプログラミング • Templateを使ったメタプログラミング技法が 主流 –
特殊化・部分特殊化を活用して,コンパイル時の 型情報を基にメタプログラミング – この技法をtemplate metaprogrammingという • チューリング完全である – すべての制御構造を表現できる – 繰り返しは再帰 – 条件分岐はtemplateの特殊化で実現可能 わんくま同盟 大阪勉強会 #57
24.
Constexpr メタプログラミング • constexprはコンパイル時定数を明示するキー ワード –
const = readonly – constexpr = const • C++11から導入されたconstexprを使ったメタプ ログラミグ技法 – GCC,CLANGではサポート済み – 残念ながらVisual Studio 2013ではまだ提供されて いない.Visual Studio 2013 CTPで提供予定らしい – C++14では制限が緩和されるので,また新しく技法が 出てくるかも わんくま同盟 大阪勉強会 #57
25.
Template メタプログラミングの例 • templateを使った制御構造の実装例 –
Template再帰による繰り返し構造 – 特殊化による分岐制御 • メタ関数の例 – コンパイル時定数に基づく型の選択 – コンパイル時計算 わんくま同盟 大阪勉強会 #57
26.
まとめ • コンパイル時/プリプロセス時におけるパラ メータを使った,静的な多態性に基づくメタプ ログラミング • 再帰上限など翻訳単位などいくつかの制限は あるもののかなり高度なことが実現可能 –
コンパイル時にほとんどのアルゴリズムが解ける わんくま同盟 大阪勉強会 #57
27.
C#におけるメタプログラミング わんくま同盟 大阪勉強会 #57
28.
C#におけるメタプログラミング • 言語機能で提供されている機能はC++に比 べると貧弱 • しかし,BCLや外部ツールでメタプログラミン グするためのツールが用意されている –
Reflection,dynamic – Expression Tree, CodeDom – T4, Roslyn わんくま同盟 大阪勉強会 #57
29.
リフレクション • .NET のプログラムには –
コード・データ以外に,「プログラムの情報を表現 する」メタデータが含まれている • メタデータとは – プログラム自身を表すデータ • 型,メソッド,アセンブリなどの情報 – NET Framework 自体が自己記述的であるため, 豊富なメタデータが付与できる わんくま同盟 大阪勉強会 #57
30.
リフレクションでできること • Reflectionでできること=メタデータの操作 – 任意の型の列挙 –
アセンブリの動的ロード – メソッド,カスタム属性,フィールドの操作 – Etc. わんくま同盟 大阪勉強会 #57
31.
dynamic • 動的型付けのキーワード – コンパイル時にメンバー情報がわからない型への メンバーアクセスが可能 –
変数宣言の型のところに dynamic キーワード – dynamic keyword は context sensitive keywordであるため,変数宣言のステートメントで のみ有効 • var キーワードと似ているが,型解決されるタ イミングが違う – varはコンパイル時,dynamicは実行時 わんくま同盟 大阪勉強会 #57
32.
dynamic • 遅延バインド(late binding) –
DLR との連携で有効 • ダックタイピング(duck typing) – XML や JSON などスキーマの緩いデータとの連 携で有効 • ジェネリクス利用時の静的メソッド呼び出し • 多重ディスパッチ • Etc. わんくま同盟 大阪勉強会 #57
33.
Dynamicのメカニズム • C# の
dynamic は、「型が動的」というより「静的 な型を動的に生成」と言った方が正確 – 実行時の動的コード生成を使って実現されている – ILを確認するとわかりやすい • dynamic 型の変数に格納されたインスタンスの 型に応じて、以下のいずれかのコードが生成さ れる – .NETオブジェクト – COM オブジェクト – 動的にカスタマイズされるオブジェクト わんくま同盟 大阪勉強会 #57
34.
動的なアセンブリのロード • アセンブリを動的にロードして呼び出す • 後からモジュールの挿入が可能 –
機能追加・拡張しやすい • 同じアプリケーション ドメインに相手がいれば、 通信のオーバーヘッドは無くすことができる • サンプル わんくま同盟 大阪勉強会 #57
35.
リフレクションによる型の列挙 • 該当する型のみを列挙 • 実行時に動的にメンバを操作する •
サンプル わんくま同盟 大阪勉強会 #57
36.
T4 Text Template •
コード生成ツール – VisualStudio Professional 以上は標準でサポー トされている – テキストテンプレート(*.tt) • ASP.NETと似た構造のテンプレートファイル に書かれた内容からテキストファイルを生成 せることができる – 設定ファイルやテストデータの生成 – プログラムコードの生成 わんくま同盟 大阪勉強会 #57
37.
<#@ template debug="false"
hostspecific="false" language="C#" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> <#@ output extension=".txt" #> <# for(int i = 0; i < 4; i++) { #> The square of <#= i #> is <#= Square(i+1) #>. <# } #> That is the end of the list. <#+ private int Square(int i) { return i*i; } わんくま同盟 大阪勉強会 #57
38.
Roslyn • Compiler as
a Service – 2008年のMS Developer ConferenceでAnders HelsbergがC#の将来について述べた – コンパイラのブラックボックス機能を外部デベロッ パに提供する – コンパイラのAPIを公開したもの • 安定してきてるらしい→近いうちに正式リリー ス? わんくま同盟 大阪勉強会 #57
39.
Roslyn • Compilers, Scripting
Layer • Service Layers • Editor Service Layers わんくま同盟 大阪勉強会 #57
40.
NuGetからインストールできます わんくま同盟 大阪勉強会 #57
41.
Conclusion • 言語機能ではC++に劣るものの,Reflection を使ってメタデータを操作することができる • T4やRoslynなどの補助ツールが存在するた め大抵のことができるみたいです •
今回紹介したのは,本当にごくごく一部です. 是非研究してみてください わんくま同盟 大阪勉強会 #57
42.
Reference • • • • • • ジェネレーティブプログラミング メタプログラミング .NET プログラミング.NET Framework プログラミング
C# 計算機プログラムの構造と解釈 MSDN わんくま同盟 大阪勉強会 #57
43.
ご清聴ありがとうございました わんくま同盟 大阪勉強会 #57
Jetzt herunterladen