皆さんこんばんは、Nefrockのつるつるです
明日は待ちに待ったTsukuba Mini Maker Faire 2020(以下TMMF2020)ですね。
ネフロックは2つのプロダクトを持ってTMMF2020に参加します。
今社内は明日の準備でバタバタしているのですが、そんなバタバタしているメンバーを横目にこの記事を書いています。どきどき。
前回の記事でもプロダクトの説明がありましたが、今回はもう少し開発に至った経緯や技術的なあれそれについて書きたいと思います。
まずはじめに、今回展示するプロダクトの内容は一旦置いといて、なぜ開発に至った経緯の前提となるお話しを書かせてもらいたいと思いますが、若干長いので読むのめんどい人は「何を出展するのか」まで飛ばしちゃってください笑
- 汎用ハードウェアと専用ハードウェア
- カスタマイズという観点で見てみると
- Lチカ後問題
- じゃあどうすれば
- 何を出展するのか
- プロダクト1. Suika-Board
- Suika-Boardの技術的特徴
- プロダクト2. KUROFUNE
- KUROFUNEの技術的特徴
- まとめ
汎用ハードウェアと専用ハードウェア
特に定義があるわけではないのですが、ハードウェアを大きく2個に分類すると、機能に汎用性があり色々な用途に使える汎用ハードウェアと、機能が特化されている専用ハードウェアにわけることができるかと思います。
汎用ハードウェアの例としてRaspberry PiやArduino、ちょっとマニアックになるとFPGA搭載ボードなんかがあります。
汎用ハードウェアはその名の通り汎用なので、特定の用途を想定しているわけではなく、どのような用途に用いるかをユーザーに委ねているのが特徴です。
例えばArduinoなんかは、GPIOに対する電流のオンオフや、センサーの値を読み取るためのポートを用意していますが、具体的にどのような用途で使うかは使用者に委ねられます。
Arduinoで適当に検索をすると、Arduinoに圧力センサーつないで便利なツールを作ってみたよーとか、ユーザが勝手に用途を考えて使っている記事がたくさん出てくるかと思います。
一方専用ハードウェアは、機能がある特定の用途に限定されており、ユーザーが好き勝手にカスタマイズすることは難しいですが、機能が特化されているぶん特定の用途ではしっかりと機能を果たしてくれます。
例えば冷蔵庫なんかは食べ物冷やすことに特化した専用ハードウェアの良い例ですね。
カスタマイズという観点で見てみると
カスタマイズという観点で見てみると、専用ハードウェアは完全に用途が固定されており、カスタマイズが行われる前提で作られていません。分解して機構を理解して改造すればカスタマイズをすることはできますが、壊しちゃう可能性もあるし、そもそも素人にはハードルが高いので敷居が高いですよね。
汎用ハードウェアは先にも述べましたが、ユーザーに使用用途を委ねており、勝手にカスタマイズされることを前提としており、GPIO等のシステムとやり取りするためのインターフェースを備えています。
これらのインターフェースを用いてLチカ(LEDを繋いで点灯させること)させてみたり、センサーをつないでセンシングしてみたり、簡単にカスタマイズすることができます。
Lチカ後問題
上記の話しから行くと、カスタマイズしたハードウェアを作りたいなら汎用ハードウェア買って作れば良いのではと思うかもしれません。
しかし、汎用ハードウェアをカスタマイズしてみようと思ったは良いが「Lチカ後問題」(後述)に遭遇して興味を失ってしまっている人々が多いように思えます。
Lチカ後問題というのは僕が勝手に名付けている問題なのですが、簡単に言ってしまうと、入門書を買ってきてLチカしたりセンサーからデータを取った後に何をして良いのかわからなくなってしまう問題です。
具体的に言うと
- 入門書を読んだ後、面白いものを作ろうと思ったものの何を作れば良いのか思い浮かばない
- 市販のセンサーやアクチュエーターだけでは表現の限界があるので、自作の外部接続デバイス作りたいけど素人にはムズすぎワロタ
といった理由でつまずいてしまう問題です。
つまずいてしまった結果汎用ハードウェアがタンスの肥やしになってしまうのです。(自分も良くやりました...)
ちょっと前までIoT!ラズパイ!Arduino!と騒いでいて、最近そういう話をしないなあというエンジニアがもし周りにいたら、部屋に遊びに行った時にでも本棚の本の隙間を確認してみてください。ホコリを被ったラズパイ先生が鎮座しているかもしれません :-)
じゃあどうすれば
先の1,2に問題を解決するために、それぞれ以下のような設計のハードウェアを用意すれば良いのではと考えました。
- 使うシーンをある程度限定したハードウェア設計にする
- 改造するためのインターフェースをあらかじめ用意する
1の「使うシーンをある程度限定したハードウェア設計」になぜするかという、ハードウェアの使う状況を限定することによってアイデアを出やすくすることを狙いとしています。
例えば木の棒で何かして遊ぼうぜーというより、バットで何かして遊ぼうぜーの方が、何して遊ぼうかなのイメージが湧きやすいですよね?? (若干微妙ですがあまり良い例が思いつきませんでした、、)
2の「改造するためのインターフェースを予め用意する」のは、予め汎用ハードウェアが有していたようなインターフェースを保持することにより、簡単にカスタマイズできるようにしちゃいましょうということです。
要するに汎用ハードと専用ハードの良いとこ取りのハードウェアを作れば、色々解決できるのでは!という発想です。
何を出展するのか
イントロがめちゃ長くなってしまいましたが、今回展示するプロダクトは上記思想を組み込んだプロダクト達になります。
それでは早速プロダクトの紹介をしたいと思います!
プロダクト1. Suika-Board
Suika-Boardはクラフトビールを楽しく飲むためにネフロックの叡智を結集して開発されたパーティーグッズです。
このデバイスはビール瓶の傾きを検知し、ビールを飲み干すと音楽と光を放ち、パーティーの盛り上げに貢献します。
Suika-Boardの技術的特徴
Suika-Boardの目玉の特徴は
- ビールにはまるスイカ柄の電子回路基板
- Arduino互換 <= ArduinoIDEから自由にプログラミングできる!
- 単3電池2本で駆動
にあります。
先に述べた
- 「使うシーンをある程度限定したハードウェア設計」
- 「改造するためのインターフェースをあらかじめ用意する」
を満たしているのがわかるかと思います。
文字だけだとイマイチ想像がつかないと思いますが、実はこのデバイス去年開催した会社のパーティーで披露しており、その時の様子を参加者がtwitterで投稿してくれていたので貼ってみます。
今年もヤバいネフロック創立記念パーティ、今年は参加者全員に一気飲みデヴァイスを配布。
— 歩く気象庁 (@Mekajiki) September 13, 2019
知る限り東京で一番技術で遊んでる会社 #nefrock pic.twitter.com/jFPuONGYI3
Suika-Boardのもう少し踏み込んだ技術的詳細は、以下に回路図やらマニュアルが公開してあるのでもし興味があればみてやってください!
https://github.com/nefrock/suika-board-sdk
プロダクト2. KUROFUNE
KUROFUNEは入力した音声をリアルタイムに特定の音声に変換するハードウェアです。
KUROFUNEのユースケースや概要については前回の記事にて書かせてもらいましたので、今回は技術について触りだけ書かせてもらいます。
KUROFUNEの技術的特徴
KUROFUNEの最大の技術的特徴はFPGAを用いているところにあります。
なぜFPGAを用いているかというと、KUROFUNEの機能である音声の変換にはデバイスの特性上リアルタイム性の担保が要求されます(動画を見ていて音声だけ1秒遅れて流れてきたら気持ち悪くなっちゃいますよね)。
このリアルタイム性の担保を実現するために、FPGAを用いたハードウェアの開発を行っています。
以下は今回開発しているハードウェアのブロックダイアグラムになります。
図を見たら大体やっていることはわかると思いますが、Line-Inから来た音声を
- 音声入力=>AD変換=>FFT=>音声変換=>逆FFT=>DA変換=>音声出力
のように処理しています。(DDR3へのパスは設定値の読み込み等で用いています)
この音声変換部分をユーザーが自由に開発(もしくは誰かの開発した音声変換をインストール)することにより、カスタマイズして使ってもらおうというのがこのハードウェアのコンセプトです。まだ実現はできていないのですが、この音声変換部分にNeuralNetworkを差し込むことによって、より高度な音声変換処理をしようと企んでいます。
まとめ
ということで長々と書いてしまいましたが、2月14・15のTMMF2020にて、KUROFUNEとSuika-Boardの展示を行っています。興味ある人は是非遊びに遊びにきてね!
(なんとSuika-Boardの販売もしています!)