IoT時代の何でも屋さんの野望
2012年にブクマしていた記事に「動くゴミ箱」を作ったというガジェットネタがあります。
当時学生だった倉田さんが、独力で行ったのは以下の工程。いわば多能工。。
- イメージ構想
- CADでハードウェア設計
- 部品加工(学校設備を利用)
- 基盤回路設計
- 基盤パーツ実装(パーツ選定、はんだ付け含む)
- ハードウェア構築
- エミュレータでの動作テスト(プレイステーションコントローラを使用)
- マイクロソフトKinectと無線シリアル通信するプログラム実装
当時2012年ということで、2017年のいまであれば部品加工の工程で3Dプリンティングが使えそう。
SORACOMがグローバルにデバイスとWebをつなぐ仕組みを提供してくれるようになったこともあり、地球の裏側のデバイスにも連携が可能。
作った商品の販売と配送は、Amazon Launchpadが受け持ってくれます、至れり尽くせり。
SORCOM玉川さんいわく、分野を越境するスキルフルなエンジニアが増えていくだろうという未来。それを求められるのがIoT時代とのこと。
IoTプロダクトの開発に必要な専門知識は広範囲に及びます。僕はAWSに入る以前、日本IBMでウエアラブルの研究開発に携わっていたので、メカ、エレキ、組込みソフトとひと通り触ることができました。当時の経験から、この“スキル横断型エンジニア”の貴重さも身に染みて分かっているつもりです。
さらに、僕らが構想しているようなIoTのプラットフォームを作ったり、それを使った革新的なサービスを提供するには、よく言う「ソフトとハード」の話以外にも、バッテリ問題に詳しい人、セキュリティに精通した人、BLEなども含めた端末とネットの接続部分に関する知識などさまざまなスキルが必要になります。
ですから、今後はこれまで混じり合ってこなかった、数種類のエンジニアが持つスキルが求められるでしょう。ざっくり言うと、ITのエンジニアとモノづくりエンジニアの持つスキルの両方が必要になる。Web、インターネットのみならず、デバイスや組込みソフトを使いこなす能力もですね。
これまで、こういったジャンルのエンジニアが混じり合うことはほとんどありませんでした。しかし、IoTのプラットフォームを作ろうとしたら、両方のエンジニアが必ず必要になりますし、我々の手掛けているIoTプラットフォームができれば、両方のエンジニアはさらに境がなくなっていくと思います。
Webエンジニアだけど、人手足りないからWebデザインとUXも、あ、経営上層部納得させたいからデータ分析も、もちろんセキュリティ含めたインフラも見れるよね?
そこに、コード書けるなら組み込みもいけるよね?アプリもデバイスもお願い…と、なると\(^o^)/オワタ
なるほどアルティメットエンジニア。
エンジニア道は果てしなく拡がっていきますね(小並感)。
※そういえば、2002年が自動掃除機ルンバ第一世代の販売年。
家庭にロボットが入るなんて近未来だと思った日が随分遠くなりにけり。
第1回 Hyperledger Tokyo Meetup へ行ってきたので、そこに至るまでの経緯を含めて書く
昨今賑わいをみせるビットコイン。
投機的な雰囲気もあり、その話題はスルーしていたのですが、昨年末に「ブロックチェーン・レボリューション」を読んだことをきっかけにブロックチェーンに関心を持ったのです。
知識ゼロの状態からいろいろ調べているうちに、以下のようなことがわかって来ました。
- 世間を賑わすビットコイン(仮想通貨)とブロックチェーンは別物
- ブロックチェーンにはパブリックなものとプライベートなものがある
- パブリックなブロックチェーンがビットコインに使われているが、一度の決済に10分ほど待ち時間が発生するため、速度面でプライベートなそれが使用される流れがある(※ただし中央集権的と反発される)
- プライベートブロックチェーンの方式も、団体(営利、非営利など)によって異なる、開発言語も異なればAPIも異なる
- ブロックチェーンの究極の目的は、「紙と信用」に基づく取り引きをすべてデジタルなそれに置き換えること
紙や硬貨に信用を与えてきたのが金融だったわけで。
なるほど、信用をデジタル化することは歴史的にもインパクトのある話しなのですね。
さらにブロックチェーンを深掘りするために、偶然みかけたのが下記書籍。
ブロックチェーン 仕組みと理論 サンプルで学ぶFinTechのコア技術 | 赤羽喜治 編著, 愛敬真生 編著 |本 | 通販 | Amazon
NTTデータの技術者陣がブロックチェーンについてまとめたものです。
ビットコイン、Etherium、Hyperledger Fabricについて簡単にサンプルを試すこともできて、ブロックチェーン技術を知る上で必携な一冊と思います。
以上つらつらとありまして、BlockChainイベントへ参加に至る。
さて有給休暇を使って参加しましたMeetup。
武蔵中原ってはじめて降りました、富士通社のお膝元的な駅ですね。
会場に到着するも、参加者は見渡すかぎりのスーツ。。
普段から取り引きのあるSIerの方々でしょうか、顔見知りが多いような雰囲気でした。
イベント概要「第1回 Hyperledger Tokyo Meetup」
日時:3月16日 · 13:00〜
場所:富士通研究所 岡田記念ホール
講演内容
《アジェンダ》
13:20-13:40
Hyperledger Projectの概要
日立製作所 長稔也様 (Hyperledgerプロジェクト ボードメンバー)13:40-14:20
Hyperledger Fabric 1.0 概要
日立製作所 山田仁志夫様14:20-15:00
Introduction to Fabric Composer
日本アイ・ビー・エム 紫関昭光様15:10-15:50
Hyperledgerいろはについて
ソラミツ 武宮誠様15:50-16:30
データベース屋がHyperledger Fabricを検証してみた
NEC 並木悠太様16:40-17:20
ブロックチェーンの可能性と課題 - SIerとしての視点から
NTTデータ 稲葉高洋様 山下真一様
途中小休憩があったものの、ほぼ通しで4時間強でした。
これを要約すると下記のような感じです。
- Hyperledgerコミュニティ。最近中国企業の参画が増えている、日本企業も入りましょう
- Hyperledger Fabric 現在0.6系、1.0がまもなくリリース。
- Fabric Composerを使うとAPI管理が簡単、Bluemix(IBMクラウド)のイメージで敷居が下がっている
- ブロックチェーンとデータベースは似て非なるものだけど、データベースの見地でみると分かりやすい
- みずほ銀行とブロックチェーン取り引き実証実験やってみた(ビットコイン版とHyperledger版)
資料はイベント後日公開されたものの、Meetupページに埋もれていたので、転載します。
どの講演も学び多く甲乙つけ難いのですが、エンジニア的に推しの資料は設計概念を説明されていた「Hyperledger Fabric 1.0 概要」「ブロックチェーンの可能性と課題 - SIerとしての視点から」です。
Slideshare資料まとめ
音声データも置いておきます(容量注意、223MB)
何かの経緯で本記事にたどり着いたら、ご査収ください。
■その他参照
Hyperledgerのミートアップで考えた、ブロックチェーン普及の必要条件 - ZDNet Japan
オープンソースのブロックチェーン Hyperledger Fabric を試してみる - Qiita
JAWS2017 in 五反田TOCメッセ
昨年以前は新宿ベルサールだったのですが、今年の開催地は五反田TOCメッセ。
綺麗な施設で、ボランティア皆さまのおかげで快適に過ごすことできました。
参加したワークショップとセッションは以下のものです。
- 【ハンズオン】AWS Elastic Beanstalk
- [ランチタイムセッション]
ハンズラボ株式会社
株式会社鈴木商店
有限会社来栖川電算 - コミュニティで拓く、パラレルキャリアへの道
- 【ハンズオン】Amazon Alexa Skill
- おとなのたしなみ、おコンテナ by JAWS-UGコンテナ支部
- 【ハンズオン】RESTful API
あと、参加したかったけど寝坊して聴けなかったセッション…。
早速スライド上がっていて嬉しいです。
所感、最高に充実した一日でした。
毎年参加しているJAWSですが、今年は早めに申し込みできたためワークショップ比重高め。
Amazon Alexaについては音声関連サービスでアクション起こすとなっても心理的障壁下がりましたし、Beastalkでコンテナ、RESTfulAPIでLambda/API Gatewayもキャッチアップできました。
AWSエコシステムの集大成的なイベントで来年もまた楽しみです。
追記(2017/03/19)
資料公開一覧ができたようなので転載します。
参加録「AWSによる大規模IoTプラットフォーム構築の裏側」
資料即日公開される太っ腹っぷり。
IoTとAWSのお話を聴きに行ってきました。
最初にフューチャーアーキテクト社の話しから始まり…
Githubトレンドで、「脆弱性スキャンツールVuls(バルス)」が上位ランク入りしたことなど知りました。
HoloLensの研究、社内LT会も活発。
Techブログやってる、Qiitaオーガナイズも使用している等、モダンで柔らかな開発体制もあるようでした。
講演内容は以下の2点。
- 「スマートファクトリーを支えるIoTインフラをつくった話し」
- 「AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム基盤
前者は
・IIoTの魅力とつらみ(※Industrial IoTという単語が初耳でした、ラズパイの世界外のIoT…)。
・クライアントや工場ごとに異なるベンダーの現行稼働ハードウェアとの連携といった泥と、今後の展開を見越したクラウド連携といった華の混じり合ったお話。
・閉域前提とした旧式仕様を捨てて、クラウドに設備データを渡す&渡したデータを保持する上での工夫点などなど。
後者は
・大規模構成とキューイング検討。
・Kinesis Streams選定背景が丁寧でした。
・スモールスタートで目指すは600万ユーザー。
いずれも資料が作り込まれていたので、AWSでのIoTデータの捌き方といった貴重な知見をもらうことできます。
自身はAWSサービスのKinesis・EMRあたり初心者なので、IoT案件に備えて勘所を抑えておきたいと思いました。
緩募: なごみ
Twitterを眺めているとそれらの画像や動画が流れてくるのですね。
園内一巡して昼飯も食べて戻って来たら、4時間以上たってるのに、まだ回ってた。 pic.twitter.com/D3IWnC0Jth
— あれっくす (@NStyles) 2017年2月26日
飼育欲の少ない自分のための。
ふろしき文鳥。
ふろしき文鳥がお世話になっております!旅の疲れでむくみぎみ…?と感じたら、顔や肩のあたりをやさしくマッサージしてみてください(´▽`)ノむくみがとれて、スッキリした顔になりますよ✨#ふろしき文鳥 pic.twitter.com/J3iBjjCqS6
— シープロップ株式会社 (@CProp_info) 2017年1月30日
参加録「bitFlyerのC#erたちが語る、あなたの知らないBitcoin,Blockchainの世界」
2017/01/31 (火) 19:30 ~ 21:30 in 渋谷ヒカリエ
bitFlyerのC#erたちが語る、あなたの知らないBitcoin,Blockchainの世界
コンテンツ
Jeremyさん:
「Approaching some everyday (C#) programming problems practically」(20分)柴田さん:「日本最大のビットコイン取引所の裏側(仮)」(20分)
竹井さん:「フルスクラッチ Blockchain」(30分)
bitFlyerとは…
C#、.Net、Azureでサービスを運用
35名うち半数エンジニア
C#エンジニア内訳
5人フルタイム(2名デザイナー、2名エンジニア、1名ブロックチェーン)
Private Blockchainを開発している会社です。
講演①: Jeremy Simmonsさん
「Approaching some everyday (C#) programming problems practically」
F#好き
10年くらいエンジニア
保守しづらいコードについて、サンプルコードをもとに解説。
Order
OrderItem
OrderCreaterとCreateOrderがある…
voidでなにやってるか
CalicurateTotals…とか
いざ、リファクタリング。DDD的にやってみる。
OrderにBehaviorをもたせよう
public class Order
{
public Order(TaxCalculator calc)
{
/*..*/
}
}
ここで、デザインパターンの Memento Pattern を使う。
Stateの保存と保存されたStateの呼び出しのため。
Immutable Orderが作れればOK。
単体テストつくる
ダイスを振る
ランダムに目が出る
…と、あって以上。
講演②:柴田航平さん
「ビットコイン取引所の裏側 」
Webアプリエンジニア
サーバサイド、クライアントサイド担当
売買のマッチング
世界一取引量
39,098 BTC取引
サービス:"bitFlyer Lightning"
3層構成
Worker
取引所エンジン
注文マッチング
Webサーバ
JSON RPC
イベントPush(注文通知等)
クライアント
ブラウザ
Worker
取引所(同時稼働数は最大1台)…シリアルで処理する
ダウンタイムは最小限にする
アクティブ、スタンバイ構成にしたい
Azure:PaaSを利用
Azure Cloud Service
Cloud Service
冗長構成、クラスター化のサポートないので切替時を自作した
Azure Service Fabric
2016/03 GA
マイクロサービス構築用
クラスター化前提
Webサーバ
ASP.net SignalR(WebSocket使用、SocketIOみたいな挙動)
Push通知をさばく
SignalR
複数サーバでデータ共有のための”backplane”という仕組みがある
下記サポート
AzureServiceBus(初期はこれで1年くらい)
SQL Server
Redis(いまはこれ)
Azure上で障害
AzureServiceBus
メッセージングが不安定になる
Redis
いい感じ
課題:
通信料が高い
SignalRでデータ垂れ流すのも限界では?
モバイルバッテリー消費も問題
クライアントサイド
“RxJS"のデータフロー管理
SignalRのイベント、APIコール、ユーザー操作、タイマーのObservableとしてI/F
LINQもOK
サーバ側でReactiveExtensionを使ってない
Rx
SignalRでデータ受け取ったらAPIを呼び出す
1秒に1回とか
要件に応じて複雑化
型が欲しいのでTypeScript検討
Q&A:
現行のワーカーはFabricで実現可能?
→可能だが、現状いい感じに抽象化されてるため緊急要件ではない。
講演③:竹井悠人さん
「ゼロからつくるBlockChain」
MS MVP C#
C#大好き人間、16年
※スライドは追って公開予定
.Net Core 1.1.0 SDK
最小限の機能をもったブロックチェーンを動かします:MinChain
コンセプト:
Etheriumのサンプルを動かすようなものではない
SourceCodeでブロックチェーンをつくる
P2Pは時間都合で実装せず
ブロクチェーンの基本
取引データをブロックに固める、それを連結したもの。
①ハッシュ関数
メッセージのダイジェストを生成する
1:短くできる(32バイトで収まる)
2:改ざん不可にする
3:辞書の鍵にする
②電子署名 ※Util/ExService.cs
公開鍵暗号方式
楕円曲線暗号(ErecticCurve/ECC)
VS2017
Extension:拡張用ライブラリ
Util:汎用(ハッシュ関数、SHA256を二回適用、
③コンセンサスアルゴリズム
NW内の複数エンティティ(PC)どうしがルールに従う限り、安定的に合意する仕組み。
BitcoinではProof of workを使用。
Block
前ブロックID
難易度
Nonce
日時
Tx Root Hash(ブロックヘッダーに入れる、ハッシュ木。データ量を定めるため)
通信時はトランザクションデータも含める
河合さん作ライブラリ:ZeroFormattableを使用。
トランザクション
日時
送金元(IN):電子署名つき(Pay-to-pubkey-hash形式)
送金先(OUT)
UTXO(Unspent Transaction Output)
未使用のお金の管理
Transaction outputはDictionaryでデータ型
マイニング
BlockIDが難易度で定められた数以下になるように。
コインベース
Create Coinbase
フォーク
ブロック難易度高くても起こりうる
フォークすると台帳が複数できてしまう、のを避けるよう優先度をもつ
例:
0001234
↓2^4倍難しい
0000001234
MinChainについて
Program
Config
KeyGenerator
Genesis
Runner
ConnectinManager
InventoryManager
Executor
Mining
Program
コマンドもらって関数呼び出し
Runner
データもらって、接続する、接続きたらHello、モジュール呼ぶ
ConnectinManager
TCPリスナー生成
メッセージをシリアライズ
InventoryManager
メッセージ呼ばれると、ブロックリクエストを対応する
もってるか調べる、もってないなら無視、もってたらあげる
渡すときは、Executorへ渡す
Executor
InventoryManagerがトリガー
難易度判定
Runブロックでトランザクションさわる、
いざ稼働させてみる
dotnet build (DLL生成)
dotnet MinChain.dll xxx
鍵の生成
Config生成
鍵とConfigのパス指定で genesis.binが生成(※最初は自分にブロックリクエストしてもらうように指定)
dotnet MinChain.dll run genesis
マイニングが進むと difficultyが上昇していく
2009年のBitcoin的な状態を再現している…。
現状、Blackは固定でシリアライザーが必要
バリデーションないのため、放題の状態
Walletがほしい(トランザクション機能がない)
Multi-Sigができたら素敵(鍵の複数による安全化)
Blockchain Engineer 募集
miyabiチームではBlockChainつくれる場所があります。
***
以上です。
公開されたMinChainはブロックチェーンの基礎のようなので、学習教材として最適と思われました。