SlideShare a Scribd company logo
Enviar búsqueda
Cargar
Iniciar sesión
Registrarse
CppCon2016 report and Boost.SML
Denunciar
Takatoshi Kondo
Seguir
Software Engineer at OGIS-RI en OGIS-RI
5 de Nov de 2016
•
0 recomendaciones
•
1,379 vistas
1
de
24
CppCon2016 report and Boost.SML
5 de Nov de 2016
•
0 recomendaciones
•
1,379 vistas
Descargar ahora
Descargar para leer sin conexión
Denunciar
Software
CppCon2016 tour report. Introduction of the new C++ state machine library Boost.SML.
Takatoshi Kondo
Seguir
Software Engineer at OGIS-RI en OGIS-RI
Recomendados
Boost sg msgpack
Takatoshi Kondo
4K vistas
•
49 diapositivas
Pub/Sub model, msm, and asio
Takatoshi Kondo
1.6K vistas
•
42 diapositivas
Rust-DPDK
Masaru Oki
2.6K vistas
•
15 diapositivas
Webアプリケーションの無停止稼働
Kazuho Oku
6.4K vistas
•
14 diapositivas
Ietf97 ソウル報告
yuki-f
828 vistas
•
31 diapositivas
QUIC標準化動向 〜2017/7
Kazuho Oku
9.8K vistas
•
37 diapositivas
Más contenido relacionado
La actualidad más candente
Open stack+lagopus できるかな
Masaru Oki
1.4K vistas
•
17 diapositivas
WebRTC meetup Tokyo 1
mganeko
4.2K vistas
•
73 diapositivas
TLS & LURK @ IETF 95
Kazuho Oku
3K vistas
•
20 diapositivas
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
Atsuo Ishimoto
22.9K vistas
•
35 diapositivas
Qt Creator を拡張する
Takumi Asaki
8.9K vistas
•
20 diapositivas
ウェブアーキテクチャの歴史と未来
Kazuho Oku
4.8K vistas
•
39 diapositivas
La actualidad más candente
(20)
Open stack+lagopus できるかな
Masaru Oki
•
1.4K vistas
WebRTC meetup Tokyo 1
mganeko
•
4.2K vistas
TLS & LURK @ IETF 95
Kazuho Oku
•
3K vistas
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
Atsuo Ishimoto
•
22.9K vistas
Qt Creator を拡張する
Takumi Asaki
•
8.9K vistas
ウェブアーキテクチャの歴史と未来
Kazuho Oku
•
4.8K vistas
kyotovim#1
Naoya Inada
•
2.9K vistas
qmake入門
hermit4 Ishida
•
12.4K vistas
NanoStrand
Masashi Umezawa
•
816 vistas
CSRを自動生成する!
Taichi Ishitani
•
3.1K vistas
griffon plugin を 実際に作ってみよう #jggug
kimukou_26 Kimukou
•
999 vistas
Lagopus 0.2.2
Masaru Oki
•
1.1K vistas
HTTP2 時代の Web - web over http2
Jxck :)
•
48K vistas
Gocon2017:Goのロギング周りの考察
貴仁 大和屋
•
14.4K vistas
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
•
1.9K vistas
PYNQ祭り
Mr. Vengineer
•
2.9K vistas
Rake
Tomoya Kawanishi
•
1.2K vistas
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
•
14.8K vistas
WebRTC UserMedia Catalog: いろんなユーザメディア(MediaStream)を使ってみよう
mganeko
•
4.4K vistas
Lagopus, raw socket build
Masaru Oki
•
2.5K vistas
Destacado
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
8.9K vistas
•
71 diapositivas
Visual C++コード分析を支えるSAL
egtra
4.1K vistas
•
33 diapositivas
C++1z draft
Akira Takahashi
6.6K vistas
•
67 diapositivas
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
hiyohiyo
7.5K vistas
•
49 diapositivas
エクストリームC++11/14プログラミング
egtra
2.1K vistas
•
26 diapositivas
関数の最小値を求めることから機械学習へ
Hiro H.
6.1K vistas
•
60 diapositivas
Destacado
(9)
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
•
8.9K vistas
Visual C++コード分析を支えるSAL
egtra
•
4.1K vistas
C++1z draft
Akira Takahashi
•
6.6K vistas
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
hiyohiyo
•
7.5K vistas
エクストリームC++11/14プログラミング
egtra
•
2.1K vistas
関数の最小値を求めることから機械学習へ
Hiro H.
•
6.1K vistas
Y Combinator に学ぶスタートアップ強化プログラム (3 か月間でスタートアップを成長させる Accelerator Program の仕組み)
Takaaki Umada
•
72.1K vistas
カスタマーサポートのことは嫌いでも、カスタマーサクセスは嫌いにならないでください
Takaaki Umada
•
250.4K vistas
逆説のカスタマーサクセス
Takaaki Umada
•
153.6K vistas
Similar a CppCon2016 report and Boost.SML
Contao Open Source CMS 〜 3.3からその向こう
Takahiro Kambe
612 vistas
•
85 diapositivas
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
DeNA
6.4K vistas
•
114 diapositivas
Polyphony 新機能ツアー
ryos36
1.8K vistas
•
28 diapositivas
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Masaya Aoyama
479 vistas
•
63 diapositivas
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
3.4K vistas
•
41 diapositivas
Contao Open Source CMS -- 新しいメジャーリリースとLTSリリース
Takahiro Kambe
795 vistas
•
82 diapositivas
Similar a CppCon2016 report and Boost.SML
(20)
Contao Open Source CMS 〜 3.3からその向こう
Takahiro Kambe
•
612 vistas
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
DeNA
•
6.4K vistas
Polyphony 新機能ツアー
ryos36
•
1.8K vistas
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Masaya Aoyama
•
479 vistas
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
•
3.4K vistas
Contao Open Source CMS -- 新しいメジャーリリースとLTSリリース
Takahiro Kambe
•
795 vistas
FuelPHP活用事例
Yusuke Naka
•
3.3K vistas
How to run P4 BMv2
Kentaro Ebisawa
•
8.7K vistas
Anaconda & NumbaPro 使ってみた
Yosuke Onoue
•
9K vistas
SpringOne Platform Replay -Pivotal Cloud Foundry-
CASAREAL, Inc.
•
782 vistas
ABEMA を次のフェーズへ進化させる技術への取り組み
Yusuke Goto
•
1.2K vistas
自分的pkgsrcの課題
Ryo ONODERA
•
937 vistas
JAWS-UG HPC #2 LT 並列処理・MPIの第一歩
HPCシステムズ株式会社
•
1.6K vistas
WebRTC SFU mediasoup sample
mganeko
•
5.1K vistas
Bitbucket Pipelinesについて
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
•
5.5K vistas
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
Kamon Nobuchika
•
824 vistas
2018 07-19dist
Yuji Oshima
•
1.8K vistas
Contao Open Source CMS / 3.3と、その向こう
Takahiro Kambe
•
891 vistas
今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜
Tsukasa Kato
•
165 vistas
2016-ShowNet-報告資料
Interop Tokyo ShowNet NOC Team
•
981 vistas
Más de Takatoshi Kondo
Effective Modern C++ study group Item39
Takatoshi Kondo
1.1K vistas
•
18 diapositivas
MessagePack(msgpack): Compact and Fast Serialization Library
Takatoshi Kondo
5.4K vistas
•
27 diapositivas
Emcpp0506
Takatoshi Kondo
10.6K vistas
•
15 diapositivas
Boostsapporomsmpost 111106070819-phpapp02
Takatoshi Kondo
661 vistas
•
95 diapositivas
Boostsapporomsmpre 111030054504-phpapp02
Takatoshi Kondo
443 vistas
•
95 diapositivas
Unpack mechanism of the msgpack-c
Takatoshi Kondo
3.4K vistas
•
26 diapositivas
Más de Takatoshi Kondo
(9)
Effective Modern C++ study group Item39
Takatoshi Kondo
•
1.1K vistas
MessagePack(msgpack): Compact and Fast Serialization Library
Takatoshi Kondo
•
5.4K vistas
Emcpp0506
Takatoshi Kondo
•
10.6K vistas
Boostsapporomsmpost 111106070819-phpapp02
Takatoshi Kondo
•
661 vistas
Boostsapporomsmpre 111030054504-phpapp02
Takatoshi Kondo
•
443 vistas
Unpack mechanism of the msgpack-c
Takatoshi Kondo
•
3.4K vistas
N3495 inplace realloc
Takatoshi Kondo
•
884 vistas
N3701 concept lite
Takatoshi Kondo
•
1.2K vistas
Aho-Corasick string matching algorithm
Takatoshi Kondo
•
6.1K vistas
CppCon2016 report and Boost.SML
1.
CppCon2016 参加報告 急速に進化するBoost.SML Takatoshi Kondo 2016/11/5
1
2.
発表内容 2016/11/5 2 • CppCon2016参加報告 •
Boost.SML(msm-lite)
3.
自己紹介 2016/11/5 3 • 近藤
貴俊 • ハンドルネーム redboltz • msgpack-cコミッタ – https://github.com/msgpack/msgpack-c • MQTTのC++クライアント mqtt_client_cpp 開発 – https://github.com/redboltz/mqtt_client_cpp • MQTTを拡張したスケーラブルな brokerを仕事で開発中 • C++Now(BoostCon)、CppCon 2016など 海外カンファレンスに参加、発表
4.
CppCon2016 参加報告 2016/11/5 4
5.
2大C++カンファレンス 2016/11/5 5 • C++Now(旧名
BoostCon) • CppCon
6.
2大C++カンファレンス 2016/11/5 6 C++Now CppCon 開始年
多分2007 2014 場所 コロラド州アスペン ワシントン州ベルビュー キャパシティ 約200 約900 開催時期 5月中旬 9月下旬 開催期間 約1週間 約1週間 参加費用 約$700 (早期登録early bird価格) 約$880(早期登録early bird価格) 日本からの 所要時間 約 15時間(2回乗り換え) 約 9時間(直行)
7.
2大C++カンファレンス 2016/11/5 7 • CppCon2016に初めて参加 –
プロによる運営(C++Nowはコミュニティ的) – 並行して5つくらいのセッション • Keynoteは単独開催 • 今回はあまり迷わなかった • C++Nowでは2~3セッション – 動画の公開が早い! – カメラワークがプロ! – 行くのが楽! – 飯がうまい!
8.
CppCon2016 セッション 2016/11/5 8 •
https://www.youtube.com/user/CppCon – Jason Turner • コモドール64と最新C++のコンボ – https://www.youtube.com/watch?v=zBkNBP00wJE • パフォーマンス向上のためのpractice – https://www.youtube.com/watch?v=uzF4u9KgUWI – Herb Sutter • pointer likeオブジェクトの選択指針 – https://www.youtube.com/watch?v=JfmTagWcqoE – Nicholas Ormrod • facebookのstring – https://www.youtube.com/watch?v=kPR8h4-qZdk – David Watson • facebookのfollyの経験 – https://www.youtube.com/watch?v=GDxb21kEthM – 日本人2人のLT • https://www.youtube.com/watch?v=rXVg07rtSiI • https://www.youtube.com/watch?v=N1cWgqmWSio
9.
急速に進化するBoost.SML 2016/11/5 9
10.
msmとsmlの違い 2016/11/5 10 Boost.MSM (Meta
State Machine)は、 コンパイルタイムにステートマシンを 構築するライブラリ。 https://www.amazon.co.jp/dp/4798120391/ 書籍 C++テンプレートメタプログラミング で紹介された Dave Abrahamsのアプローチに基づく。 C++03で使える。
11.
msmとsmlの違い 2016/11/5 11 https://boost-experimental.github.io/msm-lite/cppnow-2016/#/ Boost.Experimental.SML (State
Machine Lite?)は元々、 msm-liteと呼ばれていた。 C++Now 2016で作者の Kris Jusiakにより紹介された。 C++14が必要 https://www.youtube.com/watch?v=j0J33BnIjnU https://boost-experimental.github.io/msm-lite/cppnow-2016/#/2/40
12.
Simple State Machine 2016/11/5
12 http://melpon.org/wandbox/permlink/rUGxwncK43oxh1lH Simple State1 entry / on_entry exit / on_exit Event1 "状態名"_s + event<イベントクラス名> / アクション = 遷移先状態 Xはpredefined トリガとなったイベント 任意のイベントで 状態に entry / exit 初期状態 マーク
13.
InitAction 2016/11/5 13 http://melpon.org/wandbox/permlink/dLABZnhwYYSF40Jk InitAction State1 entry /
on_entry exit / on_exit Event1 /InitAction 初期遷移による entryのみに反応 その他のentryに反応
14.
internal / self
transition 2016/11/5 14 http://melpon.org/wandbox/permlink/Qg8ClxJeqtzcjvop Internal and self State1 entry / on_entry exit / on_exit Event2 / Action2 Event1/Action1 遷移先に自身を記述 遷移先を書かない
15.
junction pseudo state 2016/11/5
15 http://melpon.org/wandbox/permlink/QVSVShg20bB9gWjT Junction pseudo state State1 [val == 1]/Action1 Event1(val) [val == 2]/Action2 Junction pseudo state State1 Event1(val)[val == 2]/Action2 Event1(val)[val == 1]/Action1 このように分割して記述 ガードは [] で記述。 ラムダ式は [[](){}] と書きたいが、 [[ が使えないため、[([と括弧を追加
16.
if else branch 2016/11/5
16 http://melpon.org/wandbox/permlink/aNHaQ95nE8PAwAZ8 Junction pseudo state State1 [val == 1]/Action1 Event1(val) [else]/Action2 評価順序は上から下へ ガードは [] で記述。 ラムダ式は [[](){}] と書きたいが、 [[ が使えないため、[([と括弧を追加
17.
choice pseudo state 2016/11/5
17 Choice pseudo state State1 [val == 2]/Val1Branch Event1/++val [else]/ElseBranch val=0 http://melpon.org/wandbox/permlink/djTylkI5aOItxCUX イベント発生時にアクションも処理され、 その結果を次のガードに反映できる かならず、どれかのガードにマッチするように 書かねばならない(UML的には) 任意のオブジェクトを参照としてぶら下げられる任意のオブジェクトを参照としてぶら下げられる
18.
defer event 2016/11/5 18 http://melpon.org/wandbox/pe rmlink/NxKOXEq65uWT5tVR Defer
event State1 Event2 Event1/defer State2 Event1/defer State3 State4 Event2 Event1 State5 Event1 State6 Event1 遅延 キューイング される 状態確認
19.
SubMachineState 2016/11/5 19 Sm State1:Sub State2Event1 Sub State1
Event2 State2 Event3 http://melpon.org/wandbox/p ermlink/NfeN0TUiAvdvn33j サブマシン指定サブマシン指定サブマシン指定サブマシン指定 サブマシンの状態確認
20.
まだサポートされていない要素 2016/11/5 20 Sm State1:Sub State2:SubEvent1 Sub State1
Event2 State2 Event3 同じSubを複数のstateで使う同じSubを複数のstateで使う 現状では、notationが無い ここにstate名をつけられない 。 "State1"_sとか。 こっちをstate<Sub>にすると区別がつかない
21.
まだサポートされていない要素 2016/11/5 21 Sm State1:Sub State2 Sub State1
Event2 現状では、すぐに親のtransitionが発動してしまう Subの終了まで、親のanonymous transitionを行わないSubの終了まで、親のanonymous transitionを行わない
22.
まだサポートされていない要素 2016/11/5 22 Register finger
print RightScanning:ScanFinger ScanOnly Waiting Start Button Pressed / “Right hand please” Exit1 LeftScanning:ScanFinger entry / “Press Start Button” Completed(result)[result == OK] / “Register Completed” Exit1completed(result) [result == NG] / “Register Failed” completed(result) [result == NG] / “Register Failed” ScanOnly Completed(result)[result == OK] / “Left hand please” ScanFinger AliveChecking Exit1 Scanninng ScanSucceeded / ConvertEvent:Completed(OK) ScanFailed / ConvertEvent:Completed(NG) ScanOnly CheckSucceeded CheckFailed / ConvertEvent:Completed(NG) entry point pseudo state exit point pseudo state
23.
その他情報 2016/11/5 23 • ロギングサポート –
http://melpon.org/wandbox/permlink/8SKlNUGG tKru2r72 • マルチスレッドサポート – http://melpon.org/wandbox/permlink/XmhmVdF OmbNP0xRM
24.
まとめ 2016/11/5 24 • Boost.SMLは軽量で、可読性の高いステート マシン表現が可能 •
sub machine周辺がまだ実装中 • デバッグが比較的容易 • マルチスレッド対応