スマートフォンは通常、通話、写真、アプリといった機能で説明されます。しかし、代わりにそれが内蔵しているもので説明してみましょう。48 kHzでサンプリングする十分にキャリブレーションされたマイク、2、3台のカメラ、高輝度なLEDトーチ、バイブレーションモーター、加速度センサー、そして正確なレートで点滅できるスクリーン。それはスマートフォンではありません。タッチスクリーンを備えた、小さな実験室です。
ほとんどのアプリは、これらの部品のいずれか1つを本来の用途で一度に使用します。面白い測定が始まるのは、それらを本来の用途以外で、かつ組み合わせて使用するときです。カメラの光源としてのトーチ、加速度センサーの加振器としてのバイブレーションモーター、実験のもう片方の半分としての2台目のスマートフォン。この記事は、難易度が上がっていく3つの段階に分けて、その領域を示した地図です。
ティア1:1つのセンサーによる受動的な測定
最もシンプルなツールは、1つのセンサーを世界に向け、返ってくるものを分析します。
- 音響スペクトル — 音声を録音し、スペクトルを計算し、エネルギーがどこに集中しているかを確認します。これは、モーター、ハム音、ガタつき音、叩いたオブジェクトの鳴り響く音など、多目的に使える主力機能です。
- タップテスト — 果物を叩いたり、素材をタップしたりして、リングダウンを分析します。支配的な共振とそれが減衰する速さは、音の大きさよりもはるかに多くの内部情報を教えてくれます。(詳細はタップテストの記事を参照してください。)
- 振動 — 洗濯機、コンプレッサー、3Dプリンターの上にスマートフォンを置くと、加速度センサーがその振動特性を記録します。
- カメラの色と光 — スポット色の測定、ディスプレイやLED照明のフリッカー/点滅レートの検出、照度、繰り返されるオブジェクトのカウント、アナログメーターの読み取り、寸法の推定。
これらに共通する原則は、プラットフォームが許す限り生(RAW)に近い状態でキャプチャすることです。Androidでは、マイクの未処理パスを要求すること(測定対象の信号そのものを書き換えてしまう自動ゲイン制御やノイズ抑制は行わない)、そして測定が光レベルの正確性に依存する場合は常にカメラの自動露出とホワイトバランスをロックすることを意味します。
ティア2:スマートフォン自身が刺激を与え、その応答を測定する
スマートフォンにはアクチュエーターも搭載されており、アクチュエーターとセンサーを組み合わせることで、受動的な測定から能動的な計測器へと進化します。
- トーチ + カメラの反射率 — トーチをオフにした状態とオンにした状態でフレームのペアをキャプチャします。その差分から表面が既知の光をどのように反射するかを分離し、周囲の部屋の明かりによる影響をほぼ相殺します。
- 光源としてのトーチ:脈拍と半透明性 — トーチをオンにした状態で指先をカメラに押し当てると、カメラは光検出器となり、心拍ごとの血流量の変化を監視します。同じ光学系を使用して、素材の半透明性を測定することもできます。
- バイブレーションモーター + 加速度センサー + マイク — スマートフォンがオブジェクトに対して自ら振動し、そのオブジェクトが力学的および音響的にどのように応答するかを記録します。中空のパネルと頑丈なパネルでは応答が異なります。
能動的なツールには、受動的なツールにはない特性があります。それは、与える刺激が既知であるということです。刺激をコントロールできれば、絶対的なレベルではなく、比率や応答に基づいて機能を構築できます。これにより、各デバイスをキャリブレーションすることなく、異なるスマートフォン機種間で結果を比較できるようになります。
ティア3:2台のスマートフォンによる1つの実験
壁がどれだけの音を遮るか、窓がどれだけの光を透過するかなど、いくつかの測定値は本質的に両側性です。1台のスマートフォンが同時に両側に存在することはできませんが、2台あれば可能です。そして、たいていの家庭には2台あります。
実験器具を使わずにこれを実現する秘訣は、同一レシーバー比(same-receiver ratio)にあります。送信側のスマートフォンが、自己識別可能な刺激(段階的なトーンスイープや、一定のレートで点滅するスクリーンなど)を再生します。測定側のスマートフォンは、送信側への進路を遮るものがない状態(リファレンス)と、壁や窓を通した状態の2回キャプチャします。同じマイクまたはカメラで取得されたこれら2つのキャプチャの比率のみが、最終的な測定値として使用されます。送信側の音量、受信側の感度、部屋の影響、これらすべてが相殺されます。そのため、2台のスマートフォン間でクロック同期もケーブルも、相互のキャリブレーションも必要ありません。(詳細は遮音に関する記事で詳しく説明しています。)
3つの段階すべてに共通する設計ルール: 絶対レベルを信用しないこと。スマートフォンのマイクやカメラの性能は機種によって異なりますが、共振、減衰率、次数領域パターン、同一レシーバー比などはほとんど変わりません。相対的な量から構築された機能はデバイスをまたいで機能しますが、絶対的な量から構築された機能は、常にデバイスごとのキャリブレーションが必要になります。
単一の測定値からカタログへ
単一の測定値だけでは単なるトリビアにすぎません。測定値がモノ(今日の測定、そして来週の測定対象となるこのメロン、このホイール、この壁など)と結びついたときに、知識へと変わります。そのため、すべての測定値はカタログ内のオブジェクトの下に整理できます(カテゴリ → オブジェクト → ユースケース → 測定値)。さらに、測定した後に、グラウンドトゥルース(正解)ラベルを付与することもできます。たとえば、メロンをタップし、切り開いて中身を確認し、その結果を記録します。多くのユーザーと多くのオブジェクトでこのクローズドループを繰り返すことで、タップテストの分類器は実験室のサンプルではなく、本物の果物でトレーニングされるようになります。
また、単一の測定値ではなく一連の作業(自転車のホイールのチューニングや、部屋の遮音性のチェックなど)については、ガイド付きのアクティビティが、いくつかのツールを正しい順序で連携させ、測定の合間に何をすべきかを指示し、その結果を同じカタログに書き込みます。スポークチューニングの記事では、その最初のプロセスを解説しています。
今後の展望
ツールのリストは増え続けています。そして、ツールの追加はアドオン形式で行えるようにアーキテクチャが設計されています。つまり、レジストリに新しいエントリを追加するだけでよく、既存の保存内容を作り直す必要はありません。すべてがデバイス上でオフラインで実行され、1秒未満で結果が出ます。オフラインファーストの記事では、この制約が単なる機能のチェックボックスではなく、なぜシステムを支える重要な柱(耐荷重)であるのかを説明しています。