SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
1
20分くらいで
わかった気分になれる†
C++20コルーチン
2019/9/4
C++MIX #5
†効果には個人差があります。C++20コルーチン 完全理解™️を保証するものではありません。
2
はじめに
誰?
twitter @yohhoy / hatena id:yohhoy
何を?
C++20導入予定の コルーチン 概要を紹介
どうして?
勉強会駆動 C++20コルーチン調査
 本日のディスカッション ネタ提供
Coroutines
3
Question: コルーチン?
並行タスク(Concurrency task)
非同期I/O(Asynchronous I/O)
ジェネレータ(Generator)
エラー伝搬(Error propagation)
4
並行タスク(Concurrency task)
非同期I/O(Asynchronous I/O)
ジェネレータ(Generator)
エラー伝搬(Error propagation)
Answer: C++20コルーチン
5
Answer: C++20コルーチン
並行タスク(Concurrency task)
非同期I/O(Asynchronous I/O)
ジェネレータ(Generator)
エラー伝搬(Error propagation)
ハイレベル機能の
実装に利用する
低レベル言語仕様 と
新しい構文 を定義
6
C++20コルーチンのユーザは誰?
並行タスク
ライブラリ
ジェネレータ,
etc.
非同期I/O
ライブラリ
アプリケーション
プログラマ
ライブラリ
プログラマ
co_await
co_yield
co_return
co_await
co_yield
co_return
コルーチン
言語仕様
コルーチン
言語仕様
7
C++23, C++26, or someday
並行タスク
ライブラリ
ジェネレータ,
etc.
非同期I/O
ライブラリ
アプリケーション
プログラマ
Parallel Algorithm
Ranges Library
std::expected
Executors TS
Networking TS
8
C++20コルーチン
新キーワード
  co_await
  co_yield
  co_return
標準ヘッダ<coroutine>
  coroutine_traits<R,Args...>
  coroutine_handle<Promise>
  suspend_never
  suspend_always
  noop_coroutine()
カスタマイズポイント
 Promise type
 Awaitable type
 operator co_await
9
C++20コルーチン
10
C++20コルーチン
11
If you are
12
関数とコルーチン
C++コルーチンは関数を拡張したもの
関数(function)
 呼出(call)により処理開始/呼出元へ復帰(return)
コルーチン(coroutine)
 呼出(call)により処理開始/呼出元へ復帰(return)
 途中での中断(suspend)と再開(resume)をサポート
13
関数(サブルーチン)
コルーチン
関数とコルーチン
call return
call return
suspend suspend
resume resume
caller
function
caller
coroutine
14
コルーチンを途中破棄
別スレッドから再開
関数とコルーチン
caller
coroutine
destroy
caller
thread#1
coroutine
caller
thread#2
coroutine_handle移動
15
関数とコルーチン
本体部にコルーチン構文が登場したらコルーチン
関数シグネチャからは区別しない/できない
future<int> c1() {
co_yield 42;
}
future<int> f1() {
return make_future(42);
}
task<void> c2() {
co_await read();
co_await write();
}
task<void> f2() {
return []{
read(); write(); };
}
※上記コード片は説明用のイメージです。
coroutine function
16
Asymmetric vs. Symmetric
非対称(Asymmetric)/対称(Symmetric)コルーチンの
両方をサポートする
非対称コルーチン
 現コルーチンを中断=再開元(resumer)に戻る
 大抵のケースでは非対称コルーチンが使われる
対称コルーチン
 任意のコルーチンへと制御を移す(control transfer)
 相手コルーチンを”知っている”ケースでのみ利用
17
Asymmetric
Symmetric
Asymmetric vs. Symmetric
coroutine#1
coroutine#3
coroutine#2
coroutine#1
coroutine#3
coroutine#2
Bookkeeping code
18
Stackless vs. Stackful
C++コルーチンはスタックレス(Stackless)
 コルーチンでのみ co_await/co_yield を利用可能
 ネストしたラムダ式や呼出先の関数では利用不可
 中断/再開用のコールスタック保持不要のため軽量
【参考:スタックフル(Stackful)コルーチン】
任意のタイミングでコルーチン中断/再開が可能
Go言語のgoroutineや協調的ファイバ(Fiber)など
中断/再開用のコールスタックを保持するため高コスト
19
Stackless vs. Stackful
void f() {
// suspend
}
task<void> g()
// suspend
f();
}
コルーチン g
フレーム
void f() {
// suspend
}
task<void> g()
// suspend
f();
}
関数 f
フレーム
コルーチン g
フレーム
Stackless
(C++コルーチン)
Stackful
20
C++20コルーチン (再掲)
新キーワード
  co_await
  co_yield
  co_return
標準ヘッダ<coroutine>
  coroutine_traits<R,Args...>
  coroutine_handle<Promise>
  suspend_never
  suspend_always
  noop_coroutine()
カスタマイズポイント
 Promise type
 Awaitable type
 operator co_await
21
C++コルーチンの実例
〜 アプリケーションプログラマ視点 〜
generator iota(int end)
{
for (int n = 0; n < end; ++n)
co_yield n;
}
int main()
{
auto g = iota(10);
for (auto e : g)
std::cout << e << " ";
}
$ clang++ src.cpp -std=c++2a
$ ./a.out
0 1 2 3 4 5 6 7 8 9
22
C++コルーチンの実例
〜 ライブラリプログラマ視点 〜
https://wandbox.org/permlink/IpSC8my6j0A1gT0I
struct generator {
struct promise_type {
int value_;
auto get_return_object()
{ return generator{*this}; }
auto initial_suspend()
{ return std::suspend_always{}; }
auto final_suspend()
{ return std::suspend_always{}; }
auto yield_value(int v)
{
value_ = v;
return std::suspend_always{};
}
void return_void() {}
void unhandled_exception()
{ throw; }
};
using coro_handle =
std::coroutine_handle<promise_type>;
struct iterator {
coro_handle coro_;
bool done_;
iterator& operator++()
{
coro_.resume();
done_ = coro_.done();
return *this;
}
bool operator!=(const iterator& rhs) const
{ return done_ != rhs.done_; }
int operator*() const
{ return coro_.promise().value_; }
};
// (cont.)
// (cont.)
~generator()
{
if (coro_)
coro_.destroy();
}
generator(generator const&) = delete;
generator(generator&& rhs)
: coro_{std::exchange(rhs.coro_, nullptr)}
{}
iterator begin()
{
coro_.resume();
return {coro_, coro_.done()};
}
iterator end()
{ return {{}, true}; }
private:
explicit generator(promise_type& p)
: coro_{coro_handle::from_promise(p)}
{}
coro_handle coro_;
};
23
C++コルーチン At-a-Glance
generator iota(int end) {
for(int n=0; n<end; ++n)
co_yield n;
}
coroutine_handle
引数, ローカル変数
再開位置情報
Promise object
Promise type
Return object
Return type
取得
コルーチン開始時に
オブジェクト生成
Coroutine state
中断時の
動作記述
Awaiter object
Awaitable type
コルーチン
中断処理
コルーチン開始時に
動的メモリ確保
型を導出
コルーチン
再開要求
24
コルーチンハンドル
std::coroutine_handle<Promise>
コルーチン再開用のハンドル型
 Promise object経由でハンドルを取得する
 コルーチンの実行に対してハンドルが1:1対応
co_await式
co_yield式
コルーチン コルーチン
ハンドル
中断(suspend)
再開(resume)
取得
from_promise
呼出(call)
25
Promise
コルーチン動作仕様を記述するユーザ定義クラス
 Promise typeはコルーチン戻り値型から導出
 Promise objectはコルーチン実行と1:1対応
 動作のカスタマイズポイントを規定
(constructor)
get_return_object
yield_value
await_transform
unhandled_exception
operator new/delete
get_return_object_on_allocation_failure
initial_suspend
final_suspend
return_value
return_void
26
Awaitable
中断/再開の動作仕様を記述するユーザ定義クラス
 コルーチン本体のco_await/co_yield動作を制御
 コルーチン開始直後/終了直前の動作を制御
 動作のカスタマイズポイントを規定
await_ready
await_suspend
await_resume Trivial Awaitable
std::always_suspend
std::never_suspend
<coroutine>提供クラス
27
その他
std::coroutine_traitsトレイツ特殊化
コルーチン引数とPromise typeコンストラクタ
co_yield式とyield_value
co_return式とreturn_value/return_void
co_await演算子オーバーロード
unhandled_exceptionと例外処理
型消去(Type Erasure)されたstd::coroutine_handle<>
std::coroutine_handleとvoidポインタ相互運用
ヒープメモリ確保省略最適化(“Halo”)
...
28
C++20コルーチン対応状況
コンパイラサポート状況
 Clang, MSVC :部分的にサポート
 GCC, etc. :未対応
対応ライブラリ
 CppCoro - A coroutine library for C++
  https://github.com/lewissbaker/cppcoro
 Boost.ASIO [Experimental]
  https://github.com/boostorg/asio
 Facebook Folly [Experimental]
  https://github.com/facebook/folly
29
まとめ
C++20コルーチンは
 処理の中断/再開をサポートする関数 
 軽量なスタックレスコルーチン
 ライブラリ実装用の低レベル部品のみ提供
 多数のカスタマイズポイントを規定
C++20以後のコルーチン・ライブラリ発展に期待
君だけの
最強ライブラリを
作れるぞ!
30
[おまけ] More information
Working Draft, Standard for Programming Language C++
 http://eel.is/c++draft/
Halo: coroutine Heap Allocation eLision Optimization
 https://wg21.link/p0981r0
Impact of coroutines on current and upcoming library facilities
 https://wg21.link/p0975r0
Coroutine Theory
 https://lewissbaker.github.io/2017/09/25/coroutine-theory
How C++ coroutines work
 https://kirit.com/How%20C%2B%2B%20coroutines%20work
luncliff/coroutine
 https://luncliff.github.io/coroutine/Home/
C++コルーチン拡張メモ
 https://qiita.com/yohhoy/items/aeb3c01d02d0f640c067
31
[おまけ] Stackless vs. Stackful
Stackful Coroutines(Fiber)
 fiber_context - fibers without scheduler [Oliver K., Nat G.]
  https://wg21.link/p0876r8
Fibers under the magnifying glass [Gor N.]
 https://wg21.link/p1364r0
Response to “Fibers under the magnifying glass” [Nat G., Oliver K.]
 https://wg21.link/p0866r0
Response to response to “Fibers under the magnifying glass” [Gor N.]
 https://wg21.link/p1520r0
Gorさん = C++20に統合されたCoroutines TS提案者
Oliverさん = Boost.Coroutine, Coroutine2, Fiber, Contextライブラリ作者

Mais conteúdo relacionado

Mais procurados

ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Keisuke Fukuda
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話torisoup
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 

Mais procurados (20)

ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
コルーチンの使い方
コルーチンの使い方コルーチンの使い方
コルーチンの使い方
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 

Semelhante a 20分くらいでわかった気分になれるC++20コルーチン

競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
 
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)lestrrat
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいdigitalghost
 
Brief introduction of Boost.ICL
Brief introduction of Boost.ICLBrief introduction of Boost.ICL
Brief introduction of Boost.ICLyak1ex
 
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目hecomi
 
Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本Kota Mizushima
 
Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)Kota Mizushima
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
超LINQ入門
超LINQ入門超LINQ入門
超LINQ入門yone64
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityYoshifumi Kawai
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~Unity Technologies Japan K.K.
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competitionyak1ex
 

Semelhante a 20分くらいでわかった気分になれるC++20コルーチン (20)

C++11
C++11C++11
C++11
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
 
C++ tips4 cv修飾編
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編
 
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
 
C#6.0の新機能紹介
C#6.0の新機能紹介C#6.0の新機能紹介
C#6.0の新機能紹介
 
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
 
More C++11
More C++11More C++11
More C++11
 
Brief introduction of Boost.ICL
Brief introduction of Boost.ICLBrief introduction of Boost.ICL
Brief introduction of Boost.ICL
 
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
 
Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
 
Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
超LINQ入門
超LINQ入門超LINQ入門
超LINQ入門
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
Deep Dive C# 6.0
Deep Dive C# 6.0Deep Dive C# 6.0
Deep Dive C# 6.0
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 

Último

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Último (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

20分くらいでわかった気分になれるC++20コルーチン