どの文字も一筆書きでシンプルになっていますね。今回は、これをそのままパクることにします(笑)。書いた時の、加速度センサーのデータを使おうと思います。実際にデータを取ってみるそれでは、実際にジェスチャーデータを取ってみます。これが、「A」をジェスチャーした時のスマホのセンサーのCSVデータです。1行目は説明のために追加したもので、実際はありませんのでご注意を。行数は全部で88行、測定のトータル時間は1.67秒なので、1行が約0.02秒に相当します。測定開始ボタンを押してから動かすまではタイムラグがありので、最初は0のデータが結構並んでいますね。ここで1つ問題が出て来ます。文字によって一筆書きのストロークに違いがあるので、ジェスチャーに掛かる時間も変化します。従って、CSVファイルの行数も変化するわけです。CSVファイルの行数が一定でないと受付てくれません。実態把握からということで、実際のジェスチャーに掛かる時間を計測してみます。計測の方法は、スマホを水平に持って、「測定開始」ボタンを押してジェスチャーを開始し、ジェスチャーが終わったら「停止」ボタンを押します。26文字について、それぞれ何行掛かるのか、3回平均を取ってみました。結果、アルファベット26文字の平均は102.5行で、一番短いのは「I」の73.7行、一番長いのが「B」の130.7行でした。この差をどう埋めるか。直感的に考えて、CSVファイルを120行で固定することにしました。120行未満で測定が終わった場合は120行まで0データを追加する。120行超えの場合は120行で計測を打ち切る。長い「B」の130.7行を120行で打ち切っても全体の10%未満なので、さほど影響はないだろうと判断しました。ジェスチャーデータ収集のために、センサーレコーダーを改造します。改造点は、下記4つです。+'\n';CSVファイルのフォーマットを指定している部分です。余分なものを外します。+'\n';加速度(重力加速度なし)のみ残し、後は削除すればOKです。{CSVファイルを作成するためにループを廻している部分です。120行で計測を打ち切るようにします。120に置き換えるだけです。d.rr_g;}CSVファイル作成のために、ローカルストレージからデータを読み込んでいる部分です。(120行未満で)読み込むものがなくなった場合の動作を追加します。読み込むデータは、概ね―1.0~+1.0の範囲である必要があるためその修正(正規化)を行います。文を追加して、読み込むデータがなくなったら、0を代入するようにします。加速度(重力加速度なし)のデータを読み込む部分を10で割って正規化しています。+'.csv');CSVファイルの名前を指示している部分です。sensor+年+月+日では長くて使いづらいので修正します。