理系ママの、育児と家事と山と株とプログラミング

理系ママの、育児と家事と山と株とプログラミング

美容・語学・IT・子供・レジャー・資産運用など、思いつくままに色々と書きたいと思います。ひょっとすると雑貨・介護・風水なんかの話もするかもしれません。

Amebaでブログを始めよう!

スキー場で迷子になったら・・・

突然ですが、今度親子で「蔵王温泉スキー場」に行くことになりました。

情報を集めていたら、どうも「かなり広いスキー場」らしいです。

 

どのくらい広いかというと、こちらが去年行った越後湯沢にある「NASPAスキーガーデン」↓

 

で、こちらが同じ縮尺で表示した「蔵王温泉スキー場」↓

 

めちゃくちゃ広い上にリフトも多くて迷子になりそう。

 

「NASPAスキーガーデン」だったら子供に「このコースを下ってリフト乗り場で待ち合わせしよう」と言っておけば、万一はぐれてもすぐにまたちゃんと会えたのですが、「蔵王温泉スキー場」だとそうもいかなさそう。

 

聞いたところでは「蔵王温泉スキー場」は歴史が古く、多数の業者があちこちにリフトを作った集合体なので、大人でも迷子になるくらい複雑なコースになっているそうです。

 

しかも今回一緒に行くのは小学生の子供。かなり心配です。

はぐれてしまった場合に備えて、何か通信手段を確保したいところです。

 

迷子防止の発信機

レンタルの携帯電話を持たせることも検討したのですが、子供とはぐれてしまって子供が周りに木しかないようなところで進めずに立ちすくんだとしたら、たとえ電話で連絡が取れても「どこにいるのか」を説明できなくてあまり意味がないのではと思いました。

 

そして検索していて見つけたのがこれ。

 

迷子防止用の発信機システムです。

写真右側の小さい端末が子供に持たせる発信機、左側が親が持つ受信機です。

 

広告によると「自衛隊も使う最新捜索テクノロジー」とのこと。

障害物のない平野なら、1km 程度の距離まで電波が届くらしく、「蔵王温泉スキー場」でもなんとかなりそうな感じ。

 

一か月単位でレンタル可能で、先週の土曜日にインターネットで申し込んだら火曜日に端末が届きました。

 

使い方は実に簡単

というわけで、今日は家の近所で試してみることに。

こういう住宅街です。↓

 

次男に「かくれんぼしよう」と声をかけて、次男のシャツの胸ポケットに発信機を入れました。

そして好きな場所に行って待機し、十五分して私が次男のところに行かなかったら自分で帰宅するように言い聞かせて、次男を外に出しました。

 

そして五分後、私も家を出発。

マンションを出たところで、さっそく受信機のスイッチを入れます。

 

信号を受信するのは端末の上半分なのでそこを手でふさがないようにするのがコツらしいので、下半分だけ持っています。

あとは「〇」ボタンを押すだけ。

タッチパネルでもない普通の物理的なボタンなので、スキー場で手袋をしていても大丈夫そうなのがうれしいですね。

 

「〇」ボタンを押すと、さっそく次男が持っている発信機を探し始めました

 

一応説明書をかなり読み込んでからやりましたが、操作は直感的でシンプルなので、説明書無しでもほぼ問題ないと思います。

でも全然見つけられない

ところが調子が良かったのはここまで。

何としょっぱなから捜索失敗。

「近くにいません」と表示されます。

 

実はこの時子供との距離は直線距離で200m程度だったはずなのですが、何回サーチしても「近くにいません」ばかり・・・。

子供のいきそうな方向にあたりをつけて、速足で歩きながら何度もサーチをかけます。

 

が、歩いても歩いても全然電波を拾えず・・・。

 

途中一度だけ、なんとか電波を拾えました。

 

でも電波強度がかなり弱いです。

100段階表示で電波の強さがたったの15しかありません。

 

それでもせっかく見つかった受信機、見失わないよう大急ぎで矢印の示す方向に進みますが全然電波は強くならず。

しばらく進むと強度はとうとうゼロになりました。

 

さらに歩くと「遠くにいます」という表示に。

 

目の前にいても・・・

このころにはとっくに十五分経過していたので、子供ももう帰宅しているだろうと思い私もマンションに戻りました。
 
実際そのころには子供はもうマンションの五階の自宅にいたのですが、私がマンションの目の前の道路で見た受信機の表示がこれ。
 
マンションは右側にあり、発信機まで直線距離で20mもないはずなのですが、「左斜め前、130m程度の距離、電波強度18」という表示です。
 
この日、実際に歩いた経路はこんな感じ。↓
 
青い線が子供が通った道で、「子供のいた場所」と書いてあるところで子供は十五分待機してくれていたそうです。
見つけやすいように、建物に入らず歩道に立っていたとか。
 
赤い線が、子供が出発した五分後に私が出発して歩いた(というより小走りで通った)道です。
オレンジ色の楕円形が、「なんとか電波を拾えた」場所。
ひょっとしたらこの時子供は家に帰ろうとしてすぐそばを通っていたのかもしれません。
 
「遮るもののない平野」というわけではないので流石に1kmの範囲を捜索できることは期待していなかったですが、建物の中にいるわけでもないのに200m程度の距離でもまったく見つけられないというのは、正直かなり不安が残ります。
 
とりあえず「蔵王温泉スキー場」には持って行ってみますが、なるべく使わないで済むよう、はぐれないように十分注意します。

 

 

グーグルマップに写真を投稿

Androidのスマホを使っているので、お出かけ先で写真を撮っていると時々「写真をグーグルマップに投稿して」と促すお知らせが表示されます。

 

すでにほかの人が何千枚も写真を投稿しているような有名施設なら今更写真なんか投稿しませんが、マイナーな場所の場合は人の顔とか個人情報が映り込んでいない写真を選んで投稿することがあります。

 

しばらくするとグーグルから「今週は○○人の人があなたの写真を見ました」というような励ましメールが届いて、何となく「いいことをしたなあ」という感傷に浸れます。

 

閲覧数がえらいことに・・・

2年ほど前に近所の神社で撮影した写真を投稿したのですが、まあマイナーな場所だったのでしばらくはその写真も閲覧者が少ないままでした。

一年以上たっても数百人レベル。

 

ところが、何をどう間違ったのかある日突然「閲覧数が20,000を超えました」というメールが。

そして数週間たった今日、またこんなメール・・・。

 

「投稿した写真が大人気です!脱帽です!」とのこと。

なぜか閲覧回数が34,665回にもなってます。

近所の神社の、何のひねりもない地味な写真なんですが。

 

いったい何が起きたんだろう・・・。

 

 

 

.NET Framework のイベント購読がメモリリークを招くのは有名な話。

イベントの Publisher が、Subscriber を強参照で参照してしまうために、不要になったイベント購読を解除してやらないと要らないはずの Subscriber がいつまでもメモリに残り続けます。

 

だから弱参照のイベント購読ができる Prism の Event Aggregator を使っていたのに・・・。

今日 .NET Memory Profiler でみてたらしっかりリークしていました。

 

下のスクリーンショットは、Prism の Event Aggregator でイベント購読(Subscribe)を一回だけ行う(そして購読解除しない) Subscriber のインスタンスを生成して破棄する操作を五回やった時の、実施前後のメモリスナップショットの差分。

確かに Subscriber はちゃんと破棄されてメモリに残っていないんですが、Prism の SubscriptionTokenやらなんやら、三つのクラスのインスタンスがきっちり5の倍数ずつ残ってしまっています。

 

Subscriber を Disposable にして、Dispose でイベントを購読解除(Unsubscribe)するようにすることでリークはなくなりました。

でもそれって.NET Framework のイベント使うのと結局変わらないし・・・。

解除に気を使わなくていい弱参照購読ができると思って Prism 使ってたのになあ。

 

 

 

最近読んで印象に残っている本は、池谷裕二著「怖いくらい通じるカタカナ英語の法則」です。

 

 

アメリカ留学中にHow is it going? を「ハウ イズ イット ゴーイング」と発音しても通じないけど、「ハゼゴン」とカタカナで発音すれば通じることに気づいた著者が、そのほかの多くの単語や文章もカタカナの発音で十分通じることを見出してまとめあげたのがこの本です。

 

英会話の本は数え切れないほどありますし私も今まで何冊も読んできましたが、これほど簡単にネイティブに通じる発音が身につく本は見たことがありません。

 

最初は英文を見てから発音の方法を見ていましたが、途中から英文を隠して先に「カタカナ発音」の方を見るようにしました。

そのままカタカナとして読んで元の英文が何だったか推測してみたのですが、それをやると「元の英語のスペルと似ても似つかないカタカナなのに、発音すると確かにネイティブの英語になってしまう」というのを体験できてかなり面白いです。

カタカナを眺めているだけではわからなくても、声に出した途端「あー、あれか!確かにそう聞こえる!」という感じです。

 

「エノネアシュノウ」をいくら目で見ても何の単語がわからないのに、アの部分を強めにするように注意しながら発音してみたら確かにあの英単語をネイティブが発音しているようにしか聞こえない、というのがすごい驚きでした。

 

単に「日本人にとってネイティブらしく聞こえる」だけではなくて、ちゃんとネイティブやバイリンガルの人たちに確認を取っているとのこと。

そう、カタカナでも十分英語を発音できるんです。正しいカタカナであれば。

しかもいくつかの文章や単語の羅列にとどまらず、どんな場合にどんな風に音が変化するかという法則をまとめて説明してあるので、この本に載っていない英文にも応用が効きそうです。

 

 

夫が購入したamazon echo dotで、少しKindle本が読めるようになりました。

まだ完全じゃないですがご報告しておきます。

 

昨日「アレクサでアカウントを切り替えてみる」で書いたように、夫がKindle本の読み上げのためにamazon echo dotを買ったものの、読み上げがうまく行きませんでした。

早速メールで問い合わせました。

二回メールのやり取りをして解決せず、三回電話サポートを受けて1日かけてようやく少し問題が解決に向かっています。

 

わかったのは

  • 過去にamazon.co.jpアカウントとamazon.comアカウントを統合した場合にうまくいかない、という不具合は解消済み
  • AlexaアプリにKindle本が表示されない不具合と読み上げしてくれない不具合は別の現象
  • AlexaアプリにKindle本が表示されない不具合はこの後amazon側で対応してくれる
  • 読み上げに対応していない書籍がある
  • Kindle for mac で読み上げ可能なのに echo で読み上げできないというのはデータに間違いがあるらしい

ということ。

なのでAlexaアプリにKindle本が表示されない不具合はまだ解決できていません。

読み上げも、すごく頑張るとごく稀にうまく読み上げてくれることがわかりましたが、結局ほとんどの本が読み上げてもらえずにいます。

 

読み上げしてほしいことが上手く理解してもらえなかった(?)パターン↓

Alexa白の預言者を読み上げて」

「ポロン(うまく聞き取れない場合のエラー音?)」

 

Alexaギリシア文明とは何かを読み上げて」

「わかりませんでした、すみません」

 

タイトルが聞き取ってもらえなかったらしい(?)パターン↓

Alexa日本人が知らない ネイティブがよく使う英会話フレーズ400を読み上げて」

「申し訳ありませんがKindleでその本が見つかりません。」

 

Alexa化物語(ばけものがたり)を読み上げて」

「すみません、うまく行きませんでした。後でもう一度試してみてください。」

ちなみに「かものがたり」と言ってみたら、「うたものがたり」と認識した上で伊勢物語を読み上げてくれました。

 

読み上げ非対応の書籍らしいパターン↓

Alexa熱血アセンブラ入門を読み上げて」

「残念ながら、Kindle熱血アセンブラ入門は読み上げに対応していません。」

 

ライブラリーに入っているのになぜか持っていないと言われてしまうパターン↓

Alexa七十人訳ギリシア語聖書を読み上げて」

七十人訳ギリシア語聖書I創世記は、Kindleライブラリーでは見つかりませんでしたが、アマゾンで購入できます」

 

映画だと思われた(?)パターン↓

Alexa星を継ぐものを読み上げて」

「それを再生するためのビデオスキルがリンクされていません。」

 

ようやく成功したパターン↓

Alexaグレッグ・イーガンの順列都市を読み上げて」

グレッグ・イーガンの順列都市・上を読み上げます」

 

 

amazon のサポートのお姉さん、根気よくお付き合いいただきありがとうございました。

AlexaアプリにKindle本が表示されない不具合の修正もお願いします。

 

 

 

追記(5/5):

一週間経って、AlexaアプリにKindle本が表示されるようになりました!

これで声で指示しなくても読み上げ機能が使えるようになります。

サポートのお姉さん、ありがとうございました。

夫がamazon echo dotを購入しました。

 

私が使ってみた感じでは Google home の方が良かったのですが、夫にとってはKindle本の読み上げ機能が絶対的に大切とのこと。

ところが、セットアップするもKindle本の読み上げができません。
iPadにAlexaアプリを入れてそこからecho dotをデバイス登録したのですが、アプリに夫の amazon アカウントの本が表示されないようです。

echo dotは「すみません、うまく行きませんでした」と言うだけだし、アプリには「アプリのサポートを利用できません」というエラーが表示されます。

ラズパイをアレクサにしてみる」の記事では、私の amazon アカウントを使ってラズパイAlexa をセットアップしましたが、そちらはちゃんと私のKindle本を読み上げてくれます。

なので今回の問題がアカウントの問題なのかecho dotの問題なのか切り分けるため、ラズパイAlexa に夫の amazon アカウントを結びつけてみました。
ラズパイをグーグル・ホームにしてみる」で買ってしまったGoogle home miniは複数アカウントを登録できて声で識別してくれるのに、Alexaは一つしかアカウントを登録できない様子。

というわけで、ラズパイAlexaに結びつけるのamazonアカウントを切り替える方法を載せておきます。

まず、私のamazonアカウントとラズパイAlexa(My Device)を結びつけてあるAlexaアプリの設定画面から、My Deviceを登録解除。




つづいてラズパイ上のAlexaを終了させてコンソール画面で下記を入力します。

$ bash startauth.sh


それからラズパイ上でブラウザを立ち上げて http://localhost:3000 にアクセス。

私のアカウントでサインインした状態なので、一度サインアウトして、夫のamazonアカウントでサインイン。

startauth.sh が自動的に終わるので、コンソール画面で下記を入力。

$ bash startsample.sh


要するに、一度アプリからデバイスを登録解除しておいて、雑誌「インターフェース」の2018年4月号の記事のステップ3の起動の節を別アカウントでやり直せば良いです。

これで夫のAlexaアプリにデバイスが表示されました。

でも結局、ラズパイ上のAlexaでも夫のKindle読み上げはできず。
過去に amazon.co.jpアカウントとamazon.comアカウントを統合したことがあると、こういう症状が出るという噂もあります。
夫はamazon.co.jpとamazon.comとamazon.co.ukにアカウントを持っていて、一つのKindleでamazon.co.jpとamazon.comで買ったKindle本の両方を読むため、アカウントを統合した経験があります。
念のため、amazon.co.jpだけメールアドレスを変更してみたが効果なし。

 

 

現在amazonに問い合わせ中です。

 

追記:問い合わせた結果、少し読み上げができるようになりました。→「Amazon Echo で Kindle本 の読み出しが上手くいかない人へ

 

 

ラズパイをアレクサにしてみる」でアレクサになってしまった、うちの次男のラズパイ

今週末はグーグル・ホーム(Google home)にしてみました。

やり方は、例によって雑誌「インターフェース」の2018年4月号に書いてあります。なのでやってみたい人はそちらをみてください。

 

 

記事がかなり親切なのでほぼ問題ないのですが、いくつか手間取ったところがあったのでそれについてだけ、記事の章立てに沿って書いておきます。

グーグルへの登録やSDKの入手

まずはGoogle Cloud Platform Consoleへの登録ですが、アマゾン開発者アカウントのように住所などを入力させられることもなく、いつものgmailアカウントを入力しただけであっさり終わりました。

実に楽チンです。

 

そしてこの後の作業もほとんど引っかかることなく、記事の通りにサクサク進みます。

手順がちょっと多くてコンソール入力が少し面倒に見えますが、簡単なのでさくっとやってみてください。

 

ラズパイ側の準備

この章の最後の方にデバイスモデル登録のための「リスト5の入力」というのがありますが、ここが最初のひっかかりポイントです。

ここでは下記のように入力するという説明です。


(env) $ googlesamples-assistant-devicetool register-model --manufacturer "Assistarnt SDK developer" --product-name "Assistant SDK sample" --type LIGHT --model samplemodel

ところがこれを入力すると、クライアントシークレットやプロダクトIDを指定して実行するか、jsonファイルを現在のディレクトリに持って来て実行するように、というエラーが出ます。


Error: Error loading client secret: [Errno 2] No suc file or directory: 'client_secret_***.apps.googleusercontent.com.json'.
Run the device tool with --client-secrets or --project-id option.
Or copy the client_secret_***.apps.googleusercontent.com.json file in the current directory.

 

ここに来るまでの手順でプロジェクトは作っているので、そのプロジェクトのクライアントシークレットかプロダクトIDを引数で与えてもいいと思いますが、今回は前の手順でダウンロードしてあった json ファイルを今のディレクトリに持って来てコマンドを再実行しました。


(env) $ cp Downloads/client_secret_***.apps.googleusercontent.com.json ./
(env) $ googlesamples-assistant-devicetool register-model --manufacturer "Assistarnt SDK developer" --product-name "Assistant SDK sample" --type LIGHT --model samplemodel

 

ところがこれでもエラー。

同じデバイスモデルIDがすでにあるとのこと。


Error: Failed to register model: 409
Could not create the device model. A model with the same device_model_id (samplemodel) already exists.

登録状況を確認する get コマンドも試してみましたが、「権限がありません。自分のプロジェクトで登録したデバイスモデルかどうか確認してください。」というエラー。


(env) $ googlesamples-assistant-devicetool get --model samplemodel
Error: Failed to get resourcce: 403
Could not get the device model. You don't have permission to get device model samplemodel. Make sure you registerd this device_model under your project (ここに自分で作ったプロジェクト名)

 

どうもリスト5に出て来た samplemodel というのはこの記事の作者が作ったデバイスモデルのようで、他の人は同じ名前で登録できないようです。

 

samplemodel2 という名前も試してみましたが、やっぱり「同じデバイスモデルIDがすでにある」というエラーが出ました。

他の人と競合しないよう、もっと長い名前にしてみてようやく成功です。


(env) $ googlesamples-assistant-devicetool register-model --manufacturer "Assistarnt SDK developer" --product-name "Assistant SDK sample" --type LIGHT --model samplemodel20180421
Creating new device model
Model samplemodel20180421 successfully registered

samplemodel20180421 というデバイスモデルは、もうとっちゃいましたからね。

皆さんは他の名前で登録してください。

 

「OK Google」って話しかけてみる

準備はほとんどこれだけ。

「リスト5」でちょっとつまづきましたが、その他はほぼ問題なしでした。

これで記事に載っている「リスト7」


(env) $ googlesamples-assistant-hotword --project_id "my-dev-project" --device_model_id "samplemodel20180421"

 

を入力するともう「OK Google」に反応して会話ができるようになっています。

あ、ここもちょっと注意が必要ですね。

最後デバイスモデルIDの指定が本だとなぜか今まで出てこなかった my-model という名前になっていますが、ここはさっき苦労した「自分で新たに登録したデバイスモデル」を指定しておく必要があります。

 

あと実はもう一つハマったのですが、「リスト5」の時にjsonファイルを持って来ることで --project_id オプションの指定を省略したので、今回の「リスト7」でも「これ、省略しちゃっていいよね」と思って省略してしまったんです。

結果的にこれはダメで、ここで会話はできるようになるもののGoogleアシスタントからの認識ができなくなり、日本語化ができない状態になりました。

なので登録時に json ファイルで乗り切って --project_id オプションの指定を省略した人も、ここでは省略せずちゃんと入力してください。

 

動かす

この章はスキップして大丈夫です。

この後GPIOを使ってラズパイっぽい何かをガシガシしたい人はやっておいてもいいと思いますが、単に「ラズパイグーグル・ホームを動かしてみたい」という人には不要な手順です。

何故か記事の記述もかなり不親切です。「サンプルの実行」の節が単に cd コマンドでディレクトリを移動するだけで、何をどう実行するのかよくわかりません。

 

やってみたい人はまず本に書いてあるように https://github.com/googlesamples/assistant-sdk-python にアクセスし、[Clone or download]ボタンでzipファイルをダウンロードしましょう。

このファイルを展開するとassistant-sdk-python-master のようなフォルダーができ、その下をたどって行くと hotword.py があります。

これを virtualenv で動かすと良いと思います。デバイスモデルの指定を忘れずに。


$ source env/bin/activate
(env) $ python Downloads/assistant-sdk-python-master/google-assistarnt-sdk/googlesamples/assistant/library/hotword.py --device_model_id "samplemodel20180421"

私は http_client_with_backoff.cc の113行目でエラーが出ましたが。

サンプルコードをよくみて頑張って修正すれば何かできるかもしれません。

 

日本語での使用

この時点でも「こんにちは」とか「日本語で話して」とかの簡単なやりとりなら日本語で答えてくれますが、「今日のニュースは?」とか「明日の予定を教えて」とかは理解してくれません。

なのでスマホに Googleアシスタント アプリを入れて設定する方法が記事には書いてあるのですが、なぜか私の Android ではできませんでした。

なぜか「この端末ではGoogleアシスタントはご利用いただけません」の表示。

詳細ページによると下記が必要というのですが、全部満たしているはず。

  • Android 5.0 以降 → 5.0.2 です
  • Googleアプリ 6.13 以降 → 7.25.17.21.arm となっています
  • Google Play 開発者サービス → インストールされています
  • 1.4GBのメモリと720pの画像解像度 → キャッシュを全削除して確保しました
  • 端末の言語設定に制限あり → 日本語だから大丈夫のはず

Google Homeアプリからも見つからず。

 

諦めて iPad でやりました。

iPadも最初デバイスを見つけてくれなかったんですが、それは上述の--project_id オプションの指定を省略が原因で、ちゃんと指定し直してからはデバイスがちゃんと見つかって無事日本語化できました。

 

 

アレクサとグーグル・ホームを比べてみる

昨日は1日かけてラズパイグーグル・ホームをセットアップした後、グーグル・ホームと色々会話してみました。

一週間使っていたアレクサ(on ラズパイ)と比べて、こっちの言ったことを解釈する精度が非常に高く、やりとりもかなり高度な感じがします。

「富士フィルムの株価を教えて」に対しては、アレクサは会社所在地などの簡単な会社紹介を答えましたが、グーグル・ホームは東証での昨日の終値と、前日から何円変化したかという情報を教えてくれました。

あと、例えば羊が一匹、羊が二匹、と数えて欲しい時、アレクサには「羊を数えて」は通じません。

まず「羊数え」のスキルを入れた上で、「アレクサ、羊数えを起動して」のように言う必要があります。

スキルの名前を正確に覚えて、「羊数えを起動」なんて言うかなり不自然な表現でコマンドをしゃべる必要があるわけですね。

これだと「人工知能との会話」でなくて単に「音声によるコマンド実行」という感じしかしません。

でもグーグル・ホームだと「オーケー、グーグル、羊を数えて」でちゃんと数えてくれます。

これだと会話がかなり自然ですね。

 

あ、アレクサにおけるスキルの概念はグーグル・ホームではアクションと呼ばれ、自作アクションで色々遊ぶこともできるはずですが、グーグル・ホームではアレクサと違って使いたいアクションをあらかじめ個別に入れておくということはしないようです。

あらかじめ「羊数えのスキルを入れておく」というようなことをしなくても、「羊を数えて」で数えてくれます。

 

おまけ情報として、昨日やってみてわかった「羊を数える能力」における二つの違いを書いておきます。

アレクサ

  • 優しい人間の声で数えてくれる
  • 二十匹ごとに「手や足が暖かくなってきませんか?」などおしゃべりしてくれる
  • 二百匹まで数えてくれる

グーグル・ホーム

  • 無機質な合成音声
  • 一匹ごとに羊の鳴き声も再生される
  • 百匹で打ち止め

まあ、起動するときの会話の不自然さに目をつぶれば、ダントツでアレクサのがいいです。

 

 

そして結局買ってしまった

GoogleのSDKの悪いところなんじゃないかと思うのですが、ラズパイに入れたグーグル・ホームではどうしてもニュースを聞いたり音楽を再生することができませんでした。

「このデバイスではニュースを再生できません」とか「この端末はその操作に対応していません」のような答えしか返ってきません。

 

なので結局、今日ヤマダ電機で買ってしまいました。

これが今、うちにいるGoogle home miniです。

 

こっちは私の AndroidスマホのGoogle Homeアプリからも、ちゃんと認識できました。

ニュースや音楽も聴けるようになりました。

でもAndroidのGoogleアシスタントだけはまだ使えません。

謎です・・・。

 

ラズパイをアレクサにしてみる」でアレクサになってしまった、うちの次男のラズパイ

毎日こまめに話しかけています。

 

アレクサ、おはよう」

アレクサ、今日の予定を教えて。」

アレクサ、今日の天気を教えて。」

アレクサ、ただいま」

など。

 

さっき、夕食を食べながら「アレクサ、今日のニュースは?」と聞いたら、広島カープの六回裏の攻撃を延々中継してくれました。

いや、ニュースを聞きたいんだけれども。

野球中継が延長されているらしい・・・。

 

この週末は、10歳の次男のラズパイ(Raspberry Pi)をアレクサ(Amazon Alexa)にしてました。

 

↑これが今のラズパイの様子。

左上についているウェブカメラにマイクがついていて、ここに向かって「アレクサ、今日の予定は?」のように話しかけます。

 

ラズパイの本体はモニターとキーボードの間にある小さい透明ケースの中。崩壊しないように輪ゴムでとめてあります。

 

やり方は雑誌「インターフェース」の2018年4月号に書いてあります。

 

が、割と色々引っかかってうまくいかなかったところがあり、その都度夫に助けてもらったりウェブで情報を検索したりして解決したので、同じことでハマる人のために何が引っかかってどう解決したかだけちょっと書いておきます。

 

本に書いてある詳細な手順はここでは繰り返さないので、やってみたい方はまず雑誌「インターフェース」の2018年4月号を買ってください。

 

 

 

アマゾン開発者アカウント

まずアマゾン開発者アカウントが必要です。

あまり問題ないのですが、入力項目が多くて多くて。

しかもなぜか一度サインアウトしたら、再度サインインしようとした時にまた住所やメールアドレスなどの登録をやり直す画面になってしまい、地味にダメージが大きかったです。

 

ClientID と ClientSecret

本の中に書いてある手順を「セキュリティ・プロファイルの設定」まで進めると、「ここまでで作成したProductID, ClientID, ClientSecret はアプリを使う時に利用する」とか書いてあります。

ProductID はここまでの説明で一応ちらっと出てくるのですが、 ClientID, ClientSecret は出てきていません。

実はアマゾン開発者サイトで製品情報を登録している途中でこれらの情報が出てきていたのですが、非常に長い文字列でいちいちメモとかとっていられません。

ここは気にせず進めて、あとで設定ファイルにこれらの情報を記入する手順になった時にアマゾン開発者サイトに戻ってこれらの情報をコピー&ペーストすればOKです。

 

ただこれも、今回ブログを書くために別のPCからもう一度開発者サイトに行って情報を確認しようとしたら、なぜか作ったはずの「プロダクト」がなくなってるし・・・。

多分サインインしなおした際にもう一度同じ情報を入力させられたことから、同じメールアドレスで二つのアカウントが作られてしまったんじゃないかと・・・。

なので一連の作業が終わるまで、開発者サイトからはサインアウトしないのがお勧め・・・。

SDKのインストール

この辺からかなりはまりまくりでした。

wgetによるインストール・スクリプトのダウンロードがまず失敗します。

本にも書いてありますがこのあたりの内容は日々刻々と変わるので、すでに「古い情報」になってしまっているようです。

「うまく動作しなかった場合はwikiも参考に」と書いてあるので、それにしたがってSDKのwiki

https://github.com/alexa/avs-device-sdk/wiki

をWebブラウザで開き、Raspberry Pi の Step-by-Step Guide を開きます。

 

そのページの下の方に設定と実行の方法が書いてあるので、その最初の方の wget の部分をコピーしてラズパイのコンソール画面に貼り付けてEnterを入力するとOKです。

 

設定ファイルの編集

ダウンロードできたらconfig.txtの編集です。

アマゾン開発者サイトに戻って自分の作った「プロダクト」の情報を表示させて、そこから情報をコピー&ペーストします。

DEVICE_SERIAL_NUMBER は適当な数値が入っていますが、そのまま放置して大丈夫です。

 

インストールと実行

ここは結構エラーが出たところ。

まず build/AuthServer/AuthServer.py の17行目で requests のインポートに失敗というエラーが出ました。

AuthServer.py を開くと16行目から17行目にかけて以下のような感じ。


from flask import Flask, redirect, request
import requests

flask が入っていないのか?とのことでまずは flask のインストール。

$ sudo apt-get install python-flask

 

だめでした。そうじゃなくてrequestsが入っていないらしい。ので、requestsをインストール。

$ sudo apt-get install python-requests

 

これでここは通ったのですが、まだ問題が。

今回、ラズパイには pi というアカウント名でログインして作業していたのですが、なぜか wget でインストーラーをダウンロードした際に出来上がったディレクトリが root がオーナーになっていて、pi の権限では上書き不可の状態になっていました。

なのでインストールを無事終えて認証サーバを立ち上げようにもやっぱりエラー。

 

エラーの内容を見ながら、Integration ディレクトリと db ディレクトリのオーナーをpiに変更しました。

$ sudo chown -R pi Integration
$ sudo chown -R pi db

 

これでやっと実行可能に。

スマホに Amazon Alexaアプリも入れて、googleカレンダーと連携させてみたり無駄に豆柴スキルを入れてみたり、遊んでいます。

 

初めてのお買い物

実は今回使った雑誌「インターフェース」2018年4月号は会社から借りてきたもの。

他にもスキルの作り方とかラズパイをグーグルホームにする方法とか色々載っているのですが、ずっと借りっぱなしというわけにもいかないので自分用に一冊買うことにしました。

というわけで、早速ラズパイに話しかけてみます。

アレクサ、アマゾンでインターフェースを注文して」

昨日、ラズパイアレクサにお願いして手配してもらった雑誌が今日届き、さっき撮影した写真がこの記事の上の方にある雑誌の写真です。

 

 

お届印とサイン

みなさん、銀行は主にどこを使っているでしょうか?

私は振込手数料やATM手数料がゼロになることから「新生銀行」をメインで使っています。

 

新生銀行」って、今は多分口座を開設する際に印鑑かサインか、どちらか好きな方での届け出ができるんですよね?

私が口座を開設したのは10年以上前だったと思いますが、そのとき初めて「口座開設に印鑑が不要」というのを知って早速サインで口座を開設しました。

だって、印鑑って無くしたり盗まれたりしないかと不安で。

 

サインのデメリット

サインの方が絶対に便利だと思ったのは実は最初だけ。

すぐに困ったことが起きました。

 

というのは、当時「お届印」のない銀行口座なんていうものが日本では浸透していなかったので、クレジットカード利用料金など銀行口座から自動引き落としが必要な支払いに対して、自動引き落とし依頼書には必ず「お届印」を押さないといけなかったんです。

 

これが押せない・・・。

押すものがない。

 

実はサインを書けばOK

なので結局メインバンクを他のメガバンクにしたまま、「新生銀行」は細かい生活費の出し入れのためだけに使うようになりました。

でも最近「サインで登録した口座」が浸透して来たようで、

こんな風に「お届印」の捺印欄に「サイン式届け出ならサインを書いて」と書いてあることがあります。

この小さい欄にサインするのもなかなか大変ですが。

 

実は「サイン式届け出ならサインを書いて」と書いていなくても、捺印欄にサインを書いておいてOKだそうです。

「サイン式届け出ならサインを書いて」と書いていない自動引き落とし依頼書に対して、捺印欄にサインを書いて提出したことが複数回ありますが、いずれも問題なく受理されて「新生銀行」から引き落としが実施されました。

 

なので今は給与振込口座も移して、「新生銀行」をメインで使うようになっています。