SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
C#でもメタプロがしたい!!
@thayamizu

わんくま同盟 大阪勉強会 #57
おしながき

•
•
•
•

イントロダクション
メタプログラミング
C++におけるメタプログラミング
C#におけるメタプログラミング

わんくま同盟 大阪勉強会 #57
イントロダクション

わんくま同盟 大阪勉強会 #57
自己紹介

• H.N:Crest
– Twitter @thayamizu
– Blog http://d.hatena.ne.jp/Crest
– 博士(情報学)

• 職業:PG
• 趣味:カラオケ・プログラミング・イラスト・読書
• よく使う言語:C++/VC++, C#

わんくま同盟 大阪勉強会 #57
自己紹介

• 勉強会・読書会やってます
– Effective C++ 読書会 (終了)
– Exceptional C++読書会(開催中)
– 型システム入門読書会 (開催中)
– 来年はVisualStudioハッカソン倶楽部で
playgroundハッカソンやります

わんくま同盟 大阪勉強会 #57
諸注意

このセッションにおける発言は個
人のものであり特定の組織に帰属
するものではありません

わんくま同盟 大阪勉強会 #57
諸注意

ツッコミ歓迎です

わんくま同盟 大阪勉強会 #57
メタプログラミングとは

わんくま同盟 大阪勉強会 #57
メタって?

• メタ(meta - )
– 語源はギリシャ語のmeta – から
– 高次の~,超~,~の間などの意味がある

• レベルの変化を示すのに使われる
– 物理学(physics)→形而上学(meta-physics)
– 心理学(psychology)→超心理学(metapsychology)

わんくま同盟 大阪勉強会 #57
メタプログラムとメタプログラミング

• メタプログラム
– 他のプログラムや自分自身を記述したり操作する
プログラム
– プログラムからプログラムを生成したり加工する
ようなプログラム

• メタプログラミング
– 上のようなプログラムを作成する行為
– メタプラグラムをプログラミングすること
わんくま同盟 大阪勉強会 #57
メタプログラムの例

• メタプログラムの例
– プログラムジェネレータ
– コンパイラ,インタプリタ
– マクロ
– オプティマイザ
– リファクタリングツール

わんくま同盟 大阪勉強会 #57
なんだか難しそう・・ (´・ω・`)

わんくま同盟 大阪勉強会 #57
そもそもメタプログラミングの
何が嬉しいの?

わんくま同盟 大阪勉強会 #57
モチベーション

• 個別のソフトウェアコンポーネントを自動的に
構成したり,個別に構成されたコンポーネント
を自動的に組み合わせたい

わんくま同盟 大阪勉強会 #57
モチベーション

• システムの環境変化に合わせて調整したい
– システムの負荷に合わせたスケジューリングや
キャッシュシステムの自動的な修正
– 新しい環境へデプロイする前に必要なアダプタを
自動生成する能力

わんくま同盟 大阪勉強会 #57
メタプログラミングの利点

• システムが環境に合わせて適応できる能力を
順応性(Adaptivity)という
– 興味深いことに,システムの順応性は実行時限
定されません
– プログラムのビルド時に環境に適合するようなラ
イブラリコードは実現可能

• メタプログラミングは,このような順応性
(Adaptivity)の高いシステムを作るための手
段の一つ
わんくま同盟 大阪勉強会 #57
メタプログラミングのための機能

• 実行時型情報(RunTime Type Information, RTTI)
– GetType,typeof

• Template, Generics
– 型をパラメタライズするメカニズム
– 型に依存しないコンテナやアルゴリズムの実装が可能

• マクロ
– C++のマクロはテキスト置換なので結構なんでもできる
– C#ではプリプロセッサは用意されているものの,マクロ機
能は言語的に存在してない
わんくま同盟 大阪勉強会 #57
メタプログラミングのための機能

• リフレクション(reflection)
– プログラムが実行中にその状態を表現するデー
タとして自分自身を操作できる機能
• 型名の取得,メソッド・フィールド情報の取得・設定

• イントロスペクション(introspection)
– プログラム自身の状態を解析するメカニズム

• リアフィケーション(reification)
– プログラム自身の状態をデータとして符号化する
メカニズム
わんくま同盟 大阪勉強会 #57
まとめ

• メタプログラミングとはプログラムを編集・加工
するプログラムを作成する行為
• これにより,移植性・順応性が高く,環境の変
化に応じて動的に修正可能なプログラム
– 実際の事例も幾つか存在する(GMCLなど)
– しかし,あくまで理論上であって実際のビジネスに
応用するにはかなり難度が高い

わんくま同盟 大阪勉強会 #57
C++におけるメタプログラミング

わんくま同盟 大阪勉強会 #57
C++におけるメタプログラミング

• C++で行われるメタプログラミング手法は現
在主に3つある
– CPP( C PreProcessor ) を使ったプリプロセス時
メタプログラミング
– Templateを使ったコンパイル時メタプログラミン
グ
– Constexprを使ったコンパイル時メタプログラミン
グ

わんくま同盟 大阪勉強会 #57
CPPメタプログラミング

• C プリプロセッサを用いた技法
– 現在も使われている
– やっていることはテキスト置換による強引な置換
処理
– その昔,Generic.hというのがあって今で言う
std::stack,std::vector相等のコンテナとかが提
供されていたらしい

わんくま同盟 大阪勉強会 #57
Template メタプログラミング

• Templateを使ったメタプログラミング技法が
主流
– 特殊化・部分特殊化を活用して,コンパイル時の
型情報を基にメタプログラミング
– この技法をtemplate metaprogrammingという

• チューリング完全である
– すべての制御構造を表現できる
– 繰り返しは再帰
– 条件分岐はtemplateの特殊化で実現可能
わんくま同盟 大阪勉強会 #57
Constexpr メタプログラミング

• constexprはコンパイル時定数を明示するキー
ワード
– const = readonly
– constexpr = const

• C++11から導入されたconstexprを使ったメタプ
ログラミグ技法
– GCC,CLANGではサポート済み
– 残念ながらVisual Studio 2013ではまだ提供されて
いない.Visual Studio 2013 CTPで提供予定らしい
– C++14では制限が緩和されるので,また新しく技法が
出てくるかも
わんくま同盟 大阪勉強会 #57
Template メタプログラミングの例

• templateを使った制御構造の実装例
– Template再帰による繰り返し構造
– 特殊化による分岐制御

• メタ関数の例
– コンパイル時定数に基づく型の選択
– コンパイル時計算

わんくま同盟 大阪勉強会 #57
まとめ

• コンパイル時/プリプロセス時におけるパラ
メータを使った,静的な多態性に基づくメタプ
ログラミング

• 再帰上限など翻訳単位などいくつかの制限は
あるもののかなり高度なことが実現可能
– コンパイル時にほとんどのアルゴリズムが解ける

わんくま同盟 大阪勉強会 #57
C#におけるメタプログラミング

わんくま同盟 大阪勉強会 #57
C#におけるメタプログラミング

• 言語機能で提供されている機能はC++に比
べると貧弱
• しかし,BCLや外部ツールでメタプログラミン
グするためのツールが用意されている
– Reflection,dynamic
– Expression Tree, CodeDom
– T4, Roslyn

わんくま同盟 大阪勉強会 #57
リフレクション

• .NET のプログラムには
– コード・データ以外に,「プログラムの情報を表現
する」メタデータが含まれている

• メタデータとは
– プログラム自身を表すデータ
• 型,メソッド,アセンブリなどの情報

– NET Framework 自体が自己記述的であるため,
豊富なメタデータが付与できる
わんくま同盟 大阪勉強会 #57
リフレクションでできること

• Reflectionでできること=メタデータの操作
– 任意の型の列挙
– アセンブリの動的ロード
– メソッド,カスタム属性,フィールドの操作
– Etc.

わんくま同盟 大阪勉強会 #57
dynamic

• 動的型付けのキーワード
– コンパイル時にメンバー情報がわからない型への
メンバーアクセスが可能
– 変数宣言の型のところに dynamic キーワード
– dynamic keyword は context sensitive
keywordであるため,変数宣言のステートメントで
のみ有効

• var キーワードと似ているが,型解決されるタ
イミングが違う
– varはコンパイル時,dynamicは実行時
わんくま同盟 大阪勉強会 #57
dynamic

• 遅延バインド(late binding)
– DLR との連携で有効

• ダックタイピング(duck typing)
– XML や JSON などスキーマの緩いデータとの連
携で有効

• ジェネリクス利用時の静的メソッド呼び出し
• 多重ディスパッチ
• Etc.
わんくま同盟 大阪勉強会 #57
Dynamicのメカニズム

• C# の dynamic は、「型が動的」というより「静的
な型を動的に生成」と言った方が正確
– 実行時の動的コード生成を使って実現されている
– ILを確認するとわかりやすい

• dynamic 型の変数に格納されたインスタンスの
型に応じて、以下のいずれかのコードが生成さ
れる
– .NETオブジェクト
– COM オブジェクト
– 動的にカスタマイズされるオブジェクト
わんくま同盟 大阪勉強会 #57
動的なアセンブリのロード

• アセンブリを動的にロードして呼び出す
• 後からモジュールの挿入が可能
– 機能追加・拡張しやすい

• 同じアプリケーション ドメインに相手がいれば、
通信のオーバーヘッドは無くすことができる

• サンプル

わんくま同盟 大阪勉強会 #57
リフレクションによる型の列挙

• 該当する型のみを列挙
• 実行時に動的にメンバを操作する
• サンプル

わんくま同盟 大阪勉強会 #57
T4 Text Template

• コード生成ツール
– VisualStudio Professional 以上は標準でサポー
トされている
– テキストテンプレート(*.tt)

• ASP.NETと似た構造のテンプレートファイル
に書かれた内容からテキストファイルを生成
せることができる
– 設定ファイルやテストデータの生成
– プログラムコードの生成
わんくま同盟 大阪勉強会 #57
<#@ 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
Roslyn

• Compiler as a Service
– 2008年のMS Developer ConferenceでAnders
HelsbergがC#の将来について述べた
– コンパイラのブラックボックス機能を外部デベロッ
パに提供する
– コンパイラのAPIを公開したもの

• 安定してきてるらしい→近いうちに正式リリー
ス?

わんくま同盟 大阪勉強会 #57
Roslyn

• Compilers, Scripting Layer
• Service Layers
• Editor Service Layers

わんくま同盟 大阪勉強会 #57
NuGetからインストールできます

わんくま同盟 大阪勉強会 #57
Conclusion

• 言語機能ではC++に劣るものの,Reflection
を使ってメタデータを操作することができる
• T4やRoslynなどの補助ツールが存在するた
め大抵のことができるみたいです
• 今回紹介したのは,本当にごくごく一部です.
是非研究してみてください

わんくま同盟 大阪勉強会 #57
Reference

•
•
•
•
•
•

ジェネレーティブプログラミング
メタプログラミング .NET
プログラミング.NET Framework
プログラミング C#
計算機プログラムの構造と解釈
MSDN

わんくま同盟 大阪勉強会 #57
ご清聴ありがとうございました

わんくま同盟 大阪勉強会 #57

Contenu connexe

Tendances

Tendances (20)

40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow) UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
 
Unityと.NET
Unityと.NETUnityと.NET
Unityと.NET
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
 
インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021インディーゲーム開発の現状と未来 2021
インディーゲーム開発の現状と未来 2021
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 

En vedette

Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Yoshifumi Kawai
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
 
Demystifying dot NET reverse engineering - Part1
Demystifying  dot NET reverse engineering - Part1Demystifying  dot NET reverse engineering - Part1
Demystifying dot NET reverse engineering - Part1
Soufiane Tahiri
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
Manato KAMEYA
 
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
外道 父
 

En vedette (20)

Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
メタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらばメタプログラミングでExcel仕様書よさらば
メタプログラミングでExcel仕様書よさらば
 
T4使ってみた
T4使ってみたT4使ってみた
T4使ってみた
 
T4 Template 入門
T4 Template 入門T4 Template 入門
T4 Template 入門
 
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
 
2014 08-30 life with roslyn
2014 08-30 life with roslyn2014 08-30 life with roslyn
2014 08-30 life with roslyn
 
中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
Beachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JITBeachhead implements new opcode on CLR JIT
Beachhead implements new opcode on CLR JIT
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#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# RPCZeroFormatter/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 - Part1Demystifying  dot NET reverse engineering - Part1
Demystifying dot NET reverse engineering - Part1
 
Dockerとdev ops
Dockerとdev opsDockerとdev ops
Dockerとdev ops
 
Lync でできる? 仕事効率化
Lync でできる? 仕事効率化Lync でできる? 仕事効率化
Lync でできる? 仕事効率化
 
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
第2回 ioDrive+MySQL勉強会 @外道父 ioDriveの世界へようこそ
 
ソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごとソシャゲにおけるサーバとクライアントの決めごと
ソシャゲにおけるサーバとクライアントの決めごと
 

Similaire à C#でもメタプログラミングがしたい!!

10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
 
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
 

Similaire à C#でもメタプログラミングがしたい!! (20)

10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
 
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う  ~ 概念モデリング教本を元に ~ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う  ~ 概念モデリング教本を元に ~
ChatGPT(LLMによる生成系AI)の追加学習を No Code で行う ~ 概念モデリング教本を元に ~
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会プログラミング同好会とすごい合同勉強会
プログラミング同好会とすごい合同勉強会
 
業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド業務システム開発モダナイゼーションガイド
業務システム開発モダナイゼーションガイド
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
システム設計の原則
システム設計の原則システム設計の原則
システム設計の原則
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】大人の基礎C#【Niigat.NET 2015-10】
大人の基礎C#【Niigat.NET 2015-10】
 
iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"iii_SGMI #5 "OOP & Design Patterns"
iii_SGMI #5 "OOP & Design Patterns"
 
モデルベースソフトウェア開発
モデルベースソフトウェア開発モデルベースソフトウェア開発
モデルベースソフトウェア開発
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
 
WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?WordPress中級者への道!テンプレートタグはどう動くのか!?
WordPress中級者への道!テンプレートタグはどう動くのか!?
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
研究生のためのC++ no.6
研究生のためのC++ no.6研究生のためのC++ no.6
研究生のためのC++ no.6
 

Plus de TATSUYA HAYAMIZU

20131123 playgroundハッカソン
20131123 playgroundハッカソン20131123 playgroundハッカソン
20131123 playgroundハッカソン
TATSUYA HAYAMIZU
 
Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化
TATSUYA HAYAMIZU
 
Metro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきたMetro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきた
TATSUYA HAYAMIZU
 
より良いコードを書くための
より良いコードを書くためのより良いコードを書くための
より良いコードを書くための
TATSUYA HAYAMIZU
 

Plus de TATSUYA HAYAMIZU (11)

コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
コンピュータの舞台裏 Vol.08 - 身近な事例からひも解く人工知能
 
わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門わんくま同盟大阪勉強会 Vol.65 electron入門
わんくま同盟大阪勉強会 Vol.65 electron入門
 
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
わんくま同盟大阪勉強会 Vol.68 LT - ラブライブ!サンシャイン!聖地巡礼に入った話
 
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
わんくま同盟大阪勉強会 Vol.68 - Visual Studio Code 拡張機能作成入門
 
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
わんくま大阪勉強会 Vol.65 LT 翻訳で貢献
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
20131123 playgroundハッカソン
20131123 playgroundハッカソン20131123 playgroundハッカソン
20131123 playgroundハッカソン
 
Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化Visual studioによるビルドプロセスの自動化
Visual studioによるビルドプロセスの自動化
 
Metro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきたMetro style ハッカソンに参加してきた
Metro style ハッカソンに参加してきた
 
より良いコードを書くための
より良いコードを書くためのより良いコードを書くための
より良いコードを書くための
 
ゲームノシクミ
ゲームノシクミゲームノシクミ
ゲームノシクミ
 

C#でもメタプログラミングがしたい!!