SlideShare a Scribd company logo
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

More Related Content

PPTX
IoTでアヒルを動かしてみました
PPTX
デジタルファブリケーションノススメ
PDF
酷暑を乗り切る熱中症予防IoT
PPTX
スマートスピーカーとRaspberry Piで物品管理にトライ
PDF
スマートファクトリーを支えるIoTインフラをつくった話
PPTX
3ヶ月間 IoT をやって感じたこと
PPTX
登壇列伝
PDF
IoTをインターネット越しで見る
IoTでアヒルを動かしてみました
デジタルファブリケーションノススメ
酷暑を乗り切る熱中症予防IoT
スマートスピーカーとRaspberry Piで物品管理にトライ
スマートファクトリーを支えるIoTインフラをつくった話
3ヶ月間 IoT をやって感じたこと
登壇列伝
IoTをインターネット越しで見る

What's hot (20)

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

Viewers also liked (6)

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

Similar to IoTで何をやったか (20)

PDF
機械学習 (AI/ML) 勉強会 #2 IoT編
PDF
Embedded Webで加速するWeb of Things
PPTX
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
PPTX
IoTデバイスデータ収集の難しい点
PDF
Web Technology for Hardware Control (html5 conference 2015)
PDF
RaspberryPiとawsで取組んだ自作IoT
PDF
Internet of Toilet / Jaws festa 2016
PDF
IoT/ロボティクス時代のモニタリングとコントロール
PDF
20170720_5 MBC-IoT_IoTビジネス共創ラボ
PDF
RaspberryPi(OSH)の産業利用の現状
PDF
IoTの概要・IoT界隈の動向
PPTX
ネットに繋いでIoTしよう
PDF
IoT/ロボティクス時代のモニタリングとコントロール 15分バージョン
PDF
自分で作れる遠隔監視
PPTX
ラズパイでネット対応 学習リモコンをつくろう!
PDF
IoT×ビジネス活用 ~最先端技術のビジネス活用に向けて~
PDF
ゆるくはじめるIoT
PPTX
ハードを知らないソフトエンジニアがIoTをかじってみた話
PDF
2016年11月19日 AITCシニア技術者勉強会 第1回「1からはじめるIoT ~IoTまでの歴史~」
PDF
Html5jplat 7th webはいつもあなたを見守っている
機械学習 (AI/ML) 勉強会 #2 IoT編
Embedded Webで加速するWeb of Things
ハードウェア初心者のwebエンジニアがIoT製作に取り組んだ話
IoTデバイスデータ収集の難しい点
Web Technology for Hardware Control (html5 conference 2015)
RaspberryPiとawsで取組んだ自作IoT
Internet of Toilet / Jaws festa 2016
IoT/ロボティクス時代のモニタリングとコントロール
20170720_5 MBC-IoT_IoTビジネス共創ラボ
RaspberryPi(OSH)の産業利用の現状
IoTの概要・IoT界隈の動向
ネットに繋いでIoTしよう
IoT/ロボティクス時代のモニタリングとコントロール 15分バージョン
自分で作れる遠隔監視
ラズパイでネット対応 学習リモコンをつくろう!
IoT×ビジネス活用 ~最先端技術のビジネス活用に向けて~
ゆるくはじめるIoT
ハードを知らないソフトエンジニアがIoTをかじってみた話
2016年11月19日 AITCシニア技術者勉強会 第1回「1からはじめるIoT ~IoTまでの歴史~」
Html5jplat 7th webはいつもあなたを見守っている

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

PDF
エスキュービズム新技術発表資料
PDF
React Redux Redux-Saga + サーバサイドレンダリング
PDF
Azure container service上でコンテナベースでオートスケールの検証をしてみた
PDF
Go言語によるWebアプリケーション開発
PDF
機械学習ライブラリ : TensorFlow
PDF
Developer Summit 2016 参加してきました。
PDF
アルゴリズムとデータ構造(初歩)
PDF
PDF
【エンジニア勉強会】品質ってなんなのさ
PDF
Dockerを社内で使うために
PDF
PDF
Go言語オーバービュー201507
PDF
Winストアアプリでble接続
エスキュービズム新技術発表資料
React Redux Redux-Saga + サーバサイドレンダリング
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Go言語によるWebアプリケーション開発
機械学習ライブラリ : TensorFlow
Developer Summit 2016 参加してきました。
アルゴリズムとデータ構造(初歩)
【エンジニア勉強会】品質ってなんなのさ
Dockerを社内で使うために
Go言語オーバービュー201507
Winストアアプリでble接続

IoTで何をやったか