SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
0
IoTで何をやったか
エスキュービズム・テクノロジー
エンジニア勉強会
February 19,2016
S-cubism Technology Inc.
1
1. RaspberryPiでものを動かした話
2. Yii2でAPIを外付けした話
3. Swaggerを使った話
目次
0.IoTといえば...?
Webエンジニアにとっては
• モノを作る
• 回路を作る
• 大量のデータ処理
2
0.IoTといえば...?
• モノを作る
– タブレットPCを入れる筐体を設計、発注
• もう製品化できそう
– 筐体を作って回路を入れて屋外に設置
• 進行中だけど、もうちょい時間がかかる
• 回路を作る
– 回路設計をして、機械に埋め込み、制御する
• 進行中だけど、もうちょい時間がかかる
3
RaspberryPiでモノを動かした話
今回紹介するのは、もっと簡単なIoT
ざっくり言うと
• 今まで単体で動いていたモノに
• RaspberryPiを繋ぎ込んで、
• インターネットに繋げました
4
機器構成イメージ
もともと動いていたシステムの
入力装置と制御装置を
5
※画像はイメージです
機器構成イメージ
切り離してRaspberryPiに接続
6
※画像はイメージです
機器構成イメージ
通信はRS-232Cで行う
7
※画像はイメージです
機器構成イメージ
RaspberryPiは有線LANでインターネット接続
8
※画像はイメージです
プログラムイメージ (Ruby)
9
プラス1の知識で始められるIoT
今回、Webプログラマに馴染みのないのは
RS-232Cによるシリアル通信くらい
あとは普通のWebAPIとLinuxで走るスクリプト
-> IoT向けの技術は色々あるが、
別に全部使わなくてもIoTはできる
10
2. Yii2でAPIを外付けした話
• サーバサイドはEC-Orange(OrangeDB)ベー
ス
– ECからPOSのサーバまで、1台で何でもできる
Webアプリ
• 下記が課題
– 巨大化、複雑化してメンテコストが高い
– 古いフレームワークでつらい
11
対策
• 巨大化、複雑化してメンテコストが高い
-> マイクロサービス化して細分化
• 古いフレームワークでつらい
-> 最新のフレームワークyii2を使おう
12
マイクロサービス化
• いきなり全部マイクロサービス化は無理
– 今回開発した機能は独立性が高く、
– マイクロサービス化可能だった
• いきなりマイクロサービスはハードルが高い
– なんちゃってマイクロサービスから始める
13
なんちゃってマイクロサービス
• 構築時の設定でのみで、または僅かなコード
修正でマイクロサービスとしても動く
• 実際には、メインシステムのモジュールとして
動く
-> サーバ管理コストは増えない
-> コードの独立性というメリットは教授できる
14
Yii2を利用する
• EC-Orangeでは既にyii1を使っているのでは
?
– ActiveRecord回りの出来が良くなった。
– NameSpaceとかphpの最新機能を活用できる
– yii1のExtensionは微妙なのが多い(イメージ)
• 既に社内にテンプレートプロジェクトがある
15
実際の構築方法
• 社内用yii2プロジェクトテンプレートをベース
に、APIの独自リポジトリを作成
– サーバ構築は、普通のEC-Orange+α
– リポジトリを準備後、シンボリックリンクを貼るだけ
– DBは同じものを参照
• ぶっちゃけ、単にリポジトリを分けただけ
16
3. Swaggerを使った話
下記をやりたかった
• 実装中、確認のために適当にリクエストを
投げたい
• 一応ドキュメントを残しておきたい
• 自動テストしたい
17
Swaggerとは?
• APIドキュメントを作成するツール群
• 実装のコメントから自動でドキュメントを生成
したり、ドキュメントからモックサーバを生成し
たり
• 今回は、swagger-editorのみを使った
• あまり調べられてないので、適当な使い方を
してます
18
SwaggerEditorを使てみる
• ここにアクセス
– http://editor.swagger.io/#/
• または、下記コマンドでローカルに立てる
– git clone https://github.com/swagger-
api/swagger-editor.git
– cd swagger-editor
– npm start
19
SwaggerEditor
左側の領域にyamlで定義を書き
右側にドキュメントが自動的に作成される
ドキュメントで定義に沿ったリクエストを投げられる
20
SwaggerEditor
• あくまでドキュメント作成ツールだが、簡単な
手動テストくらいはできる。
– 右側から定義に沿ったリクエストを投げられる
• ただし、下記に注意
– 投げる場合にバリデーションが入るので、必須項
目をあえて入れずにエラーを見る、というのが面
倒
– 本命のリクエストを投げる前にOptrionsメソッドを
実行するので、対応させる必要がある。
21
SwaggerEditor
• 全然使いこなせていないが、今紹介した使い
方だけでも結構便利
• 学習、準備にほとんどコストをかけずに導入
できる
• 人にAPIのテストをお願いする時にも便利
22
自動テスト
• Swaggerはテストまではサポートしていない
• レスポンススキーマ定義はJsonSchemaなの
で手動で自動テストを作成してみた
mochaをベースに、yaml読み込みモジュール
を使ってswagger.yamlを読み込み、レスポンス
がスキーマに合致するかテスト
23
自動テストコードイメージ
24
describe('Model一覧', function() {
it ('一覧が取得できる', function(done) {
api.get("/v1/models", {}, function (error,
response, body) {
console.log(body);
expect(body).to.be.jsonSchema({
type: 'array',
items: schema.get('Model')
});
done()
});
});
});
yaml = require('js-yaml');
fs = require('fs');
exports.SchemaManager = function() {
// swaggerで定義したモデルのjson
schemaを持ってくる
this.get = function (schemaName) {
var swagger = yaml.safeLoad(
fs.readFileSync(__dirname +
'/../../docs/swagger.yaml', 'utf8'));
return
swagger.definitions[schemaName]
};
}
まとめ
• RaspberryPiでモノを動かした
– 今までのWebの知識+シリアル通信の知識だけ
で作れる
• Yii2でAPIを外付けしてみた
– 大きな変更を加えずに、マイクロサービス風に作
れる
• SwaggerでAPIドキュメントを書いてみた
– ほとんど学習コストなしでドキュメントを作れる
25

Weitere ähnliche Inhalte

Was ist angesagt?

クラウド―Arduino接続について
クラウド―Arduino接続についてクラウド―Arduino接続について
クラウド―Arduino接続について
Kenichi Yoshida
 

Was ist angesagt? (20)

Kansai Azure IoT, Device & Cloud 20140927
Kansai Azure IoT, Device & Cloud 20140927Kansai Azure IoT, Device & Cloud 20140927
Kansai Azure IoT, Device & Cloud 20140927
 
電池レス&配線レスでIoTが超絶簡単になった件
電池レス&配線レスでIoTが超絶簡単になった件電池レス&配線レスでIoTが超絶簡単になった件
電池レス&配線レスでIoTが超絶簡単になった件
 
Embedded Technology 2014 Smart Japan Aliance IoT Azure
Embedded Technology 2014 Smart Japan Aliance IoT AzureEmbedded Technology 2014 Smart Japan Aliance IoT Azure
Embedded Technology 2014 Smart Japan Aliance IoT Azure
 
IoT Getting Started with AWS and Raspberry Pi
IoT Getting Started with AWS and Raspberry PiIoT Getting Started with AWS and Raspberry Pi
IoT Getting Started with AWS and Raspberry Pi
 
Jumpwire.io @ Maker Faire Tokyo 2015
Jumpwire.io @ Maker Faire Tokyo 2015Jumpwire.io @ Maker Faire Tokyo 2015
Jumpwire.io @ Maker Faire Tokyo 2015
 
Raspberry Pi用のコンテナをクラウドでビルドする方法
Raspberry Pi用のコンテナをクラウドでビルドする方法Raspberry Pi用のコンテナをクラウドでビルドする方法
Raspberry Pi用のコンテナをクラウドでビルドする方法
 
20171105 go con2017_lt
20171105 go con2017_lt20171105 go con2017_lt
20171105 go con2017_lt
 
おうちハックではじめるIoT
おうちハックではじめるIoTおうちハックではじめるIoT
おうちハックではじめるIoT
 
オフィスライフについて本気出して考えてみた
オフィスライフについて本気出して考えてみたオフィスライフについて本気出して考えてみた
オフィスライフについて本気出して考えてみた
 
IoTタグで遊んでみよう
IoTタグで遊んでみようIoTタグで遊んでみよう
IoTタグで遊んでみよう
 
WebとIoTとMake
WebとIoTとMakeWebとIoTとMake
WebとIoTとMake
 
IRKitで少し未来のスマートハウスに
IRKitで少し未来のスマートハウスにIRKitで少し未来のスマートハウスに
IRKitで少し未来のスマートハウスに
 
IoT開発のキホン‼〜IoT開発初心者必見~ハードウェアとwebの違いから説明します!by Pluto
IoT開発のキホン‼〜IoT開発初心者必見~ハードウェアとwebの違いから説明します!by PlutoIoT開発のキホン‼〜IoT開発初心者必見~ハードウェアとwebの違いから説明します!by Pluto
IoT開発のキホン‼〜IoT開発初心者必見~ハードウェアとwebの違いから説明します!by Pluto
 
Mqttで始めるIoT
Mqttで始めるIoTMqttで始めるIoT
Mqttで始めるIoT
 
クラウド―Arduino接続について
クラウド―Arduino接続についてクラウド―Arduino接続について
クラウド―Arduino接続について
 
ソラコム×オプティム共催セミナー 「Ai ファースト」のビジネス立ち上げの秘訣
ソラコム×オプティム共催セミナー 「Ai ファースト」のビジネス立ち上げの秘訣ソラコム×オプティム共催セミナー 「Ai ファースト」のビジネス立ち上げの秘訣
ソラコム×オプティム共催セミナー 「Ai ファースト」のビジネス立ち上げの秘訣
 
Azure による AI on Edge 解説
Azure による AI on Edge 解説Azure による AI on Edge 解説
Azure による AI on Edge 解説
 
Io t最初の一歩
Io t最初の一歩Io t最初の一歩
Io t最初の一歩
 
こんな時だから、デバイスとリモートに接続する技法一気見せ
こんな時だから、デバイスとリモートに接続する技法一気見せこんな時だから、デバイスとリモートに接続する技法一気見せ
こんな時だから、デバイスとリモートに接続する技法一気見せ
 
Wio LTEで始める生体信号計測
Wio LTEで始める生体信号計測Wio LTEで始める生体信号計測
Wio LTEで始める生体信号計測
 

Andere mochten auch (6)

Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
小売りにおけるAIの可能性
小売りにおけるAIの可能性小売りにおけるAIの可能性
小売りにおけるAIの可能性
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
 

Ähnlich wie IoTで何をやったか

Rsj2013 sekiyama 2
Rsj2013 sekiyama 2Rsj2013 sekiyama 2
Rsj2013 sekiyama 2
openrtm
 

Ähnlich wie IoTで何をやったか (20)

JavaScriptで簡単IoT! RasPiをインターネットから制御するプラットフォームを作ったよ!
JavaScriptで簡単IoT! RasPiをインターネットから制御するプラットフォームを作ったよ!JavaScriptで簡単IoT! RasPiをインターネットから制御するプラットフォームを作ったよ!
JavaScriptで簡単IoT! RasPiをインターネットから制御するプラットフォームを作ったよ!
 
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
 
簡便な大型幅広デジタルサイネージシステムとその自動運用システム
簡便な大型幅広デジタルサイネージシステムとその自動運用システム簡便な大型幅広デジタルサイネージシステムとその自動運用システム
簡便な大型幅広デジタルサイネージシステムとその自動運用システム
 
PukiWiki と Raspberry Pi と Arduino を連携させてIoT システムを作ってみた話
PukiWiki と Raspberry Pi と Arduino を連携させてIoT システムを作ってみた話PukiWiki と Raspberry Pi と Arduino を連携させてIoT システムを作ってみた話
PukiWiki と Raspberry Pi と Arduino を連携させてIoT システムを作ってみた話
 
いまさら聞けないRaspberry Pi ~ センサーとクラウド編
 いまさら聞けないRaspberry Pi ~ センサーとクラウド編 いまさら聞けないRaspberry Pi ~ センサーとクラウド編
いまさら聞けないRaspberry Pi ~ センサーとクラウド編
 
Computex Taipei 2016 Report
Computex Taipei 2016 ReportComputex Taipei 2016 Report
Computex Taipei 2016 Report
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
垣根のないモノ作り!
垣根のないモノ作り!垣根のないモノ作り!
垣根のないモノ作り!
 
RとIoT
RとIoTRとIoT
RとIoT
 
IoT案件を70件やってみて分かった事
IoT案件を70件やってみて分かった事IoT案件を70件やってみて分かった事
IoT案件を70件やってみて分かった事
 
ラズピコに無線通信モジュールを接続する話.pptx
ラズピコに無線通信モジュールを接続する話.pptxラズピコに無線通信モジュールを接続する話.pptx
ラズピコに無線通信モジュールを接続する話.pptx
 
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
 
SIerによるSIerのためのRaspberry Pi 入門
SIerによるSIerのためのRaspberry Pi 入門SIerによるSIerのためのRaspberry Pi 入門
SIerによるSIerのためのRaspberry Pi 入門
 
製造業のIoTやってみよう
製造業のIoTやってみよう製造業のIoTやってみよう
製造業のIoTやってみよう
 
Rsj2013 sekiyama 2
Rsj2013 sekiyama 2Rsj2013 sekiyama 2
Rsj2013 sekiyama 2
 
Win IoT on RPi デモ
Win IoT on RPi デモWin IoT on RPi デモ
Win IoT on RPi デモ
 
スマートウォッチのプロダクト開発
スマートウォッチのプロダクト開発スマートウォッチのプロダクト開発
スマートウォッチのプロダクト開発
 
IoT家電を作ってみて気がついたUX
IoT家電を作ってみて気がついたUXIoT家電を作ってみて気がついたUX
IoT家電を作ってみて気がついたUX
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
EIoTLTvol1
EIoTLTvol1EIoTLTvol1
EIoTLTvol1
 

Mehr von エンジニア勉強会 エスキュービズム

Mehr von エンジニア勉強会 エスキュービズム (20)

エスキュービズム新技術発表資料
エスキュービズム新技術発表資料エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
はじめての品質
はじめての品質はじめての品質
はじめての品質
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 
Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
Winストアアプリでble接続
Winストアアプリでble接続Winストアアプリでble接続
Winストアアプリでble接続
 
de:code 2015
de:code 2015de:code 2015
de:code 2015
 
理想のWEB開発
理想のWEB開発理想のWEB開発
理想のWEB開発
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

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

IoTで何をやったか