参加録「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はブロックチェーンの基礎のようなので、学習教材として最適と思われました。
3分間でつくれるGo言語開発環境
Blockchain本を読んでいたらGo言語(以下golang)の検証環境に出くわす。
pythonのAPIもあったけどどうしようかな、避けて通るかな…。
と瞬間思うも、何かの縁だと思いgolang入門。
以下本題。
■環境
> brew install go
※なにかbrewがおかしなエラー吐いたら診断。
> brew doctor
不具合解消例:
> sudo chown -R $(whoami) /Users/(your_name)/Library/Logs/Homebrew
> sudo chown -R $(whoami) /usr/local/opt
□ gopathを設定
ファイルを開いて、
> vi ~/.bashrc
下記追記して…
> GOPATH=$HOME/.go; export GOPATH;
反映。
> source ~/.bashrc
□ デバッガインストール
> brew install go-delve/delve/delve
IntellijのPreference > Pluginから、goを検索してインストールする。
IntelliJ IDEA 2016.3 Help :: Managing Enterprise Plugin Repositories
□ IntelliJ CE 設定
- インデント:デフォルト8字を4字に変更
以上。
インストールでエラー出なければ能動的3分間だったのではないでしょうか。
環境出来たところで Tour of Go (-;
■ 参照
- IntelliJ CE + Delve で Go 言語のデバッグ環境構築(Mac) - Qiita
- Intellijでgolangな環境を構築する - techium
- Goコマンド参照(※オプション詳しい)
■ IDE汎用ショートカットキー
- デバッグ: "Command","Shift" ,"Option" 同時押し+ fキー
- コード整形: "Shift" ,"Control" 同時押し+ dキー
- Build:"Shift" ,"Option" 同時押し+ F9キー
- Run:"Shift" ,"Option" 同時押し+ F10キー
イベント参加録 アクセンチュア流セキュリティワークショップ
Dash前の踏み込み段階
商品到着のご報告。
Node.jsと"node-dash-button" libraryでボタン押下イベントをハンドリングするみたいなことを試したかったのです。
縦6cm、横3cm、厚み1.5cm。
このサイズなら冷蔵庫あたりに複数貼り付けていても、邪魔にならないサイズ感です。
そういえば2016年末、バズっていた記事もメモがてらに転載します。
ハード屋とソフト屋の思考の違いの着眼点。
Amazonの脅威は、プラットフォーマーがビジネスモデルから逆算してデバイスを売るという戦略とのこと。
低関与商品の位置づけを、広告からAmazonマーケットプレイスに置き換えるもの。言うなれば広告殺し。
2017年はIoTとマーケティングの実験時代。
新宿三丁目 立ち飲み日本酒BAR 酛(もと)
会社からの帰途。
ふらっと立ち寄りたくなる場所のひとつに「酛(もと)」というBARがあります。
https://tabelog.com/tokyo/A1304/A130401/13111891/
長居するでもなし。一人でふらっと入れるのが良いです(※最近店内満員のこと多いですが…)
会ったことのない銘柄探しという楽しみ方。
リストのなかの好みは、而今。次いで上喜元、飛露喜。
たまの贅沢です。