SlideShare a Scribd company logo
1 of 36
Download to read offline
闇魔術を触ってみた
KMC ID:dtyazsk
自己紹介
• K都大学に通う理学部生
• 例会講座(FizzBuzz)と春合宿講座(文字列型までがんばる)のせいで
もしかしたらコンパイル時処理狂と思われているかもだが
普段はVC++とDXライブラリでゲーム作ってます(constexprがない)
• 冷やしF#始めました
闇魔術is
• C++のことではない
• C++にはboostってライブラリがある
• そこにめっちゃヤバイライブラリがある
BOOST_PP
• boost¥preprocessor.hppに入ってるマクロ群
• 本講座でやったコンパイル時より前、プリプロセス時にやる闇魔術
• TMPとかではできないとんでもないことができる
• 一昨日唐突に使いたくなった
• C言語でも使えるのかなぁ(誰か試してぽよ)
• C++的コードに組み込んで使用例にしてますが別にC的な使い方も出来ます
例えば
BOOST_PP_ADD
• 足し算してくれる
• 例えばBOOST_PP_ADD(3,5)で8に展開される
BOOST_PP_BOOL
• 渡したものが1から255に展開されるなら1、そうでないなら0
• 例えばBOOST_PP_BOOL(10)で1に展開される
• 闇っぽくないな?
プリプロセッサでは
• 型も値もクソもなく2+5とかいう式も評価されない
• すなわちさっきのマクロではきちんと5とかで渡さないといけない
• 例えばBOOST_PP_BOOLでtrueとか渡しても機能しないので注意
• 数値に展開されるマクロならおk
• ただ大きすぎるとマクロの再帰深度限界に達するらしい…
• どういう実装してるんだ
他にも
BOOST_PP_CAT
• トークン名結合
• BOOST_PP_CAT(text,2)でtext2に展開される
• 何かと便利(index_tupleイディオムのヘルパーで使おうと考えてた)
BOOST_PP_STRINGIZE
• 渡したトークンを文字列化する
• static_assertの第2引数に渡すこともできる
• 他にもなんか使えそう
BOOST_PP_CATを使ってみる
• とりあえずindex_tupleとindex_countが定義されてるとする
• これらについては本講座のスライド参照
#define INDEX_COUNT(from,to)¥
template<class>class BOOST_PP_CAT(index_count_help_, from); ¥
template<int... Nums>¥
class BOOST_PP_CAT(index_count_help_, from)¥
<index_tuple<Nums...>>{¥
public:¥
using type = from <Nums...>; }; ¥
template<size_t N>¥
using to = typename BOOST_PP_CAT(index_count_help_, from)¥
<typename index_count<N>::type>::type;
上から説明します
BOOST_PP_CATを使ってみる
• とりあえずindex_tupleとindex_countが定義されてるとする
• これらについては本講座のスライド参照
#define INDEX_COUNT(from,to)¥
template<class>class BOOST_PP_CAT(index_count_help_, from); ¥
template<int... Nums>¥
class BOOST_PP_CAT(index_count_help_, from)¥
<index_tuple<Nums...>>{¥
public:¥
using type = from <Nums...>; }; ¥
template<size_t N>¥
using to = typename BOOST_PP_CAT(index_count_help_, from)¥
<typename index_count<N>::type>::type;
引数をfromとtoに代入して展開するマクロを定義
BOOST_PP_CATを使ってみる
• とりあえずindex_tupleとindex_countが定義されてるとする
• これらについては本講座のスライド参照
#define INDEX_COUNT(from,to)¥
template<class>class BOOST_PP_CAT(index_count_help_, from); ¥
template<int... Nums>¥
class BOOST_PP_CAT(index_count_help_, from)¥
<index_tuple<Nums...>>{¥
public:¥
using type = from <Nums...>; }; ¥
template<size_t N>¥
using to = typename BOOST_PP_CAT(index_count_help_, from)¥
<typename index_count<N>::type>::type;
トークン名結合してよくわからないクラスができる
BOOST_PP_CATを使ってみる
• とりあえずindex_tupleとindex_countが定義されてるとする
• これらについては本講座のスライド参照
#define INDEX_COUNT(from,to)¥
template<class>class BOOST_PP_CAT(index_count_help_, from); ¥
template<int... Nums>¥
class BOOST_PP_CAT(index_count_help_, from)¥
<index_tuple<Nums...>>{¥
public:¥
using type = from <Nums...>; }; ¥
template<size_t N>¥
using to = typename BOOST_PP_CAT(index_count_help_, from)¥
<typename index_count<N>::type>::type;
index_tupleで特殊化
BOOST_PP_CATを使ってみる
• とりあえずindex_tupleとindex_countが定義されてるとする
• これらについては本講座のスライド参照
#define INDEX_COUNT(from,to)¥
template<class>class BOOST_PP_CAT(index_count_help_, from); ¥
template<int... Nums>¥
class BOOST_PP_CAT(index_count_help_, from)¥
<index_tuple<Nums...>>{¥
public:¥
using type = from <Nums...>; }; ¥
template<size_t N>¥
using to = typename BOOST_PP_CAT(index_count_help_, from)¥
<typename index_count<N>::type>::type;
fromにNums…を渡したやつでtypeにエイリアス
BOOST_PP_CATを使ってみる
• とりあえずindex_tupleとindex_countが定義されてるとする
• これらについては本講座のスライド参照
#define INDEX_COUNT(from,to)¥
template<class>class BOOST_PP_CAT(index_count_help_, from); ¥
template<int... Nums>¥
class BOOST_PP_CAT(index_count_help_, from)¥
<index_tuple<Nums...>>{¥
public:¥
using type = from <Nums...>; }; ¥
template<size_t N>¥
using to = typename BOOST_PP_CAT(index_count_help_, from)¥
<typename index_count<N>::type>::type;
上のクラスにindex_countのtype渡してtoにエイリアス
さっきの例の使い方
template<int… Nums>class sum_type{
static int get(){
int ret();
for(const auto& x : {Nums…} )
ret+=x;
return ret;
}
};
INDEX_COUNT(sum,sum_type)
cout<<sum<10>::get()<<endl;//45が出力される
• つまりsum<10>でsum_type<0,1,2,3,4,5,6,7,8,9>に同じになる
• BOOST_PP_CATめっちゃ便利っぽい?
BOOST_PP_IF
• BOOST_PP_IF(cond, t, f)で定義されてる
• condには0から255に展開されるマクロ、または数値直打ち
• condが0ならtに、そうでないならfに展開される
• あれ、案外普通?
#include<boost¥preprocessor.hpp>
#include<iostream>
int main()
{
std::cout<<BOOST_PP_IF(3,”Hello World!”,42)<<std::endl;
}
ん?
コンパイル時では出来ないことやっとる
• 条件演算子でさっきの芸当は不可能
• 条件演算子では結果の2つの型に互換性が必要
• ってMSVCがエラー吐いた
• プリプロセッサなので機械的に展開された
• すなわちコンパイル時にはすでに”Hello World!!”になってたってこと
• でもまだ闇っぽくない
• 十分ヤバイニオイしてきてる気がしないこともない
BOOST_PP_ENUM
• BOOST_PP_ENUM(count, macro, data)
• countに255以下の数字を入れる
• macroにはマクロを入れる
• macro(z,0,data),macro(z,1,data),…,macro(z,count-1,data)展開される
• zが謎すぎて謎だが見たところ2が渡されてるっぽい?
• 下手に触れないほうがいいっぽいです
例
#define TYPE_DECLARE(z,n,type) class BOOST_PP_CAT(type,n)
template<BOOST_PP_ENUM(16,TYPE_DECLARE,Type)>class test{};
ホラーが起こってる
• テンプレート引数16個とか人間が作るテンプレートクラスじゃねぇ
• 普通に可変長引数テンプレートでいいじゃんってツッコミ待ち
• 凄いヤバイっぽい
• ちなみにBOOST_PP_ENUM_SHIFTEDで1からの展開になります
BOOST_PP_REPEAT
• BOOST_PP_REPEAT(count, macro, data)
• さっきのカンマない版
• スペース1個は開けてくれてる
• やなニオイがプンプン
使い方
#define DECLARE(z,n,type)¥
class BOOST_PP_CAT(type, n){ static const int x = n; };
BOOST_PP_REPEAT(32, DECLARE, test)
これヤバ過ぎるでしょ
• 似たようなクラスを大量定義するのにオススメ
• 他にも大量の足し算するときとか
• やっぱりアホ感拭えない
• BOOST_PP_REPEAT_FROM_TOで第1引数から第2引数-1まで展開
とりあえずFizzBuzzする
• テクニック知ってFizzBuzz試すのは礼儀(ほんまか)
• BOOST_PP_STRINGIZEとstatic_assertでコンパイルエラーメーセージで
出します
まずは倍数チェック
• BOOST_PP_EQUAL(x,y)でxとyが同じなら1、そうでないなら0
• 正確にはxとyが同じものに展開するマクロまたは数値
• それとBOOST_PP_MODとBOOST_PP_IFを使えば
「xがyの倍数ならt、そうでないならfに展開する」マクロを作れる
というわけで
#define MOD_IF(n,m,t,f)¥
BOOST_PP_IF(¥
BOOST_PP_EQUAL(¥
BOOST_PP_MOD(n,m),¥
0),¥
t,¥
f)
• 説明は不要だよね
FizzBuzzのための文字列
• FizzBuzzのルールを思い出す
• まず3の倍数であるかチェック
• 3の倍数なら「5の倍数ならFizzBuzz、そうでないならFizz」
• そうでないなら「5の倍数ならBuzz、そうでないならその数字」
• というわけでさっきのMOD_IF使う
• こんな感じ
#define FizzBuzzLoop(z,n,t)¥
MOD_IF(n,3,MOD_IF(n,5,FizzBuzz,Fizz),MOD_IF(n,5,Buzz,n))
• この引数の取り方はBOOST_PP_REPEAT_FROM_TOのため
出力
BOOST_PP_STRINGIZE(BOOST_PP_REPEAT_FROM_TO(1,16,FizzBuzzLoop,t))
• 「さっきのFizzBuzzLoopを1から15まで展開」したものを文字列化する
• 自明なこと解説しないマンは自明なこと解説しないんじゃ
• インテリセンス便利
• GCCにパス通すの面倒だった(VC++では前から通してた)
まだまだ闇の途中
• boost¥preprocessor.hppではもっとマクロが定義されている
• またコンパイラ定義済みマクロもそれなりにある
• これらを使いこなしてこそ上級闇魔導師になれるはず
• 俺たちの戦いはこれからだ
• こんなことやってる暇あったら実行時C++やってる方がいい
おまけ
• ヒープ食いつぶした
• どのタイミングで
食いつぶしたんだ
• インテリセンス死ぬので
良い子は真似しない
参考資料
• C++でゲームプログラミング http://d.hatena.ne.jp/osyo-manga/
• BOOST_PP http://d.hatena.ne.jp/osyo-manga/20100906/1285986310
• Boost.Preprocessorでプログラミングしましょう
http://www.slideshare.net/digitalghost/boostpp
• Boost.ppのリファレンス
http://www.boost.org/doc/libs/1_44_0/libs/preprocessor/doc/ref.html
終わり
ご清聴ありがとうございました

More Related Content

What's hot

中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)Hiro H.
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門Eita Sugimoto
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!Akihiro Nishimura
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Hiro H.
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
Parser combinatorってなんなのさ
Parser combinatorってなんなのさParser combinatorってなんなのさ
Parser combinatorってなんなのさcct-inc
 
C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話Kinuko Yasuda
 
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSA quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSYoshifumi Kawai
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールMITSUNARI Shigeo
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGoTakuya Ueda
 

What's hot (20)

中3女子でもわかる constexpr
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexpr
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
 
すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
Parser combinatorってなんなのさ
Parser combinatorってなんなのさParser combinatorってなんなのさ
Parser combinatorってなんなのさ
 
C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSSA quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
LLVM最適化のこつ
LLVM最適化のこつLLVM最適化のこつ
LLVM最適化のこつ
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGo
 

Similar to 闇魔術を触ってみた

リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道Satoshi Sato
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らないdigitalghost
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装Shinya Akiba
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61TATSUYA HAYAMIZU
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料真一 北原
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialTatsuya Tojima
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Springanyakichi
 
Pythonのデータ型をもっと理解する
Pythonのデータ型をもっと理解するPythonのデータ型をもっと理解する
Pythonのデータ型をもっと理解するmalo 21st
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門Shiqiao Du
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜Hiromi Ishii
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016kyoto university
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)Shoji Haraguchi
 
C++でぼくが忘れがちなこと
C++でぼくが忘れがちなことC++でぼくが忘れがちなこと
C++でぼくが忘れがちなことToshihiko Ando
 
インデントを減らそう
インデントを減らそうインデントを減らそう
インデントを減らそう知之 朝枝
 
DSIRNLP06 Nested Pitman-Yor Language Model
DSIRNLP06 Nested Pitman-Yor Language ModelDSIRNLP06 Nested Pitman-Yor Language Model
DSIRNLP06 Nested Pitman-Yor Language ModelKei Uchiumi
 

Similar to 闇魔術を触ってみた (20)

リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
 
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 
C++の復習
C++の復習C++の復習
C++の復習
 
Pythonのデータ型をもっと理解する
Pythonのデータ型をもっと理解するPythonのデータ型をもっと理解する
Pythonのデータ型をもっと理解する
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
 
What is template
What is templateWhat is template
What is template
 
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
 
DTrace for biginners part(2)
DTrace for biginners part(2)DTrace for biginners part(2)
DTrace for biginners part(2)
 
C++でぼくが忘れがちなこと
C++でぼくが忘れがちなことC++でぼくが忘れがちなこと
C++でぼくが忘れがちなこと
 
インデントを減らそう
インデントを減らそうインデントを減らそう
インデントを減らそう
 
DSIRNLP06 Nested Pitman-Yor Language Model
DSIRNLP06 Nested Pitman-Yor Language ModelDSIRNLP06 Nested Pitman-Yor Language Model
DSIRNLP06 Nested Pitman-Yor Language Model
 

Recently uploaded

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 

Recently uploaded (9)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 

闇魔術を触ってみた