コルーチンの使い方

コルーチンの使い方
概要
プログラミングの技術のひとつ「コルーチン」に
ついて解説します。
コルーチンを用いたビューとロジックの分離につ
いて解説します。
主にC#を使ったプログラミングを対象としていま
す。
宣伝もあるよ
私は誰なのか
HN:ナムアニクラウド
Twitter: @NumAniCloud
筑波大学AmusementCreators
ゲーム制作サークルNumber-Animal
主にC#プログラミングをする
Twitterアイコン
フリゲ作りました
「冒険者は森に強い」を作りました。遊んでみてね。
コルーチンの使い方
コルーチンとは?
プログラミング言語の機能のひとつ。
関数とかメソッドの仲間
途中で抜けて、後で再開することができる
public IEnumerator Coroutine()
{
Hoge();
yield return null; // ここで一旦抜ける
Hoge(); // あとで実行する
}
定義・実行イメージ
IEnumerator Coroutine(){
Hoge();
yield return null;
Hoge();
Hoge();
yield return null;
yield return null;
}
void Main(){
var c = Coroutine();
c.MoveNext();
Hoge();
c.MoveNext();
c.MoveNext();
c.MoveNext();
}
定義側 利用側
定義・実行イメージ
IEnumerator Coroutine(){
Hoge();
yield return null;
Hoge();
Hoge();
yield return null;
yield return null;
}
void Main(){
var c = Coroutine();
c.MoveNext();
Hoge();
c.MoveNext();
c.MoveNext();
c.MoveNext();
}
定義側 利用側
定義・実行イメージ
IEnumerator Coroutine(){
Hoge();
yield return null;
Hoge();
Hoge();
yield return null;
yield return null;
}
void Main(){
var c = Coroutine();
c.MoveNext();
Hoge();
c.MoveNext();
c.MoveNext();
c.MoveNext();
}
定義側 利用側
定義・実行イメージ
IEnumerator Coroutine(){
Hoge();
yield return null;
Hoge();
Hoge();
yield return null;
yield return null;
}
void Main(){
var c = Coroutine();
c.MoveNext();
Hoge();
c.MoveNext();
c.MoveNext();
c.MoveNext();
}
定義側 利用側
定義・実行イメージ
IEnumerator Coroutine(){
Hoge();
yield return null;
Hoge();
Hoge();
yield return null;
yield return null;
}
void Main(){
var c = Coroutine();
c.MoveNext();
Hoge();
c.MoveNext();
c.MoveNext();
c.MoveNext();
}
定義側 利用側
前提:ゲームループ
更新
描画
多くのゲームプログラムの基本設計
プレイヤー
の更新
敵1の更新 敵2の更新 ……
プレイヤー
の描画
敵1の描画 敵2の描画 ……
1秒間に何度も繰り返す。ループ1回を1フレームという
例
• 下へ移動開始
• 120F待つ
• 5回繰り返す
• 弾を撃つ
• 60F待つ
void Behave(){
下へ移動開始;
120F待つ;
5回繰り返す{
弾を撃つ;
60F待つ;
}
}
書きたいモデルがそのまま書けるのはひとつの理想
だが…
やりたいこと 理想のコード
例 の敵のルーチン
• 下へ移動開始
• 120F待つ
• 5回繰り返す
• 弾を撃つ
• 60F待つ
更新メソッド
ここで処理を止めたいが、そうすると
ゲーム(ゲームループ)全体が止まってし
まう!
void Update(){
下へ移動開始;
120F待つ;
5回繰り返す{
弾を撃つ;
60F待つ;
}
}
ベタな実装
int time = 0;
void Update(){
if(time == 0){
下へ移動開始;
}
if(time => 120 &&
(time - 120) % 60 == 0 &&
time < 120 + 60 * 5){
弾を撃つ;
}
}
毎フレーム呼び出してもらうしかない
ベタな実装
int time = 0;
void Update(){
if(time == 0){
下へ移動開始;
}
if(time => 120 &&
(time - 120) % 60 == 0 &&
time < 120 + 60 * 5){
弾を撃つ;
}
}
毎フレーム呼び出してもらうしかない
時間を数える変数が必要
ベタな実装
int time = 0;
void Update(){
if(time == 0){
下へ移動開始;
}
if(time => 120 &&
(time - 120) % 60 == 0 &&
time < 120 + 60 * 5){
弾を撃つ;
}
}
毎フレーム呼び出してもらうしかない
何をするにも時間を
意識する必要がある
ベタな実装
int time = 0;
void Update(){
if(time == 0){
下へ移動開始;
}
if(time => 120 &&
(time - 120) % 60 == 0 &&
time < 120 + 60 * 5){
弾を撃つ;
}
}
毎フレーム呼び出してもらうしかない
for文が使えないので
剰余で代用
ベタな実装
int time = 0;
void Update(){
if(time == 0){
下へ移動開始;
}
if(time => 120 &&
(time - 120) % 60 == 0 &&
time < 120 + 60 * 5){
弾を撃つ;
}
}
毎フレーム呼び出してもらうしかない
ここを変えると
ここも変える必要あり
コルーチンを使うと
IEnumerator GetFlow(){
下へ移動開始;
for(int y = 0; y < 120; ++y)
yield return null;
for(int i = 0; i < 5; ++i){
弾を撃つ;
for(int y = 0; y < 60; ++y)
yield return null;
}
}
void Update(){
下へ移動開始;
120F待つ;
5回繰り返す{
弾を撃つ;
60F待つ;
}
}
コルーチンを使えば、理想のコードをわりと
そのまま書ける
理想のコード
実行のしかた
// 初期化のとき
flow = GetFlow().GetEnumerator();
// 更新メソッド(毎フレーム呼ばれる)
void Update()
{
flow.MoveNext();
}
C#なら、敵クラスのコンストラクタなどでフロー
の書かれたメソッドを呼び出し、更新メソッドで
MoveNextする
例
RPGの戦闘シーンなどは「流れ」をもつ
1. 作戦入力(入力完了まで待機)
2. スキル発動メッセージ(メッセージ送りまで待機)
3. エフェクト再生(再生終了まで待機)
4. ダメージ表示(表示完了まで待機)
流れを持つ・「待機」だらけ→コルーチンが力を発
揮する
ビューとロジックの
分離
ビューとモデル
多くのプログラムの構造は「ビュー」と「モデル」
に分けられる
ビュー
• UIの表示
• ユーザー入力
• 描画ライブラリを利用した
処理
モデル
• HPなどの値の演算
• データベースへのアクセス
• 処理の流れの制御
• ビューにメッセージを送る
ゲーム
ビューとモデルの分離
プログラム上でもビューとモデルを分けるといいこ
とがある。これが「ビューとモデル(VM)の分離」
ビュー
プロジェクト
モデル
プロジェクト
ゲームエンジン
矢印は依存関係
分離するメリット
ビューでやらないこと、モデルでやらないことが明
確になり、適切にクラス分けなどができる。それに
よって副次的なメリットが発生
ビューでやらないこと
• HPなどの値の演算
• データベースへのアクセス
• 処理の流れの制御
モデルでやらないこと
• UIの更新
• ユーザー入力
• 描画ライブラリの利用
分離するメリット
UIデザインの変更によってビューが変わってもモ
デル部分に影響が及びにくい
使用するゲームエンジンの変更によってビューが
変わってもモデル部分が使いまわせる
サーバーでのチート検証、プランナー向け調整
ツール、テストプロジェクトなどの間でモデルを使
いまわせる
そこに書くべきこと、書くべきでないことが明確
になり、頭のなかが整理される
うちのゲームでも
「冒険者は森に強い」のコードも、ビューとモデル
が分けられているので、その設計を解説します
モデル プロジェクト
ビュー プロジェクト
ゲームでの 分離
ここでは静的なゲームを前提として解説。動的な
ゲームはVMの分離がしにくい
動的なゲーム:HPなどの値が毎フレーム更新され
る可能性があるもの。アクションなどリアルタイム
性のあるゲーム。HPなどをビューに直接持ったほう
がいい場合がある
静的なゲーム:ユーザーの入力があるまで値が更
新されないもの。RPGなどターン制っぽいゲーム
例: の戦闘シーン
ゲームの流れはモデルに、UIの更新はビューに書く
ビュー モデル(流れ)
スキル選択スキル選択待ち
ダメージ発生ダメージ表示
スキル発動発動メッセージ
決定
メッセージ送り
表示完了
ベタな実装
あまり考えたくなかった。
enumで状態を管理して、switchで状態によって分
岐?
新たな処理(たとえば眠り状態メッセージとか)が増えるたび
に、列挙子増やして、switch文の分岐増やして、状態をセッ
トする部分を変更しないといけない
やりたいことに対して書くべきコードが多いし、いろいろな
ところに散らばる
状態が増えるたびに長くなるswitch文…
メソッドとイベントをたくさん作る?
のフロー
モデルはあくまでひとつながりのフロー制御。
ビューの処理を待っているだけ
1. スキル選択(決定を待機)
2. スキル発動(メッセージ送りを待機)
3. ダメージ発生(ダメージ表示完了を待機)
「待機」だらけ→コルーチンが効果を発揮する
モデルをコルーチン化
public Ienumerable<IMessage> GetFlow()
{
var input = new InputSkillMsg(skills);
yield return input;
var skill = input.Response;
yield return new MessageMsg(skill.Message);
yield return new DamageMsg(skill.power);
}
モデル側コード
モデルをコルーチン化
public Ienumerable<IMessage> GetFlow()
{
var input = new InputSkillMsg(skills);
yield return input;
var skill = input.Response;
yield return new MessageMsg(skill.Message);
yield return new DamageMsg(skill.power);
}
モデル側コード
スキル選択を待機
メッセージ送りを待機
ダメージ表示完了を待機
ビューはコールバック
ビュー側コード
private void InputSkill(InputSkillMsg m,
Action<int> callback)
{
this.callback = callback;
}
private void OnDecided(int index)
{
this.callback(index);
}
コールバックを渡される
ので保持
処理が完了したらコール
バックを呼んで通知
モデルとビューの接続
モデルはイテレータブロックでメッセージを投げ
る
ビューはメッセージを受け取って、処理が完了し
たらコールバックを呼ぶ
→ モデルからのメッセージをビューの対応メソッ
ドに渡し、ビューがコールバックを呼んだらモデル
を再開するコードがどこかに必要
チャンネル
Channelクラスという接続用クラスを用意
View
Channel
Model
(フロー)
View
MoveNext
yield
メッセージイベント呼出
コールバック
戻り値 MoveNext
チャンネル
public void AddMessageHandlerTo(Channel channel)
{
// メッセージクラスとメソッドを対応付ける
channel.AddHandler<InputSkillMsg>(InputSkill);
}
private void InputSkill(InputSkillMsg m, …)
{
// スキル選択時の処理
}
Channelにビューのメソッドを登録して使う
ソースを読んでね
更に詳しい実装・仕様は「冒険者は森に強い」の
ソースコードを読んでね!
GitHub:
https://github.com/NumAniCloud/StrongAdve
nturer
落ち穂拾い
コルーチンと戻り値
コルーチンを使っていると、あるコルーチンから別
のコルーチンを呼びたい時がある
ダメージ処理みたいに、いろんな場所で発生する
もの
// コルーチンDamageがあるとして、foreachで呼べる
foreach(var msg in Damage())
{
yield return msg;
}
コルーチンと戻り値
じゃあ、コルーチンを呼んで戻り値が欲しい時は?
// これじゃダメ(コルーチン本体(IEnumerable型)が代入される)
var result = Damage();
// これでもダメ(IEnumerable型にResultなどというものは無い)
var flow = Damage();
foreach(var m in flow)
{
yield return m;
}
var result = flow.Result;
コルーチンと戻り値
コールバックを使う(ちょっと面倒だけど…)
int result = 0;
foreach(var msg in Damage(r => result = r))
{
yield return msg;
}
IEnumerable Damage(Action<int> callback)
{
callback(3);
yield break;
}
定義側
利用側
コールバックを呼ぶと
resultに値が入る
コルーチンが使える言語
C#のイテレータブロック
Pythonのジェネレータ
Rubyのファイバー
Luaのコルーチン
東方弾幕風スクリプトのマイクロスレッド
おしまい でも、宣伝があります
!
「冒険者は森に強い」は、AmusementCreators製
ゲームエンジン「AC-Engine」を使って作られまし
た。
「冒険者は森に強い」のソースコードを公開したの
も、AC-Engineを使った中規模ゲーム制作のサンプ
ルとして参照してもらうため。AC-Engineなら本格
的なゲーム制作のお手本があるのだ!
の特徴
C++, C#対応。Javaなど多言語に対応予
Windows対応。Mac, Linux版も現在調整中!
癖のないアクターシステム。ゲーム制作の面倒事
を省けます
公式サイト(仮)→ http://ac-engine.github.io/
の
ゲーム制作講座執筆中! →
https://github.com/ac-
engine/STGLecture/blob/master/Document/cs
/Index.md
コミッターも募集中! →
https://github.com/ac-engine/ac-engine
利用実績
EXとらぶる冒険記
冒険者は森に強い
利用実績
幻想戦略譚(開発中)
ゆっくり飛行玉
利用実績
Clavis
ColorDomination
本物の終わり お疲れ様でした!
1 de 52

Recomendados

ゲーム開発者のための C++11/C++14 por
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
103.6K vistas157 diapositivas
カスタムメモリマネージャと高速なメモリアロケータについて por
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
28.9K vistas33 diapositivas
20分くらいでわかった気分になれるC++20コルーチン por
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
13K vistas31 diapositivas
中3女子でもわかる constexpr por
中3女子でもわかる constexpr中3女子でもわかる constexpr
中3女子でもわかる constexprGenya Murakami
49K vistas100 diapositivas
オブジェクト指向できていますか? por
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
237.5K vistas129 diapositivas
コルーチンでC++でも楽々ゲーム作成! por
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
7.5K vistas15 diapositivas

Más contenido relacionado

La actualidad más candente

C++20 モジュールの概要 / Introduction to C++ modules (part 1) por
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)TetsuroMatsumura
3.3K vistas30 diapositivas
プログラムを高速化する話 por
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話京大 マイコンクラブ
242.3K vistas120 diapositivas
すごい constexpr たのしくレイトレ! por
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
25.6K vistas206 diapositivas
やはりお前らのMVCは間違っている por
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
145.6K vistas66 diapositivas
Constexpr 中3女子テクニック por
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
33K vistas138 diapositivas
shared_ptrとゲームプログラミングでのメモリ管理 por
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
10K vistas39 diapositivas

La actualidad más candente(20)

C++20 モジュールの概要 / Introduction to C++ modules (part 1) por TetsuroMatsumura
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
TetsuroMatsumura3.3K vistas
すごい constexpr たのしくレイトレ! por Genya Murakami
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami25.6K vistas
やはりお前らのMVCは間違っている por Koichi Tanaka
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka145.6K vistas
Constexpr 中3女子テクニック por Genya Murakami
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami33K vistas
shared_ptrとゲームプログラミングでのメモリ管理 por DADA246
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA24610K vistas
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介 por UnityTechnologiesJapan002
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計 por UnityTechnologiesJapan002
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요? por 내훈 정
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
내훈 정33.6K vistas
PHP と SAPI と ZendEngine3 と por do_aki
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki16.1K vistas
クロージャデザインパターン por Moriharu Ohzu
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
Moriharu Ohzu19.6K vistas
Java開発の強力な相棒として今すぐ使えるGroovy por Yasuharu Nakano
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano26.7K vistas
アプリ屋もDockerをドカドカ使おう ~ Docker入門 por Hori Tasuku
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
Hori Tasuku14.3K vistas
Unityでオンラインゲーム作った話 por torisoup
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup10.2K vistas
C/C++とWebAssemblyを利用したライブラリ開発 por 祐司 伊藤
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
祐司 伊藤2.6K vistas
非同期処理の基礎 por 信之 岩永
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
信之 岩永57.2K vistas
SPAのルーティングの話 por ushiboy
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
ushiboy22.4K vistas

Similar a コルーチンの使い方

コルーチンを使おう por
コルーチンを使おうコルーチンを使おう
コルーチンを使おうamusementcreators
8.8K vistas17 diapositivas
UniRxことはじめ por
UniRxことはじめUniRxことはじめ
UniRxことはじめShoichi Yasui
33.6K vistas123 diapositivas
2018/06/23 Sony"s deep learning software and the latest information por
2018/06/23 Sony"s deep learning software and the latest information2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest informationSony Network Communications Inc.
2.7K vistas42 diapositivas
HoloLensハンズオン:AirTap & SpatialMapping編 por
HoloLensハンズオン:AirTap & SpatialMapping編HoloLensハンズオン:AirTap & SpatialMapping編
HoloLensハンズオン:AirTap & SpatialMapping編Takashi Yoshinaga
4.5K vistas74 diapositivas
Enjoy handwritten digits recognition AI !! por
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!KAIKenzo
352 vistas116 diapositivas
Boost.Coroutine por
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
23.8K vistas44 diapositivas

Similar a コルーチンの使い方(20)

UniRxことはじめ por Shoichi Yasui
UniRxことはじめUniRxことはじめ
UniRxことはじめ
Shoichi Yasui33.6K vistas
HoloLensハンズオン:AirTap & SpatialMapping編 por Takashi Yoshinaga
HoloLensハンズオン:AirTap & SpatialMapping編HoloLensハンズオン:AirTap & SpatialMapping編
HoloLensハンズオン:AirTap & SpatialMapping編
Takashi Yoshinaga4.5K vistas
Enjoy handwritten digits recognition AI !! por KAIKenzo
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
KAIKenzo352 vistas
Boost.Coroutine por melpon
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
melpon23.8K vistas
Scalaの限定継続の応用と基本 por Kota Mizushima
Scalaの限定継続の応用と基本Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
Kota Mizushima1.6K vistas
Scalaの限定継続の応用と基本(改訂版) por Kota Mizushima
Scalaの限定継続の応用と基本(改訂版)Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)
Kota Mizushima885 vistas
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる por Atsushi Tadokoro
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
Atsushi Tadokoro6K vistas
Arduinoでプログラミングに触れてみよう 続編 por Hiromu Yakura
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
Hiromu Yakura13.5K vistas
競技プログラミングのためのC++入門 por natrium11321
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321 32.9K vistas
Async design with Unity3D por Kouji Hosoda
Async design with Unity3DAsync design with Unity3D
Async design with Unity3D
Kouji Hosoda74.3K vistas
Chromeでjavascriptデバッグ!まず半歩♪ por Yuji Nojima
Chromeでjavascriptデバッグ!まず半歩♪Chromeでjavascriptデバッグ!まず半歩♪
Chromeでjavascriptデバッグ!まず半歩♪
Yuji Nojima21.7K vistas
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション por Atsushi Tadokoro
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
Atsushi Tadokoro18.4K vistas
2012 03-03-titanium plusquicktigame2d por Hiroshi Oyamada
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
Hiroshi Oyamada724 vistas
Unityクリエイターズ勉強会【2/2】【関西】発表資料 por Masataka Motokurumada
Unityクリエイターズ勉強会【2/2】【関西】発表資料Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料
Masataka Motokurumada2.4K vistas
Python で munin plugin を書いてみる por ftnk
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
ftnk4.6K vistas
Deep Learning基本理論とTensorFlow por Tadaichiro Nakano
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
Tadaichiro Nakano7.4K vistas

Último

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
120 vistas42 diapositivas
定例会スライド_キャチs 公開用.pdf por
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
111 vistas64 diapositivas
さくらのひやおろし2023 por
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023法林浩之
96 vistas58 diapositivas
The Things Stack説明資料 by The Things Industries por
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
58 vistas29 diapositivas
JJUG CCC.pptx por
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 vistas14 diapositivas

Último(11)

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
さくらのひやおろし2023 por 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之96 vistas
The Things Stack説明資料 by The Things Industries por CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.58 vistas
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) por NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
Windows 11 information that can be used at the development site por Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 vistas
SSH応用編_20231129.pdf por icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4335 vistas
SNMPセキュリティ超入門 por mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda355 vistas

コルーチンの使い方