Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PicoRubyでMQTTサポートの実装をしている話 (3) ryosk7 Omotesando.rb #106
Slide 2
Slide 2 text
Omotesando.rb #106
Slide 3
Slide 3 text
これはシリーズ物のLTです。 過去のtalkはspeackerdeckにアップロードしてます。 Omotesando.rb #106
Slide 4
Slide 4 text
ギークハウス新宿というシェアハウスに住んでいます。 Omotesando.rb #106
Slide 5
Slide 5 text
ほとんどの住人がエンジニアという変わったシェアハウスです。 Omotesando.rb #106
Slide 6
Slide 6 text
趣味でPicoRubyを使ってスマートロックを作ってます。 Omotesando.rb #106
Slide 7
Slide 7 text
近い話を東京RubyKaigiの前夜祭でしました。 Omotesando.rb #106
Slide 8
Slide 8 text
スマートロックを作るために、PicoRubyでMQTTの実装をしてい ます! Omotesando.rb #106
Slide 9
Slide 9 text
っていうのを前回話しそびれてしまったので、今回はそんな話を したいと思います。 あの日から進捗もあるので話したい!!!! Omotesando.rb #106
Slide 10
Slide 10 text
Omotesando.rb #106
Slide 11
Slide 11 text
おさらい Omotesando.rb #106
Slide 12
Slide 12 text
MQTTについて Message Queue Telemetry Transport の略 IoTデバイス向けの軽量な通信プロトコル パブリッシュ/サブスクライブ型のメッセージング TCP/IPをベースとした通信 QoSレベル(0,1,2)でメッセージの配信保証 最小限のヘッダで通信量を削減 Omotesando.rb #106
Slide 13
Slide 13 text
MQTTの仕組み ブローカーとクライアント MQTT Broker Publisher 1 Publisher 2 Subscriber 1 Subscriber 2 Publish Publish Subscribe Subscribe Omotesando.rb #106
Slide 14
Slide 14 text
前回は、subscribe時にコールバックでRubyを実行できるようにし た。 Omotesando.rb #106
Slide 15
Slide 15 text
しかし、実はこれメモリリークが起きていた!!!! Omotesando.rb #106
Slide 16
Slide 16 text
5回subscribeを受け取るとメモリ枯渇が起きてしまう。 Omotesando.rb #106
Slide 17
Slide 17 text
これをそのままスマートロックで使うと、 Omotesando.rb #106
Slide 18
Slide 18 text
5回くらい開け閉めすると2度と開かない!!!!! Omotesando.rb #106
Slide 19
Slide 19 text
これではいけない!!! Omotesando.rb #106
Slide 20
Slide 20 text
地道なデバッグを続けていると、subscribeする度にコンパイルを 繰り返し、メモリがどんどん溜まっていることがわかった。 Omotesando.rb #106
Slide 21
Slide 21 text
一度コンパイル済みのコールバック用Rubyコードがある場合は、 コンパイルしない条件を追加して回避した。(暫定対処) Omotesando.rb #106
Slide 22
Slide 22 text
これでメモリリークが起きないMQTT実装が完成。 Omotesando.rb #106
Slide 23
Slide 23 text
RubyでLチカを動かせるし、 カスタムメッセージを吐かせたり、 サーボモーター動かしたり ...etc Omotesando.rb #106
Slide 24
Slide 24 text
いろいろできるようになった! Omotesando.rb #106
Slide 25
Slide 25 text
今後の目標 TLS対応 mqtt gemに合わせたAPIを作る OTA対応 コールバックの暫定実装を修正して、MQTT経由でコールバックコードを更新 できるようにする Omotesando.rb #106
Slide 26
Slide 26 text
ロードマップ TLS encryption support POSIX support MQTT 5.0 features QoS levels 1 and 2 support MQTT over WebSocket Last Will and Testament Over-the-Air (OTA) updates (callback script only) Omotesando.rb #106
Slide 27
Slide 27 text
スマートロック開発は続く。 。 。 Omotesando.rb #106
Slide 28
Slide 28 text
おわり Omotesando.rb #106