SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IoTをかじってみよう

IoTをかじってみよう(7)
~mbedを使って音声認識でデバイスを制御する

Dockerでの動作確認

 次に、ローカルのDockerで動作確認をしましょう(図14)。

図14 ローカルのDocker上でプロクシを稼働
図14 ローカルのDocker上でプロクシを稼働

 Dockerについても連載第3回第4回で紹介しているので、詳細については、そちらを参照してください。現在は、Windows/Macでは、Docker for MacDocker for Windowsを使うのが簡単です。MacへのDocker Machineインストールは、基本的にここに置かれているdmgファイルをインストールするだけなので手順については省略します。Dockerのドキュメントに注意点があるのでインストール前にチェックしておくと良いでしょう。Dockerで動かす際の手順は以下のとおりとなります。

  • (1)Play Frameworkの機能を使って、application secretという暗号化のための情報を作成しておく
  • (2)application secretをwatson-env.confに設定する
  • (3)Play Frameworkの機能を使って、アプリケーションをzipファイルに固める
  • (4)Dockerfileと(3)の内容から、Dockerイメージを作成する
  • (5)Docker上で(4)で作成したイメージを実行する

 それでは順番に手順を見ていきましょう。

application secretの生成

 Play Frameworkで作成したアプリケーションを本番環境で稼働する場合には、application secretを生成する必要があります。この値はPlay Framework内で暗号化が必要な場合に使用されます。さきほど、local-run.shを実行している状態だと思うので、Ctrl+Cを押して停止します。次にbin/activator(Windowsの場合はbin/activator.bat)に、引数playGenerateSecretを追加して実行します。

$ bin/activator playGenerateSecret
[info] Loading global plugins from /Users/shanai/.sbt/0.13/plugins
[info] Loading project definition from /private/tmp/cz-mbed7/project
[info] Set current project to watsonproxy (in build file:/private/tmp/cz-mbed7/)
[info] Generated new secret: ;[PZ?o]@mWp=a[SQ_cCIsdfLb:lJ3XejKLTIF3i79_Hdf0gZUcg49I0SK=9wnuj[
[success] Total time: 0 s, completed 2016/07/06 18:11:23

 「Generated new secret: の右側に表示された文字列を控えておきます(コマンドを実行するごとに異なる値が生成されます。なお記事上は改行しているように見えるかもしれませんが、実際は1行です)。この値は他の人の目に触れないようにしてください(万が一触れてしまったら再生成します)。この値を、watson-env.confファイルの以下の行に指定すれば、設定は完了です。

APP_SECRET='Playframework app secret'

 また、最後のDOCKER_NSに、BluemixのDockerレジストリの名前空間を指定します(連載の第3回ではsusumutani3の部分にあたります)。

DOCKER_NS='Bluemix docker name space'

イメージの生成

 アプリケーションを含んだDockerイメージの生成は、docker-build.shで行えます。このコマンドでアプリケーションはzipファイルにまとめられて、Dockerイメージが生成されます。

$ ./docker-build.sh
[info] Loading global plugins from /Users/shanai/.sbt/0.13/plugins
[info] Loading project definition from /private/tmp/cz-mbed7/project
[info] Set current project to watsonproxy (in build file:/private/tmp/cz-mbed7/)
[info] Packaging /private/tmp/cz-mbed7/target/scala-2.11/watsonproxy_2.11-1.0-SNAPSHOT-sources.jar ...
[info] Done packaging.
...

Step 6 : ENTRYPOINT /bin/bash -c /opt/watsonproxy/launch.sh
 ---> Running in 5f89dc7ffadb
 ---> 42dac4f09944
Removing intermediate container 5f89dc7ffadb
Successfully built 42dac4f09944

実行

 それでは実行します。実行は、docker-local-run.shで行えます。

$ ./docker-local-run.sh
f15f50c419070b3f2f10d2c1722382393ea10e65cec78862c0a44d772fd4d47a

 まずはログを確認しておきましょう。上記のコマンドで表示された長い16進数文字列が、実行中のdockerコンテナのidなので、これを指定して(コピー・ペーストしてください)、docker logsコマンドを実行します。

$ docker logs f15f50c419070b3f2f10d2c1722382393ea10e65cec78862c0a44d772fd4d47a
[info] play.api.Play - Application started (Prod)
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:80

 リクエスト待ちになっていることが分かります。Dockerでの実行の際は、80ポートで待つようになっているので、mbedのプログラムは以下のように:9000の部分を削除して、コンパイル、書き込みを行ってからリセットしておきます。

int responseCode = httpClient.post("http://192.168.0.10/", request, &response);

 これまで同様、joystickボタンを押して「明るくして」と呼びかけてみてください。うまく認識されれば、LED4が点灯します。認識状況はdocker logsで確認できます。

$ docker logs f15f50c419070b3f2f10d2c1722382393ea10e65cec78862c0a44d772fd4d47a
[info] play.api.Play - Application started (Prod)
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:80
Start index
wav: /tmp/2203062852583053679.wav
response: '{"results":[{"alternatives":[{"confidence":0.717,"transcript":"明るく して "}],"final":true}],"result_index":0}'
transcript: '"明るく して "'
command: '明るくして'

次のページ
注意点

この記事は参考になりましたか?

IoTをかじってみよう連載記事一覧

もっと読む

この記事の著者

花井 志生(ペンネーム 宇野るいも)(ハナイ シセイ(ペンネーム ウノルイモ))

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9568 2016/08/10 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー