SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
2015/11/12IoT with Ruby/mruby (RubyWo
rld Conference 2015)
1
IoT with Ruby/mruby
RubyWorld Conference 2015
2015/11/12
Computer Engineering and Consulting ltd.
Tetsuya Hirota
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)2
Introduction
In the Japan OSS Promotion Forum, studied IoT with Ruby/mruby
from last year, and developed the sample. This time, will present
last year's result, technical challenges, and this year's activities.
● About Me
● OSS Promotion Forum
● IoT
● Overview (Last years sample)
● Technical Issues
● Countermeasures
● Coexistence of mruby and C
● Performance of HTTP polling communication system
● What we will do in next year
● Questions and Answers
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)3
About Me – Ruby, Matsue and Me
I have come to Matsue, first in 2011, and this time is fifth.
Matsue is the beautiful city of water.
And I interested in the castle, Matsue Castle is great.
And …
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)4
About Me - Makinohara
I'm from Makinohara of Shizuoka pref.
Makinohara has the largest tea plantations in Japan.
My home is surrounded by tea field and nature.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)5
About Me - My company
Introducing my company only a little.
I am working in the CEC as
an IT infrastructure engineer.
CEC ( http://www.cec-ltd.co.jp/ )
CEC is a systems integrator in Japan.
Line of businesses:
● Industry automation (e.g. Factory simulating/monitoring software)
● System Integration (e.g. Contracted software development)
● Platform Integration (e.g. Datacenter, Cloud service)
I was in until last year a developing Web systems department.
Now, I am in a department of factory automation called Smart Factory
unit.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)6
Concept of The Smart Factory
Building Factory Information Infrastructure, and making efficient
planning and production activities.
● Building Factory Information Infrastructure. (IoT)
● The most suitable product line design support. (Simulator)
● Support of production activities. (MES) (Future)
● Traceability, Big Data analysis, etc. (Future)
Big Data
IoT
Big Data
IoT
Factory Information
Infrastructure
Facteye - Equipment
RaFLOW - Person
Multi vender and equipments
設
備
設
計
設
備
設
計
開
発
・
設
置
開
発
・
設
置
稼
働
監
視
稼
働
監
視
保
全
保
全
ECM (for equipment)
RaAP
Virfit/RoboDiA
SequenceEye
Facteye
Preventive
maintenance
生
産
計
画
生
産
計
画
進
度
・
予
測
進
度
・
予
測
品
質
品
質
出
来
高
出
来
高
SCM (for product)
Production schedule
management
Quality management
MES
Deep Learning
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)7
OSS Promotion Forum
OSS Promotion Forum is the organization which consists of the users,
vendors, scholars and experts of information systems.
The mission of Japan OSS Promotion Forum is
➢ to prevent problems of vendor lock-in,
and increase choices by OSS
➢ promotion of technology
innovation with OSS
➢ human resource
development for OSS
I participate some studies at Application sub committee and focus on IoT with
Ruby/mruby.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)8
OSS Promotion Forum IoT teams member
エルエスアイ開発研究所
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)9
IoT
The Internet of Things (IoT)
the network of physical objects or "things" embedded with electronics,
software, sensors, and network connectivity,
which enables these objects to collect and exchange data.
(Wikipedia (Oct. 15, 2015, 04:08 UTC)
https://en.wikipedia.org/wiki/Internet_of_Things )
Application
➢ Environmental monitoring
➢ Infrastructure management
➢ Energy management
etc.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)10
IoT
Hype Cycle
Press Release: Gartner's 2015
Hype Cycle for Emerging
Technologies Identifies the
Computing Innovations That
Organizations Should Monitor
http://www.gartner.com/newsroo
m/id/3114217
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)11
Overview (Last years sample)
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)12
Hardware configuration (Last years sample)
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)13
Packages Layout (Last years sample)
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)14
Technical Issues - Sensor
➢ What should be made with mruby
and what should be made with C.
(C library also uses memory area.)
➢ Isn't it possible to operate on more
low-price micro controller.
(e.g. Cortex-M0 based board)
➢ The difference in implementation by
type of the micro controller
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)15
Technical Issues – Cloud
➢ Not supported more than one gateway
access yet. :p
➢ Not measured cloud performance for
bulk access.
➢ Using polling communication system
over HTTP between cloud and gateway,
cloud and mobile.
(That load seems high.)
➢ Security measures is needed.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)16
Countermeasures - Sensor
➢ What should be made with mruby and what
should be made with C.
(C library also uses memory area.)
⇛ We made some
small mrbgems.
➢ 3 mrbgems for fm3
➢ Develop with C and
operate register directly
⇛ We wrote main loop in C
These source code are shared on Github
https://github.com/ossforumjp-app-IoT
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)17
Why create small mrbgems
I will have all in one bento.
PC has more than 4000 times RAM of
micro controller.
Also Elephant weight is 4000 times of
Kitten.
Like as PC with OS.
Elephant: http://free-illustrations.gatag.net/2013/11/16/050000.html
Cat: http://blogs.yahoo.co.jp/studio_robin2008/2060732.html
Makunouchi Bento: http://clipart-food.com/26packed-lunch/01-packed-lunch-dl.html
Bento box and side dishes:
[ 幼児の学習素材館 ] http://happylilac.net/asobi-obento.html Illustration: がみさん
I want to arrange just little some dishes.
Like as micro controller with
mruby and mrbgems.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)18
Why main loop was written in C (1)
We made the main loop with C.
That is why the problem may be occurred if it makes with
mruby.
For example:
main.rb (excerpt):
i = 0
loop do
sensor = gpio.get_data if i % 100 == 0
recvdata = serial.get_data
if recvdata
(0 .. 7).each { |x| gpio.set_data(x, 1) if recvdata[x] = 0x01 }
end
i += 1
i = 0 if i > 100
mssleep 1
end
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)19
Why main loop was written in C (2)
> GC.start
=> nil
> p ObjectSpace.count_objects; 1000000.times { a = "a" }; ObjectSpace.count_objects
{:TOTAL=>2048, :FREE=>1083, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7,
:T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>694, :T_ARRAY=>47, :T_HASH=>2,
:T_STRING=>89, :T_EXCEPTION=>1, :T_ENV=>15, :T_DATA=>1}
=> {:TOTAL=>2048, :FREE=>1120, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7,
:T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>691, :T_ARRAY=>1, :T_HASH=>1,
:T_STRING=>103, :T_EXCEPTION=>1, :T_ENV=>14, :T_DATA=>1}
>
> GC.disable
=> false
> p ObjectSpace.count_objects; 1000000.times { a = "a" }; ObjectSpace.count_objects
{:TOTAL=>2048, :FREE=>859, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7, :T_ICLASS=>11,
:T_SCLASS=>50, :T_PROC=>698, :T_ARRAY=>94, :T_HASH=>2, :T_STRING=>259,
:T_EXCEPTION=>1, :T_ENV=>18, :T_DATA=>1}
=> {:TOTAL=>1001472, :FREE=>153, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7,
:T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>701, :T_ARRAY=>141, :T_HASH=>3,
:T_STRING=>1000336, :T_EXCEPTION=>1, :T_ENV=>20, :T_DATA=>1}
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)20
Why main loop was written in C (3)
Do you know where the problem is occurred?
It is range.
The received data from serial is 8 bytes, if keeping
receiving, range object is generated every 1ms.
main.rb (excerpt):
i = 0
loop do
sensor = gpio.get_data if i % 100 == 0
recvdata = serial.get_data
if recvdata
(0 .. 7).each { |x| gpio.set_data(x, 1) if recvdata[x] = 0x01 }
end
i += 1
i = 0 if i > 100
mssleep 1
end
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)21
Why main loop was written in C (4)
> p Time.now; 1000000.times { a = "a" }; Time.now
Fri Oct 30 19:09:24 2015
=> Fri Oct 30 19:09:25 2015
> GC.enable
=> true
> p Time.now; 1000000.times { a = "a"; GC.start }; Time.now
Fri Oct 30 19:10:05 2015
=> Fri Oct 30 19:11:58 2015
A micro controller picks up events by loop processing.
If a literal string, array, hash, range etc. is used in the loop, RAM is
consumed.
Or GC occurs frequently, and processing becomes slow.
So the main loop was written by C and a part equivalent to an event
handler was written by mruby.
1sec
113sec
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)22
Mruby and C - Sensor
●The advantage of mruby:
●Simple and plain code.(in particular, string, network communication, etc.)
●Byte code separable.
●The advantage of C:
●Hardware access. (and able to the power management)
●Fixing resources.
●Let's make small mrbgem. (having common api for many devices)
●Making main loop with C, logic with mruby.
The same code can execute on other devices by changing small
mrbgems. And the logic part will code and replace easily.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)23
Countermeasures - Cloud
Cloud performance for bulk access…
Unfortunately, I didn't make for
performance measurement.
We will report at the result report meeting
of the OSS Promotion Forum in January
2016.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)24
Addition
I developed sensor data generator for measurement of
cloud performance.
There might be a person who uses it, so about 1 person for
1 million people, made it a gem and up to rubygems site.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)25
What we will do in next year
➢ Now, the byte code is not separated.
We will try to separate the byte code,
and change the action of micro
controller without compiling.
➢ We will use MQTT for server, gateway
and mobile, to reduce the protocol
overhead and to be more simple
their codes.
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)26
● Contact
OSS Promotion Forum Application sub committee
Web site: http://ossforum.jp/application_sub
Github: https://github.com/ossforumjp-app-IoT
CEC
Web site: http://www.cec-ltd.co.jp/
Tetsuya Hirota
Facebook: https://www.facebook.com/tetsuya.hirota
Github: https://github.com/constdrop
2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)27
エルエスアイ開発研究所
Thanks!

Contenu connexe

Tendances

Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicICS
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivitySamsung Open Source Group
 
[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt
[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt
[Webinar] QtSerialBus: Using Modbus and CAN bus with QtICS
 
Ripes: Teaching Computer Architecture Through Visual and Interactive Simulators
Ripes: Teaching Computer Architecture Through Visual and Interactive SimulatorsRipes: Teaching Computer Architecture Through Visual and Interactive Simulators
Ripes: Teaching Computer Architecture Through Visual and Interactive SimulatorsRISC-V International
 
RaVioli: A Parallel Vide Processing Library with Auto Resolution Adjustability
RaVioli: A Parallel Vide Processing Library with Auto Resolution AdjustabilityRaVioli: A Parallel Vide Processing Library with Auto Resolution Adjustability
RaVioli: A Parallel Vide Processing Library with Auto Resolution AdjustabilityMatsuo and Tsumura lab.
 
Maximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN BusMaximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN BusJanel Heilbrunn
 
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...RISC-V International
 

Tendances (9)

LEGaTO Integration
LEGaTO IntegrationLEGaTO Integration
LEGaTO Integration
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business Logic
 
Project P Open Workshop
Project P Open WorkshopProject P Open Workshop
Project P Open Workshop
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt
[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt
[Webinar] QtSerialBus: Using Modbus and CAN bus with Qt
 
Ripes: Teaching Computer Architecture Through Visual and Interactive Simulators
Ripes: Teaching Computer Architecture Through Visual and Interactive SimulatorsRipes: Teaching Computer Architecture Through Visual and Interactive Simulators
Ripes: Teaching Computer Architecture Through Visual and Interactive Simulators
 
RaVioli: A Parallel Vide Processing Library with Auto Resolution Adjustability
RaVioli: A Parallel Vide Processing Library with Auto Resolution AdjustabilityRaVioli: A Parallel Vide Processing Library with Auto Resolution Adjustability
RaVioli: A Parallel Vide Processing Library with Auto Resolution Adjustability
 
Maximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN BusMaximizing High Performance Applications with CAN Bus
Maximizing High Performance Applications with CAN Bus
 
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
Klessydra-T: Designing Configurable Vector Co-Processors for Multi-Threaded E...
 

Similaire à IoT with Ruby/mruby - RubyWorld Conference 2015

RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...Datacratic
 
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...Intel® Software
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCDamienCarpy
 
DDos, Peering, Automation and more
DDos, Peering, Automation and moreDDos, Peering, Automation and more
DDos, Peering, Automation and moreInternet Society
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...VMware Tanzu
 
PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...
PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...
PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...Puppet
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureYshay Yaacobi
 
Speeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCCSpeeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCCinside-BigData.com
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019The Eclipse Foundation
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?Steve Poole
 
Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Chris Grundemann
 
BKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End StoryBKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End StoryLinaro
 
202104 technical challenging and our solutions - golang taipei
202104   technical challenging and our solutions - golang taipei202104   technical challenging and our solutions - golang taipei
202104 technical challenging and our solutions - golang taipeiRonald Hsu
 
digital-twins-webthings-iotjs-20190512rzr
digital-twins-webthings-iotjs-20190512rzrdigital-twins-webthings-iotjs-20190512rzr
digital-twins-webthings-iotjs-20190512rzrPhil www.rzr.online.fr
 
Overview Of Parallel Development - Ericnel
Overview Of Parallel Development -  EricnelOverview Of Parallel Development -  Ericnel
Overview Of Parallel Development - Ericnelukdpe
 
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrPhil www.rzr.online.fr
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro FrontendMiki Lombardi
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Veselin Pizurica
 

Similaire à IoT with Ruby/mruby - RubyWorld Conference 2015 (20)

RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
RTBkit Meetup - Developer Spotlight, Behind the Scenes of RTBkit and Intro to...
 
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
Use C++ and Intel® Threading Building Blocks (Intel® TBB) for Hardware Progra...
 
Meetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaCMeetup 2020 - Back to the Basics part 101 : IaC
Meetup 2020 - Back to the Basics part 101 : IaC
 
DDos, Peering, Automation and more
DDos, Peering, Automation and moreDDos, Peering, Automation and more
DDos, Peering, Automation and more
 
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 
PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...
PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...
PuppetConf 2016: Why Network Automation Matters, and What You Can Do About It...
 
Not my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructureNot my problem - Delegating responsibility to infrastructure
Not my problem - Delegating responsibility to infrastructure
 
Speeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCCSpeeding up Programs with OpenACC in GCC
Speeding up Programs with OpenACC in GCC
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?
 
Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023Interconnection Automation For All - Extended - MPS 2023
Interconnection Automation For All - Extended - MPS 2023
 
BKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End StoryBKK16-500K2 CTO talk - The End to End Story
BKK16-500K2 CTO talk - The End to End Story
 
202104 technical challenging and our solutions - golang taipei
202104   technical challenging and our solutions - golang taipei202104   technical challenging and our solutions - golang taipei
202104 technical challenging and our solutions - golang taipei
 
digital-twins-webthings-iotjs-20190512rzr
digital-twins-webthings-iotjs-20190512rzrdigital-twins-webthings-iotjs-20190512rzr
digital-twins-webthings-iotjs-20190512rzr
 
Overview Of Parallel Development - Ericnel
Overview Of Parallel Development -  EricnelOverview Of Parallel Development -  Ericnel
Overview Of Parallel Development - Ericnel
 
webthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzrwebthing-iotjs-tizenrt-cdl2018-20181117rzr
webthing-iotjs-tizenrt-cdl2018-20181117rzr
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?
 
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-CentersTowards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
Towards Edge Computing as a Service: Dynamic Formation of the Micro Data-Centers
 

Dernier

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 

Dernier (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 

IoT with Ruby/mruby - RubyWorld Conference 2015

  • 1. 2015/11/12IoT with Ruby/mruby (RubyWo rld Conference 2015) 1 IoT with Ruby/mruby RubyWorld Conference 2015 2015/11/12 Computer Engineering and Consulting ltd. Tetsuya Hirota
  • 2. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)2 Introduction In the Japan OSS Promotion Forum, studied IoT with Ruby/mruby from last year, and developed the sample. This time, will present last year's result, technical challenges, and this year's activities. ● About Me ● OSS Promotion Forum ● IoT ● Overview (Last years sample) ● Technical Issues ● Countermeasures ● Coexistence of mruby and C ● Performance of HTTP polling communication system ● What we will do in next year ● Questions and Answers
  • 3. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)3 About Me – Ruby, Matsue and Me I have come to Matsue, first in 2011, and this time is fifth. Matsue is the beautiful city of water. And I interested in the castle, Matsue Castle is great. And …
  • 4. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)4 About Me - Makinohara I'm from Makinohara of Shizuoka pref. Makinohara has the largest tea plantations in Japan. My home is surrounded by tea field and nature.
  • 5. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)5 About Me - My company Introducing my company only a little. I am working in the CEC as an IT infrastructure engineer. CEC ( http://www.cec-ltd.co.jp/ ) CEC is a systems integrator in Japan. Line of businesses: ● Industry automation (e.g. Factory simulating/monitoring software) ● System Integration (e.g. Contracted software development) ● Platform Integration (e.g. Datacenter, Cloud service) I was in until last year a developing Web systems department. Now, I am in a department of factory automation called Smart Factory unit.
  • 6. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)6 Concept of The Smart Factory Building Factory Information Infrastructure, and making efficient planning and production activities. ● Building Factory Information Infrastructure. (IoT) ● The most suitable product line design support. (Simulator) ● Support of production activities. (MES) (Future) ● Traceability, Big Data analysis, etc. (Future) Big Data IoT Big Data IoT Factory Information Infrastructure Facteye - Equipment RaFLOW - Person Multi vender and equipments 設 備 設 計 設 備 設 計 開 発 ・ 設 置 開 発 ・ 設 置 稼 働 監 視 稼 働 監 視 保 全 保 全 ECM (for equipment) RaAP Virfit/RoboDiA SequenceEye Facteye Preventive maintenance 生 産 計 画 生 産 計 画 進 度 ・ 予 測 進 度 ・ 予 測 品 質 品 質 出 来 高 出 来 高 SCM (for product) Production schedule management Quality management MES Deep Learning
  • 7. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)7 OSS Promotion Forum OSS Promotion Forum is the organization which consists of the users, vendors, scholars and experts of information systems. The mission of Japan OSS Promotion Forum is ➢ to prevent problems of vendor lock-in, and increase choices by OSS ➢ promotion of technology innovation with OSS ➢ human resource development for OSS I participate some studies at Application sub committee and focus on IoT with Ruby/mruby.
  • 8. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)8 OSS Promotion Forum IoT teams member エルエスアイ開発研究所
  • 9. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)9 IoT The Internet of Things (IoT) the network of physical objects or "things" embedded with electronics, software, sensors, and network connectivity, which enables these objects to collect and exchange data. (Wikipedia (Oct. 15, 2015, 04:08 UTC) https://en.wikipedia.org/wiki/Internet_of_Things ) Application ➢ Environmental monitoring ➢ Infrastructure management ➢ Energy management etc.
  • 10. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)10 IoT Hype Cycle Press Release: Gartner's 2015 Hype Cycle for Emerging Technologies Identifies the Computing Innovations That Organizations Should Monitor http://www.gartner.com/newsroo m/id/3114217
  • 11. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)11 Overview (Last years sample)
  • 12. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)12 Hardware configuration (Last years sample)
  • 13. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)13 Packages Layout (Last years sample)
  • 14. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)14 Technical Issues - Sensor ➢ What should be made with mruby and what should be made with C. (C library also uses memory area.) ➢ Isn't it possible to operate on more low-price micro controller. (e.g. Cortex-M0 based board) ➢ The difference in implementation by type of the micro controller
  • 15. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)15 Technical Issues – Cloud ➢ Not supported more than one gateway access yet. :p ➢ Not measured cloud performance for bulk access. ➢ Using polling communication system over HTTP between cloud and gateway, cloud and mobile. (That load seems high.) ➢ Security measures is needed.
  • 16. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)16 Countermeasures - Sensor ➢ What should be made with mruby and what should be made with C. (C library also uses memory area.) ⇛ We made some small mrbgems. ➢ 3 mrbgems for fm3 ➢ Develop with C and operate register directly ⇛ We wrote main loop in C These source code are shared on Github https://github.com/ossforumjp-app-IoT
  • 17. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)17 Why create small mrbgems I will have all in one bento. PC has more than 4000 times RAM of micro controller. Also Elephant weight is 4000 times of Kitten. Like as PC with OS. Elephant: http://free-illustrations.gatag.net/2013/11/16/050000.html Cat: http://blogs.yahoo.co.jp/studio_robin2008/2060732.html Makunouchi Bento: http://clipart-food.com/26packed-lunch/01-packed-lunch-dl.html Bento box and side dishes: [ 幼児の学習素材館 ] http://happylilac.net/asobi-obento.html Illustration: がみさん I want to arrange just little some dishes. Like as micro controller with mruby and mrbgems.
  • 18. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)18 Why main loop was written in C (1) We made the main loop with C. That is why the problem may be occurred if it makes with mruby. For example: main.rb (excerpt): i = 0 loop do sensor = gpio.get_data if i % 100 == 0 recvdata = serial.get_data if recvdata (0 .. 7).each { |x| gpio.set_data(x, 1) if recvdata[x] = 0x01 } end i += 1 i = 0 if i > 100 mssleep 1 end
  • 19. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)19 Why main loop was written in C (2) > GC.start => nil > p ObjectSpace.count_objects; 1000000.times { a = "a" }; ObjectSpace.count_objects {:TOTAL=>2048, :FREE=>1083, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7, :T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>694, :T_ARRAY=>47, :T_HASH=>2, :T_STRING=>89, :T_EXCEPTION=>1, :T_ENV=>15, :T_DATA=>1} => {:TOTAL=>2048, :FREE=>1120, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7, :T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>691, :T_ARRAY=>1, :T_HASH=>1, :T_STRING=>103, :T_EXCEPTION=>1, :T_ENV=>14, :T_DATA=>1} > > GC.disable => false > p ObjectSpace.count_objects; 1000000.times { a = "a" }; ObjectSpace.count_objects {:TOTAL=>2048, :FREE=>859, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7, :T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>698, :T_ARRAY=>94, :T_HASH=>2, :T_STRING=>259, :T_EXCEPTION=>1, :T_ENV=>18, :T_DATA=>1} => {:TOTAL=>1001472, :FREE=>153, :T_OBJECT=>3, :T_CLASS=>45, :T_MODULE=>7, :T_ICLASS=>11, :T_SCLASS=>50, :T_PROC=>701, :T_ARRAY=>141, :T_HASH=>3, :T_STRING=>1000336, :T_EXCEPTION=>1, :T_ENV=>20, :T_DATA=>1}
  • 20. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)20 Why main loop was written in C (3) Do you know where the problem is occurred? It is range. The received data from serial is 8 bytes, if keeping receiving, range object is generated every 1ms. main.rb (excerpt): i = 0 loop do sensor = gpio.get_data if i % 100 == 0 recvdata = serial.get_data if recvdata (0 .. 7).each { |x| gpio.set_data(x, 1) if recvdata[x] = 0x01 } end i += 1 i = 0 if i > 100 mssleep 1 end
  • 21. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)21 Why main loop was written in C (4) > p Time.now; 1000000.times { a = "a" }; Time.now Fri Oct 30 19:09:24 2015 => Fri Oct 30 19:09:25 2015 > GC.enable => true > p Time.now; 1000000.times { a = "a"; GC.start }; Time.now Fri Oct 30 19:10:05 2015 => Fri Oct 30 19:11:58 2015 A micro controller picks up events by loop processing. If a literal string, array, hash, range etc. is used in the loop, RAM is consumed. Or GC occurs frequently, and processing becomes slow. So the main loop was written by C and a part equivalent to an event handler was written by mruby. 1sec 113sec
  • 22. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)22 Mruby and C - Sensor ●The advantage of mruby: ●Simple and plain code.(in particular, string, network communication, etc.) ●Byte code separable. ●The advantage of C: ●Hardware access. (and able to the power management) ●Fixing resources. ●Let's make small mrbgem. (having common api for many devices) ●Making main loop with C, logic with mruby. The same code can execute on other devices by changing small mrbgems. And the logic part will code and replace easily.
  • 23. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)23 Countermeasures - Cloud Cloud performance for bulk access… Unfortunately, I didn't make for performance measurement. We will report at the result report meeting of the OSS Promotion Forum in January 2016.
  • 24. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)24 Addition I developed sensor data generator for measurement of cloud performance. There might be a person who uses it, so about 1 person for 1 million people, made it a gem and up to rubygems site.
  • 25. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)25 What we will do in next year ➢ Now, the byte code is not separated. We will try to separate the byte code, and change the action of micro controller without compiling. ➢ We will use MQTT for server, gateway and mobile, to reduce the protocol overhead and to be more simple their codes.
  • 26. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)26 ● Contact OSS Promotion Forum Application sub committee Web site: http://ossforum.jp/application_sub Github: https://github.com/ossforumjp-app-IoT CEC Web site: http://www.cec-ltd.co.jp/ Tetsuya Hirota Facebook: https://www.facebook.com/tetsuya.hirota Github: https://github.com/constdrop
  • 27. 2015/11/12IoT with Ruby/mruby (RubyWorld Conference 2015)27 エルエスアイ開発研究所 Thanks!