百人一首かるたを読み手がいないときでも練習できるロボットです。タッチセンサーを押すと、ランダムに百人一首を読み上げてくれます。持ち運べるように、モバイルバッテリーを内蔵しています。競技かるたの武道場には利用できるAC電源がないためです。

図1●百人一種を読み上げる「みやベリーパイ」
図1●百人一種を読み上げる「みやベリーパイ」
スピーカーはピンジャックに接続。USBスピーカーを使ったところ、音声が高速再生になるというバグが発生したため。外装は「和」をイメージした和紙を張った箱。読み上げの様子はYouTubeで公開している。
[画像のクリックで拡大表示]

 ランダムに百人一首を読み上げる市販の製品もありますが、とても高価です。そこでラズパイを使って自作してみようと思いました。

 いざRaspberry Pi 2 Model Bで作ろうとしたところ、PCのデスクトップがなければScratchのプログラムを外部から制御できないという壁に当たります。解決策は身近なところにありました。タッチセンサー付きのディスプレイ「Display-O-Tron HAT」(http://shop.pimoroni.com/products/display-o-tron-hat)を2015年のラズベリーパイ財団賞の副賞(みんなのラズパイコンテスト2015の公式サイト)として頂いており、タッチセンサーからScratchのプログラムを制御するのに最適だったのです。

 Scratchのプログラムでは、タッチセンサーからのメッセージを基に、読み上げの開始やラズパイのシャットダウン処理を実施します。Display-O-Tron HATを制御するNode.jsプログラムからのメッセージを、「scratch-rsp」(http://github.com/yokobond/node-scratch-rsp)を使ってScratchで受け取れるようにしています。

 読み上げでは、あらかじめ作成したリストからランダムに一首ずつ読み上げるようにしました。容量の大きい音声ファイルを伴うリストの作成に時間がかかるので、100首を読み上げた直後にリストを初期化するプログラムにしています。

 応募時点で、プログラミングを習い始めて約2年。今回の作品のために、ScratchだけでなくJavaScriptも学びました。今後は、読み上げプログラムの2重起動の防止や起動時間の短縮、ケーブルが箱の外に出てしまっている点の改善などに取り組む予定です。