SlideShare a Scribd company logo
Dragonboardで買い物メモ
2017/7/22
kenzo.nagahisa(アットマーク)gmail.com
自己紹介:自己PRではなく「言い訳」のために
・永久(ながひさ)と申します。お年寄りです。
・電子工作は2013年に「ラズパイLチカ」だけやって挫折したくちです。
・不器用だし老眼なんで半田付けは大抵失敗します。
・プログラミング経験はWindows3.1での業務アプリ/C++までです。
・でもクラウドとか大好きで、たまに初心者向け社内勉強会やってます。
http://qiita.com/nagahisa/items/1d43836dd7663a5259b8
・こんな素人がDragonboardで何が作れるのか・・・
まずは「何をつくりたいか?」から
・ちゃんと自分に役立つものつくりたい
・他の人がどう思おうが関係なく「ちゃんと自分で使うもの」を
・で、我が家で良く困っている「買い物メモ」に着目
・それって、スマホで出来るじゃん
・はい、普通の人はスマホで十分です
・僕も奥さんもケータイ入力超苦手です
・音声入力なんて恥ずかしくて使えません
・ローテク一番、買い物リストは広告の裏にメモ
・でも、せっかく書いた買い物メモを持ってくのを忘れちゃう(^^;
・僕も奥さんも50過ぎ、メモなしでの買い物達成率は2/3まで低下
・スマホは持ち歩いてるので、入力だけスマホ以外でなんとかしたい
なんでスマホで出来ることをわざわざ?
目指せ!
年寄りを支える
IoT
完成系イメージ(こんなのが台所に欲しい!)
ボタンを押して喋ると 喋った内容がスマホへ
牛乳2本
食パン一斤
牛肉をひとパック
実現のためのイメージ
Bing Speech API
slack webhook
結果
現実はそんなに
甘くなかった
・・・
理想と現実① 不器用の壁
ケースがどうこう言う前に半田付けの壁が・・・
理想と現実② 精度の壁
牛乳2本
食パン一斤
牛肉をひとパック
牛乳日本
食パン一気
牛肉をフィードバック
悲しい変換精度・・・
「食パン・一気!」なんて言われると吐きそうす (^^;
たまに変換してくれんし (null)
とりあえず、やった事を発表します
ハードウェア編
USBマイク
eBayで194円(送料無料)
なぜかWifiが繋がらなくて
手持ちのEtherドングルで接続
USBシリアル接続
Amazonで189円(中国発送で送料無料 )
コピー品だったようで最新ドライバーだと
接続できず。旧ドライバで。
動作確認用LED+抵抗
起動用ボタン
不器用の味方
以前ラズパイLチカをトライした時に入手
大掃除の時、捨てないでよかった (^^)
こんなん買ってみましたが、まだ使ってません(涙)
AB基盤蛇の目
モノタロウで85円(送料500円)
今回の出費で一番高額
だったのに・・・
ソフトウェア編
音声録音
テキスト変換
(Bing Speech API)
Slack投稿/tmp/out.wav /tmp/out.json
ボタンを押して一連を実行
音声録音
・最初は Audacityをインストールして、音声ファイル(wav)を作成してました。
・が、Debianには最初から”arecord”ってコマンドが入ってました orz...
・起動されたら3秒間録音し、固定ファイル/tmp/out.wavに保存します。
$cat ~/src/01.record.sh
#!/bin/bash
arecord --device=plughw:1,0 -t wav -f dat -d 3 /tmp/out.wav
Bing Speech API①
・以下から30日無料で試せます。
https://azure.microsoft.com/ja-jp/try/cognitive-services/
エンドポイントURLとAPIキーを取得します。
APIキーは環境変数KEYに格納しておきます。
Bing Speech API②
・この通りにやるとcurlでAPIが利用できます。
https://docs.microsoft.com/ja-jp/azure/cognitive-services/speech/getstarted/getstarted-curl
・APIキーでTOKENを取得して、テキスト変換は TOKENを指定して行います。 TOKENの有効期間が微妙なの
で、毎回 TOKENを取得することにしました。
こんな感じでTOKENを取得して環境変数にセットします ($KEYはAPIキーをセットした環境変数 )。
$ cat ~/src/02.bing-01.sh
#!/bin/bash
curl -X POST "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" 
-H "Content-type: application/x-www-form-urlencoded" 
-H "Content-Length: 0" 
-H "Ocp-Apim-Subscription-Key: $KEY"
$ TOKEN=`~/src/02.bing-01.sh`
Bing Speech API③
/tmp/out.wavファイルのテキスト変換を curlで実行します。結果は /tmp/out.jsonに記録します。(URLに
incetanceid, requestidなど指定して複数リクエストのハンドリングができるようですが、今回は固定値を使って
います。)
$ cat ~/src/03.bing-02.sh
curl -o /tmp/out.json 
-X POST
"https://speech.platform.bing.com/recognize?scenarios=smd&appid=D4D52672-91D7-4C74-8AD8-42B1D
98141A5&locale=ja-JP&device.os=iPhone_OS&version=3.0&format=json&instanceid=b2c95ede-97eb-4c
88-81e4-80f32d6aee54&requestid=b2c95ede-97eb-4c88-81e4-80f32d6aee54" 
-H 'Content-type: audio/wav; codec="audio/pcm"; samplerate=22050' 
--data-binary @/tmp/out.wav 
-H 'Authorization: Bearer '""$TOKEN""
Slack投稿①
・以下を参考にさせて頂きました。
http://qiita.com/tt2004d/items/50d79d1569c0ace118d6
WebHook URLを取得します。
WebHook URLは環境変数WEBHOOKURLに格納しておきます。
Slack投稿②
・/tmp/out.jsonを加工してこんな感じでSlack投稿します。
$ cat ~/src/04.slackpost.sh
#!/bin/bash
CHANNEL=${CHANNEL:-"#shopping"}
BOTNAME=${BOTNAME:-"mybot"}
FACEICON=${FACEICON:-":ghost:"}
MESSAGE=${MESSAGE:-""}
TMPMSG=`cat /tmp/out.json | jq ".results[0].lexical" | sed "s/"//g"`
WEBMESSAGE='```'${TMPMSG}'```'
curl -s -S -X POST --data-urlencode "payload={"channel": "${CHANNEL}", "username":
"${BOTNAME}", "icon_emoji": "${FACEICON}", "text": "${MESSAGE}${WEBMESSAGE}" }"
"$WEBHOOKURL" >/dev/null
ボタンを押して一連を実行①
・以下を参考にさせて頂きました。
http://uepon.hatenadiary.com/entry/2017/06/05/003057
ボタンを押して一連を実行②
・このファイルを編集して system()でshellスクリプト実行させます。
https://github.com/96boards/96BoardsGPIO/blob/master/examples/blink.c
・実行するシェルスクリプトは今までのを1つにまとめた all.shとしています。
$ cat ~/src/all.sh
/home/linaro/src/01.record.sh
TOKEN=`/home/linaro/src/02.bing-01.sh`
/home/linaro/src/03.bing-02.sh
/home/linaro/src/04.slackpost.sh
課題
APIがたまにエラー
以下のようなAPIエラーが発生すると “null”がSlackに投稿されます。
エラーハンドリングを行うべきですが、ユーザへのエラー通知はやっぱり「 Lチカ」かなぁ(^^;
本当の課題は
「不器用」
理想と現実① 不器用の壁
ケースがどうこう言う前に半田付けの壁が・・・
おしまい

More Related Content

What's hot

プログラミング初心者向け情報サイト「プロスタ」
プログラミング初心者向け情報サイト「プロスタ」プログラミング初心者向け情報サイト「プロスタ」
プログラミング初心者向け情報サイト「プロスタ」
Yosuke Homma
 
デザイナーさんでもできる Browsersync からはじめる作業効率化・春
デザイナーさんでもできる Browsersync からはじめる作業効率化・春デザイナーさんでもできる Browsersync からはじめる作業効率化・春
デザイナーさんでもできる Browsersync からはじめる作業効率化・春
Kumiko SHIMIZU
 
2013 09-28 wordbench大阪と俺
2013 09-28 wordbench大阪と俺2013 09-28 wordbench大阪と俺
2013 09-28 wordbench大阪と俺Tomoyuki Sugita
 
WordCamp Yokohama2010 プレゼン
WordCamp Yokohama2010 プレゼンWordCamp Yokohama2010 プレゼン
WordCamp Yokohama2010 プレゼン
miccweb
 
今更聞けないWordPress
今更聞けないWordPress今更聞けないWordPress
今更聞けないWordPress
Junko Nukaga
 
「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験
はなずきん Hana
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったこと
Hirata Tomoko
 
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
schoowebcampus
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界
AdvancedTechNight
 
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
Yusaku Kinoshita
 
フリーランスミートアップを開催してきた@Creators MeetUp #44
フリーランスミートアップを開催してきた@Creators MeetUp #44フリーランスミートアップを開催してきた@Creators MeetUp #44
フリーランスミートアップを開催してきた@Creators MeetUp #44
Erina Takei
 
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
Yusaku Kinoshita
 
絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3Yumi uniq Ishizaki
 
「採用について思うこと。」新卒採用
「採用について思うこと。」新卒採用「採用について思うこと。」新卒採用
「採用について思うこと。」新卒採用
Yamamoto Masahira
 
もくもくと過ごした2016年振り返り
もくもくと過ごした2016年振り返りもくもくと過ごした2016年振り返り
もくもくと過ごした2016年振り返り
Erina Takei
 
HTMLで作ったサイトをWordPressに組み込んでみよう!
HTMLで作ったサイトをWordPressに組み込んでみよう!HTMLで作ったサイトをWordPressに組み込んでみよう!
HTMLで作ったサイトをWordPressに組み込んでみよう!
Daisuke Koshimizu
 
HTML基礎
HTML基礎HTML基礎
HTML基礎
優一郎 板谷
 
習ったことはありませんがこんな感じでWebデザインを教えてます
習ったことはありませんがこんな感じでWebデザインを教えてます習ったことはありませんがこんな感じでWebデザインを教えてます
習ったことはありませんがこんな感じでWebデザインを教えてます
Kyo Kaji
 
カフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶ
カフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶカフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶ
カフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶwebcampusschoo
 
Lp14 komori
Lp14 komoriLp14 komori
Lp14 komori
masaaki komori
 

What's hot (20)

プログラミング初心者向け情報サイト「プロスタ」
プログラミング初心者向け情報サイト「プロスタ」プログラミング初心者向け情報サイト「プロスタ」
プログラミング初心者向け情報サイト「プロスタ」
 
デザイナーさんでもできる Browsersync からはじめる作業効率化・春
デザイナーさんでもできる Browsersync からはじめる作業効率化・春デザイナーさんでもできる Browsersync からはじめる作業効率化・春
デザイナーさんでもできる Browsersync からはじめる作業効率化・春
 
2013 09-28 wordbench大阪と俺
2013 09-28 wordbench大阪と俺2013 09-28 wordbench大阪と俺
2013 09-28 wordbench大阪と俺
 
WordCamp Yokohama2010 プレゼン
WordCamp Yokohama2010 プレゼンWordCamp Yokohama2010 プレゼン
WordCamp Yokohama2010 プレゼン
 
今更聞けないWordPress
今更聞けないWordPress今更聞けないWordPress
今更聞けないWordPress
 
「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験「Microbit」で簡単プログラミング体験
「Microbit」で簡単プログラミング体験
 
エンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったことエンジニアが Webを学ぶために やっててよかったこと
エンジニアが Webを学ぶために やっててよかったこと
 
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
 
three.jsで作る3Dの世界
three.jsで作る3Dの世界three.jsで作る3Dの世界
three.jsで作る3Dの世界
 
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと  ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
 
フリーランスミートアップを開催してきた@Creators MeetUp #44
フリーランスミートアップを開催してきた@Creators MeetUp #44フリーランスミートアップを開催してきた@Creators MeetUp #44
フリーランスミートアップを開催してきた@Creators MeetUp #44
 
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
 
絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3絵描きさんあるあるPhotoshop技 DIST3
絵描きさんあるあるPhotoshop技 DIST3
 
「採用について思うこと。」新卒採用
「採用について思うこと。」新卒採用「採用について思うこと。」新卒採用
「採用について思うこと。」新卒採用
 
もくもくと過ごした2016年振り返り
もくもくと過ごした2016年振り返りもくもくと過ごした2016年振り返り
もくもくと過ごした2016年振り返り
 
HTMLで作ったサイトをWordPressに組み込んでみよう!
HTMLで作ったサイトをWordPressに組み込んでみよう!HTMLで作ったサイトをWordPressに組み込んでみよう!
HTMLで作ったサイトをWordPressに組み込んでみよう!
 
HTML基礎
HTML基礎HTML基礎
HTML基礎
 
習ったことはありませんがこんな感じでWebデザインを教えてます
習ったことはありませんがこんな感じでWebデザインを教えてます習ったことはありませんがこんな感じでWebデザインを教えてます
習ったことはありませんがこんな感じでWebデザインを教えてます
 
カフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶ
カフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶカフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶ
カフェのWEBサイトを作って、WEBデザインの基礎と技術を学ぶ
 
Lp14 komori
Lp14 komoriLp14 komori
Lp14 komori
 

Similar to 20170722_Dragonboardで買い物メモ

Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
龍一 田中
 
デザインはおまかせで、丸投げされた時どうする?
デザインはおまかせで、丸投げされた時どうする?デザインはおまかせで、丸投げされた時どうする?
デザインはおまかせで、丸投げされた時どうする?
rie05
 
Developer tools表示しておけばネトゲやってても仕事してる感でる
Developer tools表示しておけばネトゲやってても仕事してる感でるDeveloper tools表示しておけばネトゲやってても仕事してる感でる
Developer tools表示しておけばネトゲやってても仕事してる感でる
tkceee
 
CoderDojo ひばりヶ丘の取り組み
CoderDojo ひばりヶ丘の取り組みCoderDojo ひばりヶ丘の取り組み
CoderDojo ひばりヶ丘の取り組み
Masao Niizuma
 
Mayaをつかった小ネタ紹介とUnityで何かやってみる。
Mayaをつかった小ネタ紹介とUnityで何かやってみる。Mayaをつかった小ネタ紹介とUnityで何かやってみる。
Mayaをつかった小ネタ紹介とUnityで何かやってみる。
poko ponmaru
 
プログラマがUnityでSTGを作った話
プログラマがUnityでSTGを作った話プログラマがUnityでSTGを作った話
プログラマがUnityでSTGを作った話
MASA_T_O
 
Android+VSO=どうなの?
Android+VSO=どうなの?Android+VSO=どうなの?
Android+VSO=どうなの?
Masanori Ishigami
 

Similar to 20170722_Dragonboardで買い物メモ (7)

Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
デザインはおまかせで、丸投げされた時どうする?
デザインはおまかせで、丸投げされた時どうする?デザインはおまかせで、丸投げされた時どうする?
デザインはおまかせで、丸投げされた時どうする?
 
Developer tools表示しておけばネトゲやってても仕事してる感でる
Developer tools表示しておけばネトゲやってても仕事してる感でるDeveloper tools表示しておけばネトゲやってても仕事してる感でる
Developer tools表示しておけばネトゲやってても仕事してる感でる
 
CoderDojo ひばりヶ丘の取り組み
CoderDojo ひばりヶ丘の取り組みCoderDojo ひばりヶ丘の取り組み
CoderDojo ひばりヶ丘の取り組み
 
Mayaをつかった小ネタ紹介とUnityで何かやってみる。
Mayaをつかった小ネタ紹介とUnityで何かやってみる。Mayaをつかった小ネタ紹介とUnityで何かやってみる。
Mayaをつかった小ネタ紹介とUnityで何かやってみる。
 
プログラマがUnityでSTGを作った話
プログラマがUnityでSTGを作った話プログラマがUnityでSTGを作った話
プログラマがUnityでSTGを作った話
 
Android+VSO=どうなの?
Android+VSO=どうなの?Android+VSO=どうなの?
Android+VSO=どうなの?
 

More from Kenzo Nagahisa

20150807 aws勉強会(v3)
20150807 aws勉強会(v3)20150807 aws勉強会(v3)
20150807 aws勉強会(v3)
Kenzo Nagahisa
 
vhd経由でpc移動
vhd経由でpc移動vhd経由でpc移動
vhd経由でpc移動
Kenzo Nagahisa
 
貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker
Kenzo Nagahisa
 
How to build view_in_onebox
How to build view_in_oneboxHow to build view_in_onebox
How to build view_in_onebox
Kenzo Nagahisa
 
Fun with nested ESXi
Fun with nested ESXiFun with nested ESXi
Fun with nested ESXi
Kenzo Nagahisa
 
おじさんのぬるーい話(Keyboad)
おじさんのぬるーい話(Keyboad)おじさんのぬるーい話(Keyboad)
おじさんのぬるーい話(Keyboad)Kenzo Nagahisa
 
社内メール効率化
社内メール効率化社内メール効率化
社内メール効率化
Kenzo Nagahisa
 

More from Kenzo Nagahisa (7)

20150807 aws勉強会(v3)
20150807 aws勉強会(v3)20150807 aws勉強会(v3)
20150807 aws勉強会(v3)
 
vhd経由でpc移動
vhd経由でpc移動vhd経由でpc移動
vhd経由でpc移動
 
貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker貧乏人でも出来るお手軽docker
貧乏人でも出来るお手軽docker
 
How to build view_in_onebox
How to build view_in_oneboxHow to build view_in_onebox
How to build view_in_onebox
 
Fun with nested ESXi
Fun with nested ESXiFun with nested ESXi
Fun with nested ESXi
 
おじさんのぬるーい話(Keyboad)
おじさんのぬるーい話(Keyboad)おじさんのぬるーい話(Keyboad)
おじさんのぬるーい話(Keyboad)
 
社内メール効率化
社内メール効率化社内メール効率化
社内メール効率化
 

20170722_Dragonboardで買い物メモ