SlideShare a Scribd company logo
1 of 27
Download to read offline
Leap motionとLambdaを使っ 
て「第九」を鳴らしてみる 
Ⓒ Classmethod, Inc. 
1 
DevIO MTUP11-SAPPORO-006 
清野 剛史, AWSエンジニア, Classmethod Inc, 
Dec, 12, 2004
みなさん 
ここまで休憩も無しの長丁場 
お疲れ様です 
2
癒やしのお時間です 
3
自己紹介 
• 清野 剛史 
• AWSエンジニア 
• 7月入社 
• つまりまだまだ新人 
• 今までのDevIOでの発表 
• 最近のガジェットについて 
• Yoについて 
• AWSについてロクに触れていない 
• 今夜はちょっとAWS触れます 
Ⓒ Classmethod, Inc. 
4
re:Invent 2014 
• AWS Lambda発表 
Ⓒ Classmethod, Inc. 
5
これからのコアサービスになるかも 
Ⓒ Classmethod, Inc. 
6
AWS Lambdaとは 
7
20分前に説明されているかと思うので割愛 
8
Lambdaの使い道 
• 定期バッチ 
• 動画や写真等のフォーマット、サイズ変換 
• IoT (Internet of Things)、センサー系データの処理 
• データをDWH等に投入する際の前処理 
• Kinesis等のリアルタイムデータの後処理 
Ⓒ Classmethod, Inc. 
9
Lambdaの使い道 
• 定期バッチ 
• 動画や写真等のフォーマット、サイズ変換 
• IoT (Internet of Things)、センサー系データの処理 
• データをDWH等に投入する際の前処理 
• Kinesis等のリアルタイムデータの後処理 
Ⓒ Classmethod, Inc. 
10
Leap Motion 
Ⓒ Classmethod, Inc. 
11
Leap Motion SDK V2 (Beta) 
変更点 
・Skeletal Trackingの導入 
・右手、左手の検出 
・指の種類 
・指の関節を検出 
・Pinch、Grabの検出 
・検出値の信頼度(Data Confidence)の表示 
C++, Unity/C#, JavaScript, Java, Python, Objective-C等の言語を用意 
今回はJavaScript SDKのラップライブラリ「LeapJS」を使用 
Ⓒ Classmethod, Inc. 
https://github.com/leapmotion/leapjs 
12
Demo 
13
今回やってみること 
1. Leap Motionよりデータを出力 
2. Cognitoを使用してJavaScriptからKinesisに投入 
3. KinesisからLambdaを起動 
4. Lambdaを使ってデータを整形してSQSに入れる 
5. JavaScriptからSQSデータを拾う 
6. Web Audio APIを使用して音量、位相を変える 
Ⓒ Classmethod, Inc. 
14
Web Audio API 
・音声を処理、合成するためのWebアプリケーション向けHTML5 
JavaScript API 
・音源を「再生」するのではなく「音源」として解釈し、ピッチの 
調整、フィルター、PANNING等が可能。 
・音波から作りこむような仕様の為、シンセサイザーの基礎知識が 
無いとハードルが高い 
・ラップライブラリが出てきて使いやすくなった 
https://github.com/goldfire/howler.js/tree/2.0 
Ⓒ Classmethod, Inc. 
15
Demo 
16
今回やってみること 
Ⓒ Classmethod, Inc. 
17
Song 
Beethoven: 
Symphony #9 In D 
Minor, Op. 125, 
"Choral" - 4. Presto 
18
Kinesis Setting 
stream_name = Demono9 
ARN = arn:aws:kinesis:us-east- 
1:xxxxxxxxxx:stream/Demono9 
number of shard = 1 
Ⓒ Classmethod, Inc. 
19
SQS Setting 
queue_name = Demono9 
URL = https://sqs.us-east-1.amazonaws.com/ 
xxxxxxxxxx/Demono9" 
ARN = arn:aws:sqs:us-east-1: xxxxxxxxxx:Demono9 
Ⓒ Classmethod, Inc. 
20
Cognito 認証 
var AWS = require('aws-sdk'); 
var awsRegion = "us-east-1"; 
var cognitoParams = { 
AccountId: "XXXXXXXXXXXX", 
RoleArn: "arn:aws:iam::XXXXXXXXXXXX:role/Cognito_demo09_DefaultRole", 
IdentityPoolId: "us-east-1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
}; 
AWS.config.region = awsRegion; 
AWS.config.credentials = new AWS.CognitoIdentityCredentials(cognitoParams); 
AWS.config.credentials.get(function(err) { 
…………後略 
Ⓒ Classmethod, Inc. 
21
Lambda 
var aws = require('aws-sdk'); 
var kinesis = new aws.Kinesis({region:'us-east-1'}); 
var sqs = new aws.SQS({region:'us-east-1'}); 
exports.handler = function(event, context) { 
for(i = 0; i < event.Records.length; ++i) { 
encodedPayload = event.Records[i].kinesis.data; 
payload = [ごにょごにょと変換処理] 
} 
var params = { 
MessageBody: payload, 
QueueUrl: 'https://sqs.us-east-1.amazonaws.com/xxxxxxxxxx/Demono9', 
DelaySeconds: 0, 
}; 
sqs.sendMessage(params, function(err, data) { 
…………後略 
Ⓒ Classmethod, Inc. 
22
howler.js 
// Setup the sounds to be used. 
var sound1 = new Howl({ 
src: ['Presto.m4a'], 
html5: false 
}); 
var playing = false; 
// Define the tests to run. 
var id; 
var webaudio = [ 
function(fn) { 
sound1.once('play', function() { 
//label.innerHTML = 'PLAYING'; 
playing = true; 
setTimeout(fn, 20000); 
}); 
id = sound1.play(); 
sound1.pos(0,0,0); 
…………後略 
Ⓒ Classmethod, Inc. 
23
LeapJS 
// Main Leap Loop 
Leap.loop(options, function(frame) { 
// Showcase some new V2 features 
for (var i = 0, len = frame.hands.length; i < len; i++) { 
hand = frame.hands[i]; 
for (var j = 0, len2 = hand.fingers.length; j < len2; j++) { 
finger = hand.fingers[j]; 
if (i == 0 && j == 2 && playing){ 
x = Math.sin(finger.dipPosition[0] / 250); 
y = -Math.cos(finger.dipPosition[0] / 250); 
if (x > 1){ 
x = 1 
} 
if (y < -1){ 
y = -1; 
} 
sound1.pos(x,0,y); 
start.style.marginLeft = Math.round(finger.dipPosition[0] * 3) + 'px'; 
sound1.volume(finger.dipPosition[1] / 400); 
…………後略 
Ⓒ Classmethod, Inc. 
24
Demo 
25
まとめ 
クラスメソッドではハードウェアエンジニアを募集し 
ております。 
Ⓒ Classmethod, Inc. 
26
Ⓒ Classmethod, Inc. 
#cmdevio 
ご静聴ありがとうございました。 
スライドは後日ブログで公開します。 
27 
DevIO MTUP11-SAPPORO-006

More Related Content

What's hot

Awsをちゃんと使ってみた 監視編
Awsをちゃんと使ってみた   監視編Awsをちゃんと使ってみた   監視編
Awsをちゃんと使ってみた 監視編
Yoichi Toyota
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
Yuichi Tateno
 

What's hot (20)

MySQL→Aurora移行セミナー
MySQL→Aurora移行セミナーMySQL→Aurora移行セミナー
MySQL→Aurora移行セミナー
 
前座Lambda
前座Lambda前座Lambda
前座Lambda
 
Awsをちゃんと使ってみた 監視編
Awsをちゃんと使ってみた   監視編Awsをちゃんと使ってみた   監視編
Awsをちゃんと使ってみた 監視編
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
 
Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方Amazon ElastiCacheのはじめ方
Amazon ElastiCacheのはじめ方
 
Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch Logsについて
 
DynamoDB Streamを使ったリアルタイム分析
DynamoDB Streamを使ったリアルタイム分析DynamoDB Streamを使ったリアルタイム分析
DynamoDB Streamを使ったリアルタイム分析
 
はじめてのAWS Lambda
はじめてのAWS LambdaはじめてのAWS Lambda
はじめてのAWS Lambda
 
コンテナで作れるFaaS
コンテナで作れるFaaSコンテナで作れるFaaS
コンテナで作れるFaaS
 
Lambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみたLambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみた
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
Serverless frameworkでお手軽lambda運用 at #nseg #93
Serverless frameworkでお手軽lambda運用 at #nseg #93Serverless frameworkでお手軽lambda運用 at #nseg #93
Serverless frameworkでお手軽lambda運用 at #nseg #93
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私
 
はじめてのAmazon Aurora
はじめてのAmazon AuroraはじめてのAmazon Aurora
はじめてのAmazon Aurora
 

Viewers also liked

20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
 
Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10
Tomonari Fukuda
 
Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.
Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.
Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.
satoshi
 
CloudWatchの使い方
CloudWatchの使い方CloudWatchの使い方
CloudWatchの使い方
ShinsukeYokota
 

Viewers also liked (16)

20141216 CM re:Growth Previewが通りにくい“Aurora”を ガッツリ触ってみた! #cmdevio
20141216 CM re:Growth Previewが通りにくい“Aurora”を ガッツリ触ってみた! #cmdevio20141216 CM re:Growth Previewが通りにくい“Aurora”を ガッツリ触ってみた! #cmdevio
20141216 CM re:Growth Previewが通りにくい“Aurora”を ガッツリ触ってみた! #cmdevio
 
20141216 CM re:Growth 梢さんと頑張るシステムサポート
20141216 CM re:Growth 梢さんと頑張るシステムサポート20141216 CM re:Growth 梢さんと頑張るシステムサポート
20141216 CM re:Growth 梢さんと頑張るシステムサポート
 
Fullbokをがっつり使ってみた
Fullbokをがっつり使ってみたFullbokをがっつり使ってみた
Fullbokをがっつり使ってみた
 
Microsoft Office 魔改造 2014冬
Microsoft Office 魔改造 2014冬Microsoft Office 魔改造 2014冬
Microsoft Office 魔改造 2014冬
 
Cm re growth-devio-mtup11-sapporo-004
Cm re growth-devio-mtup11-sapporo-004Cm re growth-devio-mtup11-sapporo-004
Cm re growth-devio-mtup11-sapporo-004
 
Cm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kajiCm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kaji
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
 
2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth
 
Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10Developers.io meetup 01 2013/12/10
Developers.io meetup 01 2013/12/10
 
Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.
Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.
Developers.IO MeetUp 01 Massive Messaging Platform Deployment in a Week.
 
20131210 classmethod re:Growth session04
20131210 classmethod re:Growth session0420131210 classmethod re:Growth session04
20131210 classmethod re:Growth session04
 
Re growth takekawa-slideshare
Re growth takekawa-slideshareRe growth takekawa-slideshare
Re growth takekawa-slideshare
 
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
 
CloudWatchの使い方
CloudWatchの使い方CloudWatchの使い方
CloudWatchの使い方
 

Similar to Leap MotionとLambdaで「第九」を鳴らしてみる

20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
Amazon Web Services Japan
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
Genta Watanabe
 

Similar to Leap MotionとLambdaで「第九」を鳴らしてみる (20)

Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
 
当社のawsへの取組
当社のawsへの取組当社のawsへの取組
当社のawsへの取組
 
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
JAWS-UG CLI #25 LT - AWS Tools for Windows PowerShellでログを取得
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
 
re:Growth 2015 TOKYO keynote以外のアップデートのこと、時々でいいから...... 思い出して下さい(軽量版)
re:Growth 2015 TOKYO keynote以外のアップデートのこと、時々でいいから...... 思い出して下さい(軽量版)re:Growth 2015 TOKYO keynote以外のアップデートのこと、時々でいいから...... 思い出して下さい(軽量版)
re:Growth 2015 TOKYO keynote以外のアップデートのこと、時々でいいから...... 思い出して下さい(軽量版)
 
AWS運用自動化への第一歩 
AWS運用自動化への第一歩 AWS運用自動化への第一歩 
AWS運用自動化への第一歩 
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
serverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Pythonserverless framework + AWS Lambda with Python
serverless framework + AWS Lambda with Python
 
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch LogsAWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
AWS Black Belt Techシリーズ AWS CloudTrail & CloudWatch Logs
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
 
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or ServerlessRunning Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
 
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
 
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
 

More from Tsuyoshi Seino (7)

IoT WARS - the force awakens -
IoT WARS - the force awakens - IoT WARS - the force awakens -
IoT WARS - the force awakens -
 
元気にリモートワークを始める方法
元気にリモートワークを始める方法元気にリモートワークを始める方法
元気にリモートワークを始める方法
 
AWS IoTの勘所
AWS IoTの勘所AWS IoTの勘所
AWS IoTの勘所
 
re:Invent現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT - Deep Dive -
re:Invent現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT - Deep Dive - re:Invent現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT - Deep Dive -
re:Invent現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT - Deep Dive -
 
Re:Invent 2015現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT
Re:Invent 2015現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoTRe:Invent 2015現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT
Re:Invent 2015現地でAWS IoT系のセッションを全部受けた男が説明するAWS IoT
 
IoTで遊ぼうピタゴラスイッチ
IoTで遊ぼうピタゴラスイッチ IoTで遊ぼうピタゴラスイッチ
IoTで遊ぼうピタゴラスイッチ
 
Web Speech APIとWeb MIDI APIでいっこく堂をしてみる
Web Speech APIとWeb MIDI APIでいっこく堂をしてみるWeb Speech APIとWeb MIDI APIでいっこく堂をしてみる
Web Speech APIとWeb MIDI APIでいっこく堂をしてみる
 

Recently uploaded

Recently uploaded (12)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Leap MotionとLambdaで「第九」を鳴らしてみる

  • 1. Leap motionとLambdaを使っ て「第九」を鳴らしてみる Ⓒ Classmethod, Inc. 1 DevIO MTUP11-SAPPORO-006 清野 剛史, AWSエンジニア, Classmethod Inc, Dec, 12, 2004
  • 4. 自己紹介 • 清野 剛史 • AWSエンジニア • 7月入社 • つまりまだまだ新人 • 今までのDevIOでの発表 • 最近のガジェットについて • Yoについて • AWSについてロクに触れていない • 今夜はちょっとAWS触れます Ⓒ Classmethod, Inc. 4
  • 5. re:Invent 2014 • AWS Lambda発表 Ⓒ Classmethod, Inc. 5
  • 9. Lambdaの使い道 • 定期バッチ • 動画や写真等のフォーマット、サイズ変換 • IoT (Internet of Things)、センサー系データの処理 • データをDWH等に投入する際の前処理 • Kinesis等のリアルタイムデータの後処理 Ⓒ Classmethod, Inc. 9
  • 10. Lambdaの使い道 • 定期バッチ • 動画や写真等のフォーマット、サイズ変換 • IoT (Internet of Things)、センサー系データの処理 • データをDWH等に投入する際の前処理 • Kinesis等のリアルタイムデータの後処理 Ⓒ Classmethod, Inc. 10
  • 11. Leap Motion Ⓒ Classmethod, Inc. 11
  • 12. Leap Motion SDK V2 (Beta) 変更点 ・Skeletal Trackingの導入 ・右手、左手の検出 ・指の種類 ・指の関節を検出 ・Pinch、Grabの検出 ・検出値の信頼度(Data Confidence)の表示 C++, Unity/C#, JavaScript, Java, Python, Objective-C等の言語を用意 今回はJavaScript SDKのラップライブラリ「LeapJS」を使用 Ⓒ Classmethod, Inc. https://github.com/leapmotion/leapjs 12
  • 14. 今回やってみること 1. Leap Motionよりデータを出力 2. Cognitoを使用してJavaScriptからKinesisに投入 3. KinesisからLambdaを起動 4. Lambdaを使ってデータを整形してSQSに入れる 5. JavaScriptからSQSデータを拾う 6. Web Audio APIを使用して音量、位相を変える Ⓒ Classmethod, Inc. 14
  • 15. Web Audio API ・音声を処理、合成するためのWebアプリケーション向けHTML5 JavaScript API ・音源を「再生」するのではなく「音源」として解釈し、ピッチの 調整、フィルター、PANNING等が可能。 ・音波から作りこむような仕様の為、シンセサイザーの基礎知識が 無いとハードルが高い ・ラップライブラリが出てきて使いやすくなった https://github.com/goldfire/howler.js/tree/2.0 Ⓒ Classmethod, Inc. 15
  • 18. Song Beethoven: Symphony #9 In D Minor, Op. 125, "Choral" - 4. Presto 18
  • 19. Kinesis Setting stream_name = Demono9 ARN = arn:aws:kinesis:us-east- 1:xxxxxxxxxx:stream/Demono9 number of shard = 1 Ⓒ Classmethod, Inc. 19
  • 20. SQS Setting queue_name = Demono9 URL = https://sqs.us-east-1.amazonaws.com/ xxxxxxxxxx/Demono9" ARN = arn:aws:sqs:us-east-1: xxxxxxxxxx:Demono9 Ⓒ Classmethod, Inc. 20
  • 21. Cognito 認証 var AWS = require('aws-sdk'); var awsRegion = "us-east-1"; var cognitoParams = { AccountId: "XXXXXXXXXXXX", RoleArn: "arn:aws:iam::XXXXXXXXXXXX:role/Cognito_demo09_DefaultRole", IdentityPoolId: "us-east-1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }; AWS.config.region = awsRegion; AWS.config.credentials = new AWS.CognitoIdentityCredentials(cognitoParams); AWS.config.credentials.get(function(err) { …………後略 Ⓒ Classmethod, Inc. 21
  • 22. Lambda var aws = require('aws-sdk'); var kinesis = new aws.Kinesis({region:'us-east-1'}); var sqs = new aws.SQS({region:'us-east-1'}); exports.handler = function(event, context) { for(i = 0; i < event.Records.length; ++i) { encodedPayload = event.Records[i].kinesis.data; payload = [ごにょごにょと変換処理] } var params = { MessageBody: payload, QueueUrl: 'https://sqs.us-east-1.amazonaws.com/xxxxxxxxxx/Demono9', DelaySeconds: 0, }; sqs.sendMessage(params, function(err, data) { …………後略 Ⓒ Classmethod, Inc. 22
  • 23. howler.js // Setup the sounds to be used. var sound1 = new Howl({ src: ['Presto.m4a'], html5: false }); var playing = false; // Define the tests to run. var id; var webaudio = [ function(fn) { sound1.once('play', function() { //label.innerHTML = 'PLAYING'; playing = true; setTimeout(fn, 20000); }); id = sound1.play(); sound1.pos(0,0,0); …………後略 Ⓒ Classmethod, Inc. 23
  • 24. LeapJS // Main Leap Loop Leap.loop(options, function(frame) { // Showcase some new V2 features for (var i = 0, len = frame.hands.length; i < len; i++) { hand = frame.hands[i]; for (var j = 0, len2 = hand.fingers.length; j < len2; j++) { finger = hand.fingers[j]; if (i == 0 && j == 2 && playing){ x = Math.sin(finger.dipPosition[0] / 250); y = -Math.cos(finger.dipPosition[0] / 250); if (x > 1){ x = 1 } if (y < -1){ y = -1; } sound1.pos(x,0,y); start.style.marginLeft = Math.round(finger.dipPosition[0] * 3) + 'px'; sound1.volume(finger.dipPosition[1] / 400); …………後略 Ⓒ Classmethod, Inc. 24
  • 27. Ⓒ Classmethod, Inc. #cmdevio ご静聴ありがとうございました。 スライドは後日ブログで公開します。 27 DevIO MTUP11-SAPPORO-006