Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
公開用_WebDBForum2018_テクノロジーショーケース_業務IoTストリーミング基盤.pdf
Search
Junki Mano
September 14, 2018
Programming
1
330
公開用_WebDBForum2018_テクノロジーショーケース_業務IoTストリーミング基盤.pdf
Junki Mano
September 14, 2018
Tweet
Share
More Decks by Junki Mano
See All by Junki Mano
ソフトウェアアーキテクトって何やるの? ~知っておくと役立つ考え方を共有します~ | 技育祭2022秋
laqiiz
3
2.2k
Goで工場を制御する要であるPLCにアクセスする / go-plc
laqiiz
0
2.6k
Abstract Sentinel
laqiiz
0
120
CNCF
laqiiz
1
120
Local_Kubernetes.pdf
laqiiz
1
120
Abstract Helmfile
laqiiz
1
110
Abstract GitOps
laqiiz
1
190
Other Decks in Programming
See All in Programming
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
99
37k
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
21k
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
620
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
760
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
24
9.6k
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
240
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
150
RailsGirls IZUMO スポンサーLT
16bitidol
0
200
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
300
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
16
2.9k
可変変数との向き合い方 $$変数名が踊り出す$$ / php conference Variable variables
gunji
0
180
#QiitaBash MCPのセキュリティ
ryosukedtomita
1
1.5k
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Music & Morning Musume
bryan
46
6.7k
Docker and Python
trallard
45
3.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Why Our Code Smells
bkeepers
PRO
337
57k
Balancing Empowerment & Direction
lara
1
460
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Producing Creativity
orderedlist
PRO
346
40k
Transcript
フューチャー社における IoTシステム構築の 事例紹介 テクノロジーショーケース Future株式会社 Mano Junki ~ ファクトリーからモビリティへ ~
WebDB Forum 2018 9/14(金)
◦ フューチャーにおけるIoTシステムの事例紹介 ◦ 設計~実装を通して得た、IoTシステムの面白み、 ツラミ、そしてIoTシステムの魅力についてお話し ます ◦工場IoT、モビリティIoTの順に紹介します 本日お話すること
真野 隼記(まの じゅんき) * 2009年フューチャーアーキテクト入社 * 神戸大学 電気電子工学卒 * クラウド、IoT、Golangがメインのエンジニア
ポエマー目指して投 稿してます @laqiiz
フューチャー株式会社 設立 1989年11月28日 (創立30周年!) 社員数 1,493名 (2016年12月) 事業 内容 ・ITコンサルティング&サービス事業
・ビジネスイノベーション事業 指標 売上高:362.6億円 営業利益:44.5億円
None
IoTといえば 一般的に思い当たるのが…
IoTといえば 一般的に思い当たるのが… スマートゴミ箱 スマート時計 スマート鍵 スマートホーム 色々ありますが、生活をスマートにする製品群
モビリティ 店舗 工場 商品 消費者 従業員 漁業 その他 農業 漁業
馴染みが薄いであろう領域を中心に お話します
グローバルで100超の拠点 生産性を デジタルの力で30%アップ 工場IOT SMART FACTORY
工場IoT エッジサイド
スマートファクトリーIoT概観 収集 加工 蓄積 分析 通知 分析 Cloud ◦ 工場内の各センサーデータを収集・分析し、生産性や品質向上に役立てる仕組み
◦ 既存の製造設備をコネクテッド化するのが第一歩
収集 加工 蓄積 分析 通知 分析 Cloud データ粒度 小 大(サマリ)
データ発生源がもっとも複雑
よくあるWebアプリケーションと異なる点① ◦ 要求/応答でコンテンツを返すのではなく、データをとにかく受け付 け後で処理するという点 = サーバサイドで対応する必要があります クライアント =ブラウザなど サーバ クライアント
=IoTデバイス サーバ よくあるWebアプリケーションの簡易図 IoTシステムの簡易図 Request/Response Streaming Processing
よくあるWebアプリケーションと異なる点② ◦ 欲しいデータを効果的に取得する必要がある点 ◦ センシングが物理的に可能か、サンプリング間隔などの問題 クライアント =IoTデバイス サーバ センシング センシング
よくあるWebアプリケーションと異なる点③ ◦ 工場の設備はPLC( Programmable Logic Controller)と呼ばれる 制御装置で作成されていることが多いです ◦ ある程度オートメーション化された加工情報を取得≒PLCからデータ を取得するということ
PLCの例 PLC
PLCからデータを収集するとは.. ◦ PLC(Programmable Logic Controller) ◦ リレー回路の代替装置として開発された歴史 …まずは業務用のマイコンのような認識でいると良いのでは? ◦ PLCのレジスタに加工記録が残っている
値段はピンきりですが、1台5万円程度~
PLCからデータを収集するとは.. ◦長さ、厚み、ガス圧、バーナー温度etc. ◦センサーがPLCにシリアル接続されていて、その値がPLCのレジス タに格納される センサー カメラ
立ちはだかる壁~PLC編~ PLCからどうやってデー タ取れますかね? (HTTP、MQTTとか?) シリアル、Ethernet CC-Link、EtherCATなど がありますが、どうしま しょうか? わたし 工場エンジニアさん
CC-Link、EtherCAT調べた ◦ 工場用のフィールドNW規格である ◦CC-Link は10Mbpsの転送速度を選ぶと、100mまで対応できるといった規格 ◦正確には、CC-Linkにも種類があり、Ethernet上に構築するものもあるらしい ◦ 物理層・データリンク層のレベル
OSI参照レイヤーの 物理層から違う!
こぼれ話その② 汎用的なEthernetが 良いのでは?通常のLAN と併用できますし そもそも、PLCの中には Ethernetに接続できない ものがある わたし 工場エンジニアさん
接続できなかったら IoTができない…
古いPLCにはEthernetポートが無 いらしい ◦手段としては、Ethernetカートリッジを購 入するか ◦当然ながら素直に新しいものを買えという話も…
サーバへのデータ送信 PLC上ではどんな言語が 動かせますか?HTTPが 話せればよいのですが… わたし CとかJavaは動かせない FTPかSMTPで転送するか ベンダーさん
C言語、動かない? ※ラダーなら動く ラダーについての説明は割愛
PLCからのデータ取得は困難 ◦ いわゆる汎用型言語が動かせないため Web系のエンジニアリングがしにくい ◦FTP,SMTPは非常に制限された設定しかできず、 また、専用ツールからしか設定できない ≒Infrastructure as a Codeは夢のまた夢
【参考】標準化の流れ ◦ 独国のIndustory 4.0の流れを受けて加速 ◦ OPC-UA, ORiN, EdgeCrossなど、標準プロトコル、 標準仕様、標準化コンソーシアムが多数 ◦
TCP, シリアル上に通信プロトコルを重ねる場合と、 SOAP (*1) on HTTP で構成されていることが散見 ※ 簡単にいうと、RESTのXML版でAPI規格(OpenAPI-Specification)もXMLで記載できる
最終的には ◦PLCはEthernetに接続(IPを付与) ◦FTP転送機能でデータ収集
工場IoTの構成例 センター PLC PLC FTP HTTP ◦ FTPで直接、クラウドなどのサーバにデータを転送するのではなく、 中継サーバを設置 中継サーバ
PLCへのデータ書き込み ユースケース: 工場作業者が、自分でマニュアルを見ながら設備の設定 を入力する運用を無くして、入力の手間と間違えを無く したい 実現方法: 多くの設備では独自プロトコルが存在。 例として、業界標準の一つであるMCプロトコルがある
MCプロトコルについて ◇【例】要求伝文 500000FFFF03000C001000010400002C0100A80300 ◇ 【例】応答伝文 D00000FFFF03000800000001000A006400 Socketでこういう電文を 送ることでレジスタに かきこみでる ※TCP上に構築された、独自HTTPといった具合のプロトコル
工場IoT サーバサイド
IoTサーバサイド ◦ 3000設備が1[kb]程度のメッセージを毎秒3回送信 ◦ 高負荷に耐えられる仕組みが必須 ◦ 拠点側からのリトライなどは期待できない …あまり手を入れたくない
処理モデル ◦リクエスト・レスポンス型 ◦バッチ型 ◦ストリーミング型
処理モデル トレードオフ ◦ 応答性能(レイテンシ) ◦ コンピュータ資源 ◦ 正確性
IoTシステム ◦ 人間が待っているわけではないのでリクエスト・レス ポンスである必要はない ◦設備の故障検知など、なるべく早くデータは処理したい ので、バッチでは応答性能が厳しい場合がある → ストリーミング型の処理モデルの採用へ
キューイングシステムの導入 いったんキューで受け付け、そのあと順次処理する 加工や分析 永続化 通知・可視化 ストリーミング処理
例:OSSプロダクトによる構成 いったんキューで受け付け、そのあと順次処理する 加工や分析 永続化 通知・可視化 ストリーミング処理
データ処理パイプライン ◦ 生データをパースし “意味付け”、目的別に分類、品質 や稼働状況などを取得するといった多段処理へ 生 デ ー タ (
バ イ ナ リ ) 品 質 情 報 稼 働 状 況 受信 パース後 品質 元データ 稼働 元データ
キューイング後の流量 ◦ キューイングからの取得件数を調整することで下げる ことが可能(≒レイテンシが犠牲になる) ◦ 同一タイミングで送信されるデータが多いときはフリ ーランチな引き換えになる 入力データ 3件分一括で取得して処理 ≒必要なコンピュータ資源を下げ
られる→運用費用を下げられる
データの蓄積について ◦ 時系列データになる ◦ もともとより流量は下がっているとはいえ、 分散型のKVSなどに格納するのが基本
【参考】可視化・品質情報 ◦ 多くのメトリクスから洞察し生産現場へ フィードバック
工場IoTまとめ
まとめ ◦ 設備機器からの収集部分に壁があり …規格のオープン化・標準化により一層Webの世界との融合ができることを期待 ◦ サーバサイドに届いてしまえばいつもの世界 …公開されているプラクティスも多く、慣れた世界 ◦ 工場IoTのカバーする領域は広い!(面白いところ) …現実世界とデジタル空間をつなぐ楽しみ
現実の世界を1 秒以内にデジタル化 対象とする自動車は 数N万台 モビリティIOT DIGITAL TWIN
モビリティIoTとは? ◦ 移動体、多くは自動車などを指します ◦ 車をインターネットに繋ぎ様々なサービスへ展開 ◦ ◦ 都市交通・物流に対してよりよくしていきたい
工場IoTとの違い ◦ とにかく動く、しかも早い - 迷ったら安全側に倒すしかない。また、位置情報が宝 ◦ 接続数が多い - 物流業者のトラックだけでも桁違い -
家庭乗用車などを含めると、数千万台規模 ◦ 車種が多い - 自動車メーカ毎に対応が必要
一方、システム構成は ◦ 大枠のシステム構成は似通ってくる ◦ 接続先が工場から各モビリティに変わる 加工や分析 永続化 ストリーミング処理
要件が厳しくなりがちな点 ◦ モビリティに対する通知や制御をなるべく 早く行いたい 例)運転手への注意喚起などなど →200~300[ms] で実施”したい”など (*1) ※1) あくまで要望ですが、これを以下に早くするかで業界で競争が進んでいる領域
データの振り下ろし ◦ モビリティ側でグローバルIPを持ちたくない …IPv6ならという話もあるが、セキュリティやセンター側の保守管理的にも ◦ なるべくリアルタイムで処理したいので、ポーリングは避けたい ◦ サーバサイドでプッシュ通知したい →MQTT(AMQP)プロトコルの活用へ
MQTTを活用した通信 ◦ モビリティ側はMQTT のpublisherにもsubscriber にもなる ◦ 正直、まだまだ研究のしどころがある分野 MQTT publish MQTT
subscribe MQTT ブローカ 加工や 分析
検討テーマ ◦ MQTTブローカーのスケーラビリティの弱さ …そんなに簡単にスケールしない ◦ MQTT上で通信品質を管理するスタックの構築 …メッセージの信頼性(QoS)、順序性、データ欠損、遅延配信への対処などなど ◦ 移動や、Wifi, 3g/4g/5g
など回線の切り替えのときの再接続への考慮 …TCPハンドシェイク、TLSハンドシェイクをする必要 …QUIC(UDP上に構築されたGoogleが標準化を目指しているプロトコル)など?
位置情報を用いたサービス ◦ リアルタイムなトレーシング ◦ 指定のエリアに入ったら 広告をプッシュするなど
桁違いのデータ量 ◦ zip圧縮後、5[TB]/日 のデータが発生 ◦ もはや分散処理しなければどうしようもない ◦データ構造、アルゴリズム、コンピューティン グの総合格闘技
データのチャンク ◦ ひとかたまりで分析する粒度は、トラジェクト リーという粒度 移動開始~停止までの粒度。 ◦ 時間で単純に処理できないため、どの程度停止 したら1トラジェクトリーとしてみなすかは試行 錯誤中
モビリティIoT まとめ
モビリティIoTまとめ ◦ まさに国際競争の最前線 ◦ AIだけではなく、IoT領域への期待値がか つてなく高まっている ◦ モビリティという特殊性、大量のデータ処 理を行うには、広く深い知見が必要
全体まとめ
全体まとめ ◦ デバイス、通信、サーバサイドなど幅広い知識が必要 ◦ 対象はユーザではなく現実世界そのもの ◦ 知らない世界ばかり、楽しい
質疑応答