51
2015/03/12 CYBIRD デブコミュ

デブコミュ#20150312

Embed Size (px)

Citation preview

Page 1: デブコミュ#20150312

2015/03/12 CYBIRD デブコミュ

Page 2: デブコミュ#20150312

こんばんは!

Page 3: デブコミュ#20150312

社外から飛び入り参加の 「今井」です

Page 4: デブコミュ#20150312

っていうか、お前だれよ?

Page 5: デブコミュ#20150312

今井 大介 IMAI, Daisuke 1972/07/17生まれ42歳

BEENOS株式会社 執行役員(技術担当) ・グループ内のIT基盤、セキュリティ基盤の管理 ・新規事業立ち上げ ・エンジニアリング&デザイン ・EC/決済

Page 6: デブコミュ#20150312

1997~ 【新卒】株式会社ベネッセコーポレーション 2000~ 【起業】ギガフロップス株式会社 携帯向けのポータルサイトの立ち上げ、副社長兼CTO

2003~ 【バイアウト】株式会社サイバード 事業並びに会社の売却→技術部マネージャ

2005~ 【Uターン】石見ケーブルビジョン株式会社 CATV事業の立ち上げでインターネット側の担当

2010~ 株式会社ネットプライスドットコム →BEENOS株式会社(社名変更:現職)

Page 7: デブコミュ#20150312

簡単に言うと、 OBのエンジニアです。

Page 8: デブコミュ#20150312

【得意な領域】 インフラ>サーバーサイド>

Webフロントエンド>NativeApp 言語はPHPが一番長い

【好きな技術】 AWS(OpsWorks、S3)

Page 9: デブコミュ#20150312

BEENOS株式会社

Page 10: デブコミュ#20150312

1999年「ネットプライス」として創業。 モバイルネット通販の第一人者として成長。 2004年マザーズ上場。 2007年より持株会社、グループ経営体制に。 2014年社名を「BEENOS株式会社」に。

クロスボーダー(越境)ECを強みとした企業グループ。海外から日本の商品を買いたい人に向け、また国内で海外の商品を買いたい人に向けたサービスなどを展開。 また、USでは30を超えるスタートアップに投資、アジアではECマーケットプレイスや決済を手がけるスタートアップへの投資・育成にも取り組んでいる。

Page 11: デブコミュ#20150312

無茶ばかりしています。

Page 12: デブコミュ#20150312

「新規事業を始めたい、 できれば1ヶ月以内に」

Page 13: デブコミュ#20150312

「エンジニアいないけど」

Page 14: デブコミュ#20150312

「大規模アクセスが想定される 通販サイトたちあげたい、

一ヶ月で」

Page 15: デブコミュ#20150312

「エンジニアいないけど」

Page 16: デブコミュ#20150312

なのでエンジニアとデザイナの ハンズオンチーム作ってました

Page 17: デブコミュ#20150312

最近の興味

Page 18: デブコミュ#20150312

「ロボット」や「IoT」で 一緒に遊ぶ人が増得ると楽しい

Page 19: デブコミュ#20150312

「IoT気になるよね」 じゃ、ハードウェアで

遊んでみればいいじゃない。

BEENOS Inc. 執行役員(技術担当) 今井大介

Page 20: デブコミュ#20150312

ハードウェアの印象

Page 21: デブコミュ#20150312

電気回路とかよくわからないし アセンブラとか割り込みとか? 特殊な開発環境と言語?

感電したりするんじゃないの? ハードウェアが趣味とかモテなくね?

Page 22: デブコミュ#20150312

「とにかく敷居高い」

Page 23: デブコミュ#20150312

そんなことない。

Page 24: デブコミュ#20150312

例えばArduino

Page 25: デブコミュ#20150312

無料の専用IDE(Win/Mac/Linux) C言語ライクな専用言語

簡易にハードを扱うライブラリ 回路わからなくてもコードで何とか 「とにかく敷居は下がった」

Page 26: デブコミュ#20150312

それでも感じる超えられない壁

Page 27: デブコミュ#20150312

ならば、ハードウェア部分は 隠匿してしまえばいい

Page 28: デブコミュ#20150312

お手本にするもの

Page 29: デブコミュ#20150312

【LeapMotionとは】 空中の手のジェスチャーでパソコンを操作できるUSBデバイス。マイノリティ・リポートか!みたいな感じで。C++やJavaScriptなどから制御可能。

Page 30: デブコミュ#20150312

leap.jsって 結構面白い仕組み

Page 31: デブコミュ#20150312

C++で動かす場合の仕組み

Page 32: デブコミュ#20150312

JavaScriptを使う場合

Page 33: デブコミュ#20150312

なんと、WebSocket Server

Page 34: デブコミュ#20150312

デバイス制御コードはシンプルなプログラムにして、 WebSocket経由でJavaScriptからアクセスさせれば、

普段から書き慣れているJavaScriptで 色々なアプリケーション作れるじゃないか!

Page 35: デブコミュ#20150312

【使う機材】 ・RaspberryPi A+(約3,500円) ・3軸加速度+ジャイロセンサー(約500円)

Page 36: デブコミュ#20150312

【RaspberryPi】 DebianベースのLinux。/bin/shでも、pythonでもrubyでも好きな言語でハードウェア制御コードが書ける。もちろん、LAMP環境なども作れる。

Page 37: デブコミュ#20150312

それなら書けるよね?

Page 38: デブコミュ#20150312

【pythonでデバイス制御】 ・pythonからRPiのピンを利用 ・センサーとはI2Cというシリアル通信 電源2本と信号線2本の4本だけのシンプルな接続で利用可能。最近デバイスがどんどん増えている。

・ごくごく単純な数値変換だけは実施

Page 39: デブコミュ#20150312

【WebSocket Server】 ・python+Tornadoで簡単に実装 ・cross originのアクセスの許容 ・thread切って、デバイスから数値取得 ・数値データをJSONでpush

Page 40: デブコミュ#20150312

{ "gyro": { "x": -605, "y": 16, "z": -114 }, "accelerometer": { "x": -840, "y": -20, "z": 15736 }, "rotation": { "x": -0.07271770519639839, "y": 3.055590994479732 } }

投げられるJSON

Page 41: デブコミュ#20150312

【JavaScript側の実装】 ・最近のブラウザならWebSocket対応 ・Serverに接続していれば、pushされればws.onmessageイベントハンドラが呼び出される。 ・JSONデータをパースしてあげればいい

Page 42: デブコミュ#20150312

(DEMO)

Page 43: デブコミュ#20150312

<html> <head> <title></title> <script language="javascript"> var ws = new WebSocket("ws://192.168.13.101:8080/ws"); ws.onopen = function() { ws.send("Hello"); }; ws.onmessage = function (evt) { try { var obj = JSON.parse(evt.data); document.getElementById('gyro_x').innerHTML = obj["gyro"]["x"]; document.getElementById('gyro_y').innerHTML = obj["gyro"]["y"]; document.getElementById('gyro_z').innerHTML = obj["gyro"]["z"]; document.getElementById('accel_x').innerHTML = obj["accelerometer"]["x"]; document.getElementById('accel_y').innerHTML = obj["accelerometer"]["y"]; document.getElementById('accel_z').innerHTML = obj["accelerometer"]["z"]; document.getElementById('rotate_x').innerHTML = obj["rotation"]["x"]; document.getElementById('rotate_y').innerHTML = obj["rotation"]["y"]; } catch(e) { } }; </script> </head> <body> <div id="sensor_data"> gyro_x:<div id="gyro_x"></div><br /> gyro_y:<div id="gyro_y"></div><br /> gyro_z:<div id="gyro_z"></div><br /> accel_x:<div id="accel_x"></div><br /> accel_y:<div id="accel_y"></div><br /> accel_z:<div id="accel_z"></div><br /> rotate_x:<div id="rotate_x"></div><br /> rotate_y:<div id="rotate_y"></div><br /> </body> </html>

超シンプル

Page 44: デブコミュ#20150312

(DEMO2)

Page 45: デブコミュ#20150312

数値として扱えるなら、 いろんなことができる。

Page 46: デブコミュ#20150312

自分の得意分野に持ち込め

Page 47: デブコミュ#20150312

ネットと連携するデバイス

Page 48: デブコミュ#20150312

ウェアラブルデバイス

Page 49: デブコミュ#20150312

色んなものが作れる。 もっともっとhackしよう。

Page 50: デブコミュ#20150312

本日のコード https://github.com/hine/

sensor_server

Page 51: デブコミュ#20150312

ご清聴 ありがとうございました。