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

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

TaskerをURLから制御できるようにする#3

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


前回までは、行動管理システムを作るというタイトルでしたが、前回記事のタイトルと被ってややこしいので、タイトルを変更しました。

URLから制御する理由としては、以下の様なものが有ります。

  • Evernoteリンククリックでタスクを実行したい。
  • NFCタグにかざすとタスクを実行したい。
  • 複数端末間で同時に処理が行えたり、処理する端末を指定したい
  • ZooperWidgetなどのウィジェットアプリクリックや、AutoWareからの入力など、URLの定義だけで新しい処理を追加できる。
  • URLの定義しだいで引数入力が出来る(Taskerのショートカット機能では引数入力が出来ない)


今回は実際の処理と、Taskerの設定を書いていきます。実際にはかなり複雑な設定になっているので、わかりやすく書くことが難しいので、大体の流れの説明のみとしておきます。


まずは、URL表示のIntentをAutoShare経由で受信するための設定


ProfileにEvent>AutoShareを追加して、textが"tasker://"で始まるという条件で設定します。実行するタスクにはAutoShareSearchを追加して実際の処理を追加していきます。


AutoShareSearchではURLを解析して実行するロジックが必要になります。かなり長いので簡単に書いておきます。


最初は、URLのドメインごとに分解した配列を作る処理を設定します。


実際にはこの後に変数入力のための、入力機能を実装しています。URLの一部を入力するための機能で、”tasker://Search.Evernote.!何を検索しますか/”のようにエクスクラメーションマークで始まる部分を実行時に入力できるようにしています。


配列を元にIfElseによる条件判断で処理を分岐します。



URLだけでいろいろしたい場合はここでやりたい機能を定義すれば良いです。
僕の場合は、こんなURLを定義しています。.は\\で表現して実行時にエスケープ処理しています。

  • tasker://Search.Evernote.!何を検索しますか/
  • tasker://Execute.Schedule.Event.個人予定.映画鑑賞/
  • tasker://Execute.Tasker.YogaTablet.SleepTracking.Start/
  • tasker://Execute.Alert.SetTimer.300/
  • tasker://Execute.Tasker.Task.SearchFile.!何を検索しますか.com\\google\\android\\youtube/
  • tasker://Execute.Tasker.Broadcast.Synchronize.VoiceCommand/

tasker://Project.****/のようなURLの場合は別ロジックで処理します



最後はAutoRemoteで他の端末にもURLを通知しています。



次に、Project機能と、音声入力機能についてですが、基本的に両方ともあらかじめ保存しておいたDropBox上にあるTextファイルを端末に同期して、Textファイルの中に記述しておいたURLを上から順に実行していく処理を記述しています。


ExecuteProjectTaskの内容は、まず2、3はDropBoxとの同期をしています。6.ReadFileで同期したテキストファイルを読み込みして、変数”ScheduledTaskUri”に保存するというところまで定義しており、それをProfile>Event>VariableSetで捕捉して別タスクで処理を定義します。


同じくExecuteVoiceCommandという名前のタスクを作り、ほとんど同じような処理を定義します。音声からの入力の場合は以下のようにDropBoxにファイルを作り中にURLを保存しています。


音声入力はAutoVoiceを利用して、Profileを作っておいて、”コマンド お風呂”のように言うと、お風呂.text内のURLが実行されます。AndroidWareデバイスからもAutoWareを使って実現できます。AutoWareの場合は、CommandPrefixを設定しておけば、”お風呂”というだけで実行されるように設定できます。


変数”ScheduledTaskUri”がセットされて実行されるタスク”DelayTaskExecute”を作成します。画像では4でAutoShareにURIを渡しています。


大体の処理の流れはこんな感じになります。また暇な時に、実際にどういう動作をするのか動画でもアップしようかと思います。

Androidスマートウォッチで行動管理#1

せっかくG WatchRを購入したので、何か使えないかと考えていましたが、ある程度方向性が固まってきたのでメモ。


まあ、AutoWareというアプリを使えば、たいていのことは実現出来るようになったので、個人的にAndroidWare端末の可能性がかなり広がった感があります。まあ、そんなわけで、AutoWareの使い方もある程度理解できたので、今回は、AutoWareとTaskerを使って、行動管理システムをつくろうかと思ったわけです。


僕自身は、自己管理というもとが苦手で、生活習慣が不規則というか、ほとんどコントロールが出来ていないので、結局、時間が無駄に過ぎていっているような気がして、何とかしたいと常々思っていたので、そこをスマートウォッチで管理しようということです。


まずは、どういう状態プロファイルを設定するのかですが、以下の様な分類にしようと思います。状態は自動的に遷移したり(起床アラームを止めたら、睡眠から活動に移行するなど)、AutoWare端末上から切り替えたり出来る。


状態遷移

  • 活動
  • リラックス
  • 睡眠
  • タスク
  • オフ

それぞれの状態で必要な機能を考えていきます。


活動・・・例えば、読書、ブログの投稿など脳を使った生産的な活動を行う時間帯です。

  • うたた寝防止・・・15分ごとに起床確認通知をWareデバイスとスマートフォンで確認し、反応がなければアラームを鳴らします。
  • お知らせ・・・睡眠予定時間(SleepAsAndroidがIntentで通知してくれる)や、仕事の時間などを土
  • 時報・・・1時間毎にWareデバイスを振動させて時間を通知


リラックス・・・休憩時間や、疲労回復のための時間。タイマーで自動的に終了時間を通知

  • 終了時間通知・・・休憩を終わる時間を知らせる。終わったら活動に遷移する
  • うたた寝防止・・・15分ごとに起床確認通知をWareデバイスとスマートフォンで確認し、反応がなければアラームを鳴らします。
  • お知らせ・・・睡眠予定時間(SleepAsAndroidがIntentで通知してくれる)や、仕事の時間などを土
  • 時報・・・1時間毎にWareデバイスを振動させて時間を通知


睡眠・・・睡眠時のプロファイル

  • 睡眠管理・・・SleepAsAndridで睡眠のトラッキングを行う
  • 起床サポート・・・起床後の行動促進機能。微睡みタイマー。
  • 充電サポート・・・端末の充電がしやすいように、端末を振動させて位置を知らせる。


タスク・・・食事、入浴などの時間

  • お知らせ・・・睡眠予定時間(SleepAsAndroidがIntentで通知してくれる)や、仕事の時間などを土
  • 時報・・・1時間毎にWareデバイスを振動させて時間を通知


オフ・・・特に行動管理システムによる機能が必要ないときに設定する



以上のような、機能で設定していこうと思います。

暖房器具はAproのカーボンヒーターが最強

2ヶ月前に買った「apro(アプロ) 綿カーボンヒーター300W KWA-HC2300W」が最強の暖房だということがわかったので書いとく。


まず、一番大事なのは、150Wで運転できるということ。たいていのカーボンヒーターは最低300W以上の電力が必要になる。KWA-HC2300Wは、150Wと300Wを切り替えて出来るので、電気代が安い。レビューでも書かれているが、300Wでは、近くにおいた時ちょっと暑いぐらいです。150Wでも結構暖かい感じで普通に使える。購入時は、本体価格は4000円以下で手に入ったが、最近は、なかなか在庫が復活しませんので、すでにちょっと手に入りにくくなっているかも。

で、カーボンヒーターというのは、部屋全体を温める暖房ではなく、近くにおいて直接暖を取るもので無駄がない。ただ、壊れやすいという話がある。これは、機種にもよるようだけど、まあ、長く使えるものではないと思う。(前使っていた機種はもう3,4年使っているが)

KWA-HC2300Wはデザイン性もそこそこ高い。ちょっと安っぽいけど、カーボンヒーターはたいてい安っぽいので気にしない。90度回転できるが、余り使っていない。縦のほうが暖かく感じるから。

本当は、こいつを2台買って、両サイドに並べて150Wで両側から温めるように使用と思っていたが、同色が手に入いらなくなったのでまだやっていない。2台でも合計300Wでいて、サラウンドヒートが可能になる。多分最強だと思う。

もう一つ大事なのは、スイッチの使いやすさと、設定する必要のない3時間OFFタイマー。KWA-HC2300Wのスイッチは、本体上部の切り替えスイッチでこれで切、150W,300Wのどれかを切り替えるだけである。これが電気式スイッチの場合は、電源ボタンを押してから、弱、強を切り替える必要がある。OFFタイマーを設定する機種があるが無駄である。まず、どんな場合でもOFFタイマーは必要だからで、これで付け忘れを気にする必要がなくなる。OFFタイマーを設定する機種だとこうはいかない。そして、OFFタイマーの時間を1時間とか3時間に切り替えられる機種も無駄だ。殆どの場合1時間では、短すぎる場合が多いからで、これも設定する必要性は感じない。


これらの仕様を満たした機種がなかなか出てくれないのはなぜなのか?
また在庫が復活したら買いたい。

スマートフォン、タブレットの画面イメージのPCへのアップロードにはFolderSyncを使うと便利

という記事を書こうと思ったけど、Taskerを使えば、以下のことがワンタッチで出来そうなのに気づいた。

1、端末でスクリーンショットを取る
2、PCのChrome上に表示する


スクリーンショットをブログにアップするときに上記のようなことができれば便利そうなだけど、まあFolderSyncのインスタント同期で十分かな。

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タグを利用した収納管理も実現できそうなのでこれについても書いていきます。

もう寒いのを我慢するのをやめる

僕の部屋の温度は超寒い。多分0度近い。いつも寒すぎて布団にこもってしまう。せっかくの休みの日も、時間の無駄だと思いながらそうやって過ごす。寒すぎるから。


それなりに厚着しても、やっぱり寒い。そこで、寒さを感じないぐらいの服装環境を試行錯誤してみた。まず、ユニクロに行く。服装に関しては、基本、部屋着でコンビニに行くぐらい出来たほうがいいので、ある程度のファッション性を考える。さらに、着脱のしやすさ、からだの動かしやすさも考えたほうがいい。厚着になると、どんどん体が動かしにくくなるから。それから、値段の安さとどこでも手に入る商品であることも考える。一番大事なのは、まったく寒さを感じない服装ということ。厚着しても、少しでも寒さを感じれば意味が無いので、ここは妥協できない。


この辺を考慮して用意したもの。以前からも持っている物も活用した。



トップス


ボトムス

  • ユニクロ ボアスウェットパンツ
  • GU    靴下


その他

肌着はカシミアVネックセーターを使用。肌触りがよく、これだけで結構暖かい。発熱系の肌着を着るより暖かく体温が急に冷えたり、暑く感じたりしないため快適に過ごせる。後、着たことはないけど、モンベルのジオラインとかウールの下着も選択肢に入ると思うけど、結構高い。カシミアVネックセーターは底値が4500円ぐらいで買えると思うので、その値段で買えると選ぶ価値がある。高いけど。
その上にGuのフリースT、次にULダウンベスト、シルキーフリース、ボアスウェットパーカーの順に着ている。当然一番上に着るボアスウェットパーカーは、サイズアップして着ている。1サイズアップでも少し窮屈だった。


ボトムスに関してはあっさりしていて、1枚だけで、履きやすく、動きやすい物を使えば良いと思う。


その他に、腹巻を入れたのは、トップスの着丈が全体的に短く、体勢によってお腹が出やすいからで、後、結構重要なのがネックウォーマーとニット帽。首や頭が冷えないだけで体感的にかなり変化がある用に感じる。

これだけ物もの着用した上で、さらに貼るカイロ(カイロは30枚500円程度で買えるのでコスト的には実は安い)
を腰に1枚貼って、足元にカーボンヒーター(Apro)を設置して暖を取る。
いくら厚着しても、なんとなく寒く感じるので熱源としてカイロは必要。JAFの実験結果を見てもカイロが寒さ対策として有効なことがわかる。


ここまですれば寒さを感じないようになった。問題は、着脱に時間がかかるのと、洗濯費用だろう。もう少し枚数を減らしたいけど、いい服ないかな?


因みに、外出時のファッション性に関しては、個人差があるだろうが、シルキーフリースはそこら辺のバランスがいいような気がする。ボアスウェットパンツはさすがに履き替えないとダメなので、暖パンに軍配上がるが、個人的には家ではスウェットで過ごしたい。



今年はもう寒いのを我慢するのをやめる。少しも寒くないわ。