SlideShare a Scribd company logo
1 of 41
Download to read offline
MQTTとAMQPと
.NET
terurou
2015/02/07
自己紹介
1
自己紹介/所属等
• デンキヤギ株式会社
• 代表取締役
• 社員, フリーランス, 協業等 募集してます
• DSTokai管理人
• 東海地方のメタコミュニティ
• IT勉強会カレンダーっぽいやつの東海地方版
• NGK(名古屋合同懇親会)
• エンジニア向けクロスコミュニティ忘年会
• ここ数年は100人前後の参加者
2
自己紹介/技術領域
• フロントエンドアーキテクト(自称)
• JavaScript(Haxe), WPFあたりがわりと得意
• 周辺にGUIできる人が居なかった結果…
• 普通のアーキテクト歴も5年ぐらいはある
• 大量データ×フロントエンド
• 100万件を操作する高速なExcelみたいなヤツとか…
• フロントエンドに限らず、バックエンドも最適化
3
はじめに
4
今日のネタについて
• 最近、お仕事でMQTTとAMQPについて調べる
機会があったので、まとめてきました
• .NETの勉強会なので、.NETにも少し絡めますが、
大半はMQTTとAMQPの話です
5
予備知識
6
MQTT, AMQPの雑な説明
• 通信プロトコルの一種
• HTTP, FTP等と同じアプリケーション層のプロトコル
• メッセージ転送 (MQ)
• IoT/M2Mでの利用も想定されている
• デバイス - サーバ間で小さなデータを送受信
• 世間的にはMQTTの方がIoT向けっぽいけど、
Microsoft的にはAMQP (後述)
7
MQ : Message Queue
• メッセージ指向
• Message Passing + Queue
• 複数オブジェクト間でのメッセージ受け渡し
• 受け取ったメッセージをQueueに格納
• 非同期・疎結合
• 送信側はメッセージ送信までを考えればよい
• 受信側はQueueの消費だけを考えればよい
• 分散システム・非同期処理がシンプルに書ける
8
MQの移り変わり
• 10-15年ぐらい前
• MSMQ
• JMS
• わりと最近
• AMQP
• MQTT
• STOMP
• ZeroMQ
• etc...
9
Publish/Subscribeモデル
• Publisher : メッセージ発信者
• Subscriber : メッセージ購読者
• Broker : メッセージ仲介者
10
・・・
Publisher
Broker / Queue
Subscriber
Publish/Subscribeモデルの補足
• Brokerは存在する・しないパターンがある
• Brokerモデル vs Brokerlessモデル
• このスライドではBrokerモデルを前提に解説
• ReactiveExtensionsもPublish/Subscribeモデル
11
MQ利用例
• メッセージ配信基盤
• 1:1, 1:N, 配信順序, エラー再送, ...全部MQ任せ
• 応用で資産や設定情報の配布とか
• Job Queue
• 時間のかかる処理をWorkerに処理依頼
• 一時的な処理殺到時の負荷分散、キューイング
• ログ収集サービス、SlideShareライクサービスなど
• メッセージはとりあえず待ち行列に貯める
• 待ち行列が増えすぎたら一時的にWorkerを増やす
12
MQTT
13
MQTT : MQ Telemetry Transport
• 軽量・省電力なプロトコル
• 1対Nに特化したメッセージ配信
• 低速・不安定なネットワークでの利用を想定
• 2010年に仕様公開・ロイヤリティフリー
• プロトコル自体は1999年から存在し、枯れている
• IBMが主導的な立場
• 仕様策定、商用製品の提供
14
軽量・省電力なプロトコル
• 軽量プロトコル
• ヘッダサイズが最小で2byte
• シンプルなプロトコルシーケンス
• HTTPとの比較 (IBMの資料による)
• トラフィック10-100分の1 → スループット10-100倍
• 消費電力 10分の1以下
15
1対Nに特化したメッセージ配信
• Publish/Subscribeモデル
• TopicベースでPublish/Subscribe
• “/”区切りの階層構造(ファイルパスっぽい)
• Subscribe時にワイルドカードで指定可
• /japan/tokyo/device1/cpu
• /japan/tokyo/+/meory ←部分一致
• /japan/tokyo/device1/# ←以下全て
16
低速・不安定なネットワークでの利用を想定
• QoS : Quality of Service
• Durable subscribe
• LWT : Last Will &Testament, 遺言状
• 単にWillと表記するケースも
• Retain : Retained Publication
17
QoS : メッセージ配信の品質レベル
• QoS 0 : 最高1回
• メッセージが確実に届く保証はない
• 配信失敗しても再送を行わない
• QoS 1 : 最低1回
• 必ずメッセージは届くが、重複する可能性がある
• QoS 2 : 必ず1回
• 必ずメッセージが届き、重複もしない
• 当然、QoS 0の方が処理は軽い
18
Durable subscribe
• メッセージ再配信機能
• 意図せずにSubscriberの通信が断絶
• その後、当該Subscriberが再接続
• 切断~再接続までに発生したメッセージを再送
• QoS 1, 2のメッセージを再配信
• 明示的なdisconnect, unsubscribeを行った場合は
再配信されない
19
LWT
• ClientはBroker接続時にLWTを設定可能
• Clientが通信を切断時にメッセージを配信する
• 通信死活監視を行っていて、意図しない切断時にも
ちゃんとメッセージが配信される
• LWTにもQoSを設定可能
20
Retain
• ClientがSubscribeする際に、最後に配信された
メッセージを取得できる
• Brokerは最後のメッセージのみは必ず保存する
• 逆説的に、エラー再接続ではないケースでは
古いメッセージを取得することはできない
21
主なMQTT Broker
• IBM MessageSight (商用,ハードウェア)
• IBM WebSphere MQ Telemetry (商用)
• 時雨堂 Akane (商用)
• Mosquitto (OSS)
• RabbitMQ (OSS, Plugin使用)
• etc ...
22
MQTT over WebSocket
• WebSocket経由でMQTT接続するライブラリも
存在する
• Paho JavaScript Client
• MQTT Brokerの前にWebSocket Gatewayを配置
• Lighttpdでブリッジできることは確認した
• たぶんNginx等のロードバランサーでもOKなはず
23
MQTTの弱いところ
• シンプルな仕様のため、できないことは多い
• Job Queueは作れない
• Subscriberが接続してくる前にPublisherが送信した
メッセージは最後の一つしか残らない(Retain)
• 1対1 メッセージ配信が考慮されていない
• 認証の仕様が明確には定められていない
• Brokerごとの実装に依存
• 認証機能をサポートしていないBrokerも多い
• OSSのBroker実装の層が薄い
24
MQTTと.NET
• MQTT .NET Client
• Paho(M2Mqtt), WinRTにも対応
• MQTTDotNet
• nmqtt
• MQTT .NET Broker
• GnatMQ
• 完成度がまだ低いので、素直にMosquittoか
RabbitMQか商用Brokerを使った方が良い
25
M2Mqtt, GnatMQの実装が微妙っぽい話
• ソケットが同期通信で実装されている
• パフォーマンス上の問題を抱えていそう…
• WinRT版で無理やり同期処理…
• Task<T>.Result で、非同期処理を同期待ち合わせ…
• おそらく後付けで #ifdef したせい
26
AMQP
27
AMQP : Advanced Message Queuing Protocol
• Enterpriseに対応できるプロトコル
• 高信頼性
• 高度なメッセージ配信
• アクセス制御
• 相互運用性が高い
• 仕様がオープン(OASIS)
• ワーキンググループのメンバーが豪華
28
高信頼性
• メッセージ永続化
• Publisherが送信したメッセージをBrokerが永続化
• 仮にBrokerが死んでも、再起動で復元できる
• トランザクション
• Subscriber側のメッセージを受け取る一連の処理を
トランザクションを使って記述できる
• tx.select, tx.commit, tx.rollback
• メッセージは受け取れたが、後続処理でエラー発生
というケースでも、メッセージがロストしない
29
高度なメッセージ配信
• Exchange (Direct, Fanout, Topic, Header)
• Priority Queue
• 優先度の高いメッセージを他より先に配信
• QoS, Prefetching
• メッセージを受け取れるSubscriber数を制限
• 分散JobQueueを作るときに必須
• immediate
• Subscriberが存在していないときに配信できない
30
Exchange
• Direct
• 特定のSubscriberのみに配信, 1:1
• Fanout
• 全てのSubscriberに配信, 1:N (1:All)
• Topic
• 特定のTopicのSubscriberのみに配信, 1:N
• Header
• Header(KeyValue)の組み合わせで配信先を特定, 1:N
31
アクセス制御
• “virtual host” + ACL
• ACL : userごとのRead/Write権限
• virtual hostごとにACLを設定
• いわゆるマルチテナント的な分割もできる
32
相互運用性
• 実装面の仕様が明確化されている
• メッセージフォーマット仕様が厳密
• 仕様書にTypeSystemの章とかある
• セキュリティ・アクセス制御等も明確に仕様化
• 複数プログラミング言語、ベンダー間の相互運用に
問題が生じないようになっている
• ライブラリAPIについては規定なし
• JMSでは逆にAPIを定義するが、実装は未定義
33
ワーキンググループのメンバーが豪華
• テクノロジ系
• Cisco, Red Hat, VMware, Microsoft, ...
• 金融(証券)系
• Bank of America, JP Morgan, Goldman Sachs, Barclays,
CREADIT SUISSE, ....
• 金融系が沢山いる=金融系で使われている
• トレーディングシステムでのメッセージング基盤
• 以前はJMSだったらしい
34
主なAMQP Broker
• RabbitMQ
• AMQPといえばRabbitMQ
• Apache ActiveMQ, Apollo
• Apache Qpid (, Red Hat Enteprise MSG)
• IBM MQ Light
• Microsoft Azure Service Bus & Event Hubs
• Service Bus for Windows Server
35
AMQPの弱いところ
• 高機能な反面、仕様が複雑
• “高機能・高信頼性”と”性能”がトレードオフ
• MQTT等のシンプル系プロトコルとの比較
• 要件によっては、NATSやKafka等も視野にいれる
• トレードオフとはいえ…
• 金融系で実績があることは重要
• RabbitMQは完成度が高く、クラスタ構成が前提
• MQTT Brokerでは商用とOSSの差が激しい
36
AMQPと.NET
• AMQP .NET Client
• Broker製品ごとにライブラリが存在
• RabbitMQ .NET Client (WCFもいける)
• Qpid WCF
• Azure SDK, ...
• AMQP .NET Broker
• 少なくともOSSは無いっぽい
• 素直にRabbitMQかService Busを使いましょう
37
AMQPとAzure Event Hubs
• Azure Event HubsはIoT用サービスらしい
• AMQPとHTTPプロトコルをサポートしている
• IoTデバイスのバッテリーに優しくない気が…
• AMQPプロトコルは重い (MQTTとの比較)
• なんでMQTTサポートしてないんだろ…
38
まとめ
39
まとめ
• MQTTとAMQPはMQのプロトコル
• それぞれの特徴は全然違う
• MQTT : シンプル・省電力
• AMQP : 高機能・高信頼性
• .NETからはどちらのプロトコルも使える
• Microsoft的にはAMQP推し
• MQTTの.NET Clientの品質は検証が必要
• MosquittoのBindingを作るのもありかも…
40

More Related Content

What's hot

What's hot (20)

本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 

Viewers also liked (6)

Mozillaの報奨金制度で100万円ほど稼いだ話
Mozillaの報奨金制度で100万円ほど稼いだ話Mozillaの報奨金制度で100万円ほど稼いだ話
Mozillaの報奨金制度で100万円ほど稼いだ話
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
 

Similar to MQTTとAMQPと.NET

俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
taiju higashi
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
h2so5
 
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
智也 鈴木
 

Similar to MQTTとAMQPと.NET (20)

Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向
 
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例Hueによる分析業務の改善事例
Hueによる分析業務の改善事例
 
あなたとわたしの仲介人♡サービスブローカー
あなたとわたしの仲介人♡サービスブローカーあなたとわたしの仲介人♡サービスブローカー
あなたとわたしの仲介人♡サービスブローカー
 
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
 
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
 
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
KubeFlow MeetUp #1 Katibよもやま話
KubeFlow MeetUp #1 Katibよもやま話KubeFlow MeetUp #1 Katibよもやま話
KubeFlow MeetUp #1 Katibよもやま話
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
 
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
 
マイクロサービスとは.pptx
マイクロサービスとは.pptxマイクロサービスとは.pptx
マイクロサービスとは.pptx
 
2 12椛澤「tokyo tyrant」
2 12椛澤「tokyo tyrant」2 12椛澤「tokyo tyrant」
2 12椛澤「tokyo tyrant」
 
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
 

More from terurou

FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
terurou
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
terurou
 
Metro Style AppsでMSIL ver.2012/06/09
Metro Style AppsでMSILver.2012/06/09Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSIL ver.2012/06/09
terurou
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
terurou
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 

More from terurou (20)

Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
 
自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話
 
Computation Expressions for Haxe
Computation Expressions for HaxeComputation Expressions for Haxe
Computation Expressions for Haxe
 
デンキヤギの採用の考え方
デンキヤギの採用の考え方デンキヤギの採用の考え方
デンキヤギの採用の考え方
 
Vue.jsをhaxeで
Vue.jsをhaxeでVue.jsをhaxeで
Vue.jsをhaxeで
 
altJSの選び方
altJSの選び方altJSの選び方
altJSの選び方
 
DataGridを自前実装する話
DataGridを自前実装する話DataGridを自前実装する話
DataGridを自前実装する話
 
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeオブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
Metro Style AppsでMSIL ver.2012/06/09
Metro Style AppsでMSILver.2012/06/09Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSIL ver.2012/06/09
 
Metro Style AppsでMSIL
Metro Style AppsでMSILMetro Style AppsでMSIL
Metro Style AppsでMSIL
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
CommonJSの話
CommonJSの話CommonJSの話
CommonJSの話
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET ProgrammingIron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programming
 

Recently uploaded

Recently uploaded (12)

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

MQTTとAMQPと.NET