まだブログ飯とかいってんの?

もうすぐブログで食えなくなる前に。「脱ブログ飯」のすすめ。

Taskerを使った行動管理システムを作る#2

この前の書いた記事で、EvernoteリンクからTaskerを呼び出せるようになった。この機能を使って、行動管理システムをつくろうと言うのが、僕が今回やろうとしていることで、まず、システムの全体像をイメージするために必要な機能をまとめてみる。

まあEvernoteリンクでなくても、「Tasker://」から始まるリンクをクリックしたら、それが全部Taskerに渡るということで、例えばNFCタグを読み取ったら、そこに書き込んだURLを元にTaskerのタスクを実行するといったことや、端末を超えて(これはAutoRemoteの出番)URLを渡すことで実行する端末を自由にコントロールすることが出来るはずである。さらにTaskerからAutoShareにURLを渡せば任意のタイミングで処理することが出来る(リダイレクトのようなもの)



トリガーとなるのは”Tasker://Execute.Tasker.Task.Say.Hello/”といったURL文字列で、

  • Evernote上でのリンククリック
  • ブラウザからのリンククリック
  • NFCタグの読み取り(URLを書き込んでおく)


これに加えて、

  • 音声認識(GoogleNowやAndroidWareデバイスからの音声入力)でのタスク実行
  • プロジェクト(複数のURLをまとめたテキストファイルを呼び出す)


と言った方法でのタスク実行も可能にすると便利だろうか。それで最初に呼び出したタスクでは以下の様な処理が必要になる



URLのパース

まずURL文字列を分解して配列に保存、.のエスケープ処理
IfElseの入れ子構造で順に条件判断して、必要な処理を記述する
最後にURL文字列を他のデバイスにもAutoRemoteで送信して、他の端末でも同じロジックを処理させる。(ただし、指定された場合以外は、実際の処理は行わないため、通知としての意味がある)



変数入力機能

あと、URLの一部を後から入力できるようにするための機能も実装したい。例えば以下の様なURLの場合、

Tasker://Action.Alert.SetTimer.!何分に設定/

タスクが実行される段階で、ユーザーが入力(音声呼び出しの場合は音声での入力)することが出来る。



音声認識の処理

音声認識はAutoVoiceを利用して行う。GoogleNowIntegrationが使用できれば、GoogleNowからの検索も可能になる。例えば「GoogleNow コマンド アラームを設定」と言った場合、


まず、DropBox上に「アラームを設定.txt」というファイル名で、URLを記述したテキストファイルを作る。これをFolderSyncによる同期を設定して、端末上に同期しておく。
次に、TaskerからAutoVoiceRecognizedイベントを検出して、条件としてコマンドフィルターに「コマンド」を設定する。あとは、一致するテキストファイルを探して、中の文字列をAutoShareに渡すと、Taskerで処理されるという仕組み。



プロジェクト

音声認識とほぼ同じ仕組で、テキストファイルをDropBox上に保存、同期して、実行していく。この際のテキストファイルは、「com.Project.EnglishLeaning.Start.txt」として、中に実行したい順にURL文字列を記述する。


プロジェクトの場合は、上記の場合は、

tasker://com.Project.EnglishLeaning.Start/

というリンククリックがトリガーとなってテキストファイルの中のURLが実行される仕組みとなる。



以上のような仕様でタスクが実行される仕組みを作っていこうと思うが、この機能と行動管理と、どう関係しているかについては、

Evernote上に例えば英語学習を始めるときに便利ページを用意しておく。例えば、Nexus7でスクリプトを再生するリンクや、Xperiaで書籍PDFを表示するリンクを用意する、Googleカレンダーに開始時間、終了時間を登録するリンク、タイマーを自動設定するリンクなどを用意しておく事により、そのページ上から英語学習に必要なすべての処理が行えるようになる。

後はZooperWidgetProなどからタップ時のアクションにURLを設定するだけでTaskerでの処理ができるようになる。

他にもいろいろと応用できそうなのですが、行動管理に関してはこんな感じです。ちなみに、NFCタグを利用した収納管理も実現できそうなのでこれについても書いていきます。