RubyとIoTをもっと簡単にする...

64
RubyとIoTをもっと簡単にする Tamashii誕生の話 株式会社ファイブルビー 侯 大偉 RubyWorld Conference 2017

Transcript of RubyとIoTをもっと簡単にする...

Page 1: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

RubyとIoTをもっと簡単にする Tamashii誕生の話

株式会社ファイブルビー 侯 大偉

RubyWorld Conference 2017

Page 2: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

Tamashiiのきっかけは何ですか?

Tamashii開発の話

実際の運用

課題

アジェンダ

Page 3: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

Tamashiiのきっかけは何ですか?

Tamashii開発の話

実際の運用

課題

アジェンダ

Page 4: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

侯 大偉(コウ ダイイ) or David

台湾出身

2009年 -> 来日

2012年 -> Ruby エンジニア

2017年 -> 株式会社ファイブルビー

whoami

Page 5: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

株式会社ファイブルビー

台湾でRuby大好きな上記3人が作った会社の日本法人

2017年3月、日本法人を立ち上げました!

2016 RWC スピーカー 2015 RWC スピーカー 2015 RWC スピーカー

Page 6: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

受託開発

コンサルティング

Ruby教育

会社業務

Page 7: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

会社理念

開発者

企業

コミュニティ

5xRuby

仕事の増加

コミュニティへの支援高品質なプログラムの提供

開発者への指導 イベント

ソリューション

Page 8: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

Tamashiiのきっかけは何ですか?

Tamashii開発の話

実際の運用

課題

アジェンダ

Page 9: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

IoTとは?

Page 10: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

–wikipedia

IoT(Internet of Thing)とは、日本語に訳すと“モノのインターネット”で、パソコンやプリンター、サーバー以外の様々な「モノ(物)」(例:冷蔵庫など)がインターネットに接続され、情報交換することにより相互に制御するされる仕組みです。

Page 11: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

(前年度比予測)

Page 12: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

Tamashiiのきっかけは何ですか?

Tamashii開発の話

実際の運用

課題

アジェンダ

Page 13: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Tamashiiってなんですか?

Page 14: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Tamashiiとは IoTデバイスとウェブアプリを簡単に 統合するために作られたオープンソースです

Page 15: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

名前はなぜTamashiiなのか?

Page 16: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Tamashiiは 何を解決したいのか?

Page 17: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Ruby言語を使用してハードウェアのコントロールをもっと単純化(簡単化)したい

開発者がビジネスロジックの開発に集中して欲しい

RubyのIoTエコシステムを作りたい

What to Solve?

Page 18: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

ブザー:音を出す

LCD:テキストを表示する

RFIDリーダー:カードデータを読み込む

High-level API

buzzer = Buzzer.newbuzzer.beep(3) #=> Beep, Beep, Beep!

display = Lcd.newdisplay.print(“Ruby World Conference 2017!")

reader = RfidReader.newif data = reader.read  puts "Card data: #{data}"end

Page 19: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Device Wrapper

[0x49, 0x4d, 0x49, 0x19, 0x1d, 0x19].each do |byte|i2c_write_byte(byte)

end# => "A"

LCDで”A”という文字を表示する

gem i2c

Page 20: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Device Wrapper

module Lcdclass Lcm1602I2C < Base

def print(message)# Lots of tedious stuff

endend

end

Lcd::Lcm1602I2C.new.print("A")

Page 21: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

技術の話

http://rubykaigi.org/2017/presentations/lctseng.html

Tamashii - Create Rails IoT applications more easily

Henry Tseng

2017 RubyKaigi

Page 22: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

Tamashiiのきっかけは何ですか?

Tamashii開発の話

実際の運用

課題

アジェンダ

Page 23: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

一番最初は..

Page 24: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

目の前の問題を解決したい

Rubyで遊びたい

現状を改善したい

悔しい気持ち

Page 25: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2015年9月11、12日

Page 26: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?
Page 27: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?
Page 28: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?
Page 29: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

ラズベリーパイ

Raspberry Pi 3 Model B

CPU: 1.2GHz Broadcom BCM2837 64bit RAM: 1GB Wireless LAN Bluetooth 40-pin extended GPIO 4 USB 2 ports HDMI

Page 30: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

RFIDリーダー

MFRC522-PA

RFIDリーダー 13.56 MHz

Page 31: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

ラズベリーパイ + RFIDリーダー

ラズベリーパイ

RFIDリーダー ブザー

Page 32: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

名札の後ろでRFIDラベルを付ける

セッション入る前にデバイスにタッチする

参加者の興味あるセッションがわかる

ラズベリーパイ + RFIDリーダー

Page 33: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Demo video

Page 34: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?
Page 35: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

ただ、一つ問題点があり、このシステムは「Python」の言語で作成

されておりました。

Rubyエンジニアとしては悔しいですね

Page 36: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2016年3月のある日.. うちの社長と新入社員Henryがこのような会話がありました..

Page 37: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

今年(2016年)12月ruby conf taiwanの会場でrubyのコードでこのデバイスを動いてくれ!

はい……分かりました!

Henry!このデバイスは去年(2015)ruby conf taiwanの参加者登録デバイスです!

おお!面白いですね!

Page 38: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

なぜTamashiiを作りたい

Tamashii開発の話

実際の運用

課題

アジェンダ

Page 39: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

3ヶ月後、2016年6月..

Page 40: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2015年のRuby Conf Taiwanと同じ機能のrubyバージョンが出来ました!

一代目

Page 41: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

パフォーマンスが悪かった

RFID検出には1秒以上かかってしまった

問題点

Page 42: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

Check-in Server(Manager)

Agent

データコマンド例:reboot, stop

Page 43: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

AgentCheck-in Server

(Manager)

Xvfb + headless

Page 44: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2016年7月~11月

Page 45: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

AgentCheck-in Server

(Manager)

Page 46: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2016年12月 Ruby Conf Taiwan

Page 47: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

ラズベリーパイ

RFIDリーダー ブザー

Page 48: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

action_cable_clientのruby gemを使う

RFIDの検出は1秒以内になった

会場でデバイス17個 300人の参加者

無事…………

二代目

Page 49: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

今年(2016年)の台湾ruby conf会場でrubyのコードでこのデバイスを動いてくれ!

2016年3月のある日..

👍

Page 50: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

デバイスをコントロールするため、既存のgemを使います

デバイスがサーバと自動的に再接続ができない

コードがモジュール化されていない

問題点

Page 51: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2017年1月~

Page 52: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

rails依存の問題を改善したい

コードをモジュール化したい

新しいデバイスをもっと簡単に追加したい

改善したいこと

Page 53: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

rails action_cableの使用をやめる

サーバとクライアント側のwebsocket通信は自前で実装する -> tamashii

rake-basedのウェブフレームワークであれば、使えます!

rails依存の問題

Page 54: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

tamashii -> サーバ側のwebsocketライブラリー

tamashii-client -> デバイス側のwebsocketライブラリー

tamashii-common -> 共通ライブラリー

tamashii-manager -> サーバ側使われるライブラリー

tamashii-agent -> デバイス側使われるライブラリー

Gem

Page 55: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

モジュール化することによって、tamashii-agentのgemを使えば、最低限のIoTデバイス側実装が終わり、詳しく定義したい部分だけ実装すれば終わり!

デバイス追加を簡単にする

Page 56: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

https://tamashii.io/

Page 57: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

https://github.com/tamashii-io

Page 58: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

なぜTamashiiを作りたい

Tamashii開発の話

実例紹介

課題

アジェンダ

Page 59: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

tamashii-clockin

Page 60: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

http://panfest2017.panmedia.asia/

Page 61: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

自己紹介

IoTについて

Tamashiiとは?

なぜTamashiiを作りたい

Tamashii開発の話

実例紹介

課題

アジェンダ

Page 62: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

もっと幅広いIoTデバイスをサポートする

IoTとはいえ、まだラズベリーパイだけのこと試したので、これからもっとハードウェアのスペックが低いデバイスを試さないと

デバイス側はcrubyによる実装ですが、mrubyにしたい

コンフィギュレーションをもっと簡単にしたい

リファクタリング & テストカバレッジ

In Future

Page 63: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

ご静聴、ありがとうございました!

Page 64: RubyとIoTをもっと簡単にする Tamashii誕生の話2017.rubyworld-conf.org/files/A-3.pdf自己紹介 IoTについて Tamashiiとは? Tamashiiのきっかけは何ですか?

2018.4.27-28 Taiwan Ruby Conference

https://2018.rubyconf.tw/