SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
CommonLisp
meets IoT
ODA
自己紹介
元プログラマ。今は、研究者。
長いことベンチャーにいたけど、途中から
メーカー勤務に移行
一瞬だけベンチャーに戻って、またメー
カー勤務
Shibuya.lispは初期の初期にLTして
ます
会社紹介
パンタグラフのトップメー
カー。
おかげで新人の9割は
鉄オタ。
IoTってなに?
本当のところは、「Internet of
Things」。
それは知っている。
ドイツ人が「Industry4.0」とか
言い出してから、わけがわからな
くなった
Cyber Physical System!!
平たく言うと、
工場 + ネットワーク
+
=Industry 4.0
なんかかっこいいので大流行
工場といえば、シーケンサー(PLC)
スイッチ0
スイッチ1
センサー1 M1
切
シーケンサーと言えば、こういう
「ラダー言語」でプログラミング
メーカーには、「ラダーを書かせりゃ天下
一」なおじさんとかはいるけど、基本的
には「今時のコンピュータ事情」には疎
い人が多い。
メーカーもユーザーも。
⇒ 食い詰めたSI業界のいいカモ
「これからは人工知能ですよ」
「第4次生産革命ですよ」
「ビッグデータですよ」
「センシングネットワークですよ」
「PLMですよ」
「CAMですよ」
⇒ うるせぇ!
昨今のIoTブームって、だいたいこんなと
ころ。
まあ、自分自身がこの流れの中で転職
したので、文句は言えない。
で、PLCにイーサネットつないで、
いろいろやれば、
いろいろできちゃうんじゃね?
が、研究テーマの一つ。
Intermach2017 出展決定
あんまりお金ない。
人もそんなにいない。
市場調査なので、キャッチーな展示が
必要。
さて、どうするよ?
ハードはレゴつかって、
それっぽくしよう。
電車屋だし、電車走
らせよう。
ソフトは?
一般には、工程管理ソフトと言われる
「ばかだかいパッケージ」を使うのが一般
的。
後はラダーでぽちぽちつなぐ、みたいな
アプローチ。
一方、状況はと言えば……
プログラマは自分一人。ラダーの人はい
る。
開発期間は2ヶ月くらい。
大したことは無いけど、細かいものをい
ろいろ作らなきゃならない。
画面もそれなりに、カッコ良い方がいい
よし! お父さん、
普通のやつらの上を
行っちゃうぞ!
展示は全て、ちっちゃいWebサー
バーの組み合わせ。
場合によっちゃ、コントロール系は
クラウドにまわそう。
ホットパッチもできる様にしよう。
⇒ とうぜん、
CommonLispの出番
システム設計
PLC
Control Port IO link Bridge
ProximitySensor
Smart
phones
tablet
IO link
EtherCAT Ethernet (OPC-UA)
Servo
motor
Sinal tower
コントロールPC IoT Terminal
CameraBar Code Reader NFC Card ReaderWeight Measure
•レゴブロックのレールを「ベルトコンベア」
や工程ラインに見立てる
•この上を走る電車はパレットや工程
上の治具に見立てる
•EtherCAT(新通信規格)に対応し
たPLCを中心としてシステムを組み上
げる
基本部分
工程管理
•サーボモーター、パトライトを使って
工程の進行を制御、表示
•近接センサーを使って、工程ス
キップの検出
•バーコードリーダーにより搭載され
る部品が記録され、足りないもの
が無いか監視
•バーコードによる部品情報
他、環境情報、人員情報、
製品製造タイミング等を全
て記録
•過去にさかのぼって参照可
能
トレーサビリティー
•メイン画面に環境情報、工
程情報、人員情報など全て
を表示する。この情報が全
て記録される。
トレーサビリティー
• 作業者情報
• 治具情報
• 部品情報
• 工程情報
各ポイントを通った時刻が表示される
• 環境情報など
• 写真
トレーサビリティー
ソフトウェア設計
処理系の選択
Raspberry PiをIoT端末として採用
⇒ Clozure CommonLisp 一択
• SBCLはARMでマルチスレッドができない(現時点の情報)
• CCLならできる
• ECLは試していない
dockerの採用
IoT端末が何台になるのか不明
デプロイで苦労するの嫌
コントロール系をクラウドに追いやる
可能性もあり
roswell 使用
楽できて、助かりました。こんな感じのDockerファイルで、ARMでも
Intelでもするりとはいります。
RUN apt-get -y install libcurl4-gnutls-dev ¥
automake ¥
autoconf
RUN cd /tmp && git clone https://github.com/roswell/roswell.git
RUN cd /tmp/roswell && ./bootstrap && ./configure && make install
RUN rm -rf /tmp/roswell
USER telec
RUN ros setup && ros install ccl-bin && ros use ccl-bin
clack&ningle
楽。
(setf *app* (make-instance 'ningle:<app>))
(defun start (&key
(web-port WEB-PORT)
(webtype :hunchentoot)
&allow-other-keys)
(setf *web-server*
(clack:clackup
(lack:builder ;; :accesslog
*app*)
:server web-type
:port web-port)))
リモート swank
swank:*loopback-interface*に”0.0.0.0”を指定して、あとは
寝かせておけば、いざと言うときとっても役立ちます。
たちましたよ。展示会場で……
(let ((swank::*loopback-interface* "0.0.0.0"))
(swank:create-server :port swank-port :style :spawn :dont-close t))
コントロールプロセッサ
DBコンテナ
コントローラサーバーコンテナ
ningle
コントロールロジック
IoT端末
IoT端末コンテナ
ningle
コントロールロジック
イベント系のデータをPOST
カメラデータとかをGET
UI画面は普通にページアクセス
ムービー
まとめ
ライブラリやエコシステムが
揃っているCommonLispは、
こんな感じのハード寄りの開
発でも、結構便利ですよ。
あと、
メーカーにはソフト屋さんが少なくて
困っているので、転職するときは
狙ってみては?
重宝されますよ。
以上です。

Más contenido relacionado

Similar a 20170629 common lisp meets iot(noimage)

Similar a 20170629 common lisp meets iot(noimage) (20)

PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiPyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta Kitagami
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
第6回 Machine Learning 15minutes!
第6回 Machine Learning 15minutes!第6回 Machine Learning 15minutes!
第6回 Machine Learning 15minutes!
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
ロボットアームをPythonで動かす
ロボットアームをPythonで動かすロボットアームをPythonで動かす
ロボットアームをPythonで動かす
 
僕の考える最強のビックデータエンジニア
僕の考える最強のビックデータエンジニア僕の考える最強のビックデータエンジニア
僕の考える最強のビックデータエンジニア
 
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととはDevelopers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
 
AIサービス開発に必要な人間中心設計とプロジェクトマネジメント
AIサービス開発に必要な人間中心設計とプロジェクトマネジメントAIサービス開発に必要な人間中心設計とプロジェクトマネジメント
AIサービス開発に必要な人間中心設計とプロジェクトマネジメント
 
自慢のAi活用アイデアを30分で潰せる 「AI Lean Diagram」
自慢のAi活用アイデアを30分で潰せる 「AI Lean Diagram」自慢のAi活用アイデアを30分で潰せる 「AI Lean Diagram」
自慢のAi活用アイデアを30分で潰せる 「AI Lean Diagram」
 
これから始める Windows io t core
これから始める Windows io t coreこれから始める Windows io t core
これから始める Windows io t core
 
IoT workshop by the Tokyo Chamber of Commerce
IoT workshop by the Tokyo Chamber of CommerceIoT workshop by the Tokyo Chamber of Commerce
IoT workshop by the Tokyo Chamber of Commerce
 
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
[db tech showcase Tokyo 2017] E35: 12台でやってみた!DWHソフトウェアアプライアンス Db2 Warehouse ~...
 
Japan IT Week 春 IoT/M2M展 ソラコムブース | IoT プロジェクトを成功させるために必要なものとは?ーSORACOMパートナーブー...
Japan IT Week 春 IoT/M2M展 ソラコムブース | IoT プロジェクトを成功させるために必要なものとは?ーSORACOMパートナーブー...Japan IT Week 春 IoT/M2M展 ソラコムブース | IoT プロジェクトを成功させるために必要なものとは?ーSORACOMパートナーブー...
Japan IT Week 春 IoT/M2M展 ソラコムブース | IoT プロジェクトを成功させるために必要なものとは?ーSORACOMパートナーブー...
 
実世界の人工知能@DeNA TechCon 2017
実世界の人工知能@DeNA TechCon 2017 実世界の人工知能@DeNA TechCon 2017
実世界の人工知能@DeNA TechCon 2017
 
Pepper x IoT x Web 勉強会やってみた話と失敗談
Pepper x IoT x Web 勉強会やってみた話と失敗談Pepper x IoT x Web 勉強会やってみた話と失敗談
Pepper x IoT x Web 勉強会やってみた話と失敗談
 
技術者に必要なもの
技術者に必要なもの技術者に必要なもの
技術者に必要なもの
 
Why software developers in manufacturer should have legal mind?
Why software developers in manufacturer should have legal mind?Why software developers in manufacturer should have legal mind?
Why software developers in manufacturer should have legal mind?
 
IoT勉強会in岡山#2 M5StickCで遊んでみた!
IoT勉強会in岡山#2 M5StickCで遊んでみた!IoT勉強会in岡山#2 M5StickCで遊んでみた!
IoT勉強会in岡山#2 M5StickCで遊んでみた!
 
AI開発しくじり先生から学ぼう「失敗しないAI開発の秘訣となる仮説とは?」
AI開発しくじり先生から学ぼう「失敗しないAI開発の秘訣となる仮説とは?」AI開発しくじり先生から学ぼう「失敗しないAI開発の秘訣となる仮説とは?」
AI開発しくじり先生から学ぼう「失敗しないAI開発の秘訣となる仮説とは?」
 
Machine Learning15 9月ニュース記事紹介
Machine Learning15 9月ニュース記事紹介Machine Learning15 9月ニュース記事紹介
Machine Learning15 9月ニュース記事紹介
 

20170629 common lisp meets iot(noimage)