場所・時間

場所と時間による設定です。

別ページで解説したものを、さらに実用性をあげたものです。

解説時は、ややこしくなるので、設定を省略していた)


大きな変更点は、「場所の認識」と「設定」を別イベントに別けたことです。

こうすることで、ゲーム省電力などの関係で「一時的に」設定を変えた場合でも、設定イベントを呼び出すことですぐに元に戻せます。

(詳細はこのページの最後に書きます)


場所認識のイベント設定のイベント

変数で複雑なことをしてる理由


場所認識のイベント

場所を認識したら、変数「場所」に場所の名前を入れ、さらに変数「設定」を「する」にします。

変数「設定」の変化を受けて、別のイベントで実際の設定を行います。


認識する場所(設定)は、外出、近所、家、夜の4つ。

夜は「出入り」の2つのイベントを作りますが、それ以外は包含関係も考慮して、それぞれに「入った」イベントだけを作れば十分です。結果、5つのイベントを作ることになります。

(仕事場と、仕事場の近所が必要な人の場合、もっと増えそうです…。僕は、仕事場も家と同じ設定にすることでイベントの作成を省略しています)


http://llama.location.profiles/1%E8%BF%91%E6%89%80%E3%82%92%E5%87%BA%E3%81%9F/1%E8%BF%91%E6%89%80%E3%82%92%E5%87%BA%E3%81%9F%7C0-1-0-0-0-0-0-0-1-0-1%E5%A0%B4%E6%89%80%7C%3A%7Cni%7C%E5%AE%B6%5Cp%E8%BF%91%E6%89%80%7Cvs%7C%E5%A0%B4%E6%89%80%7C%E5%A4%96%E5%87%BA%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7C

http://llama.location.profiles/2%E8%BF%91%E6%89%80%E3%81%AB%E5%85%A5%E3%81%A3%E3%81%9F/2%E8%BF%91%E6%89%80%E3%81%AB%E5%85%A5%E3%81%A3%E3%81%9F%7C0-1-0-0-1-0-0-0-1-0-1%E5%A0%B4%E6%89%80%7C%3A%7Ce%7C%E8%BF%91%E6%89%80%7Cni%7C%E5%AE%B6%7Cvs%7C%E5%A0%B4%E6%89%80%7C%E8%BF%91%E6%89%80%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7C

http://llama.location.profiles/3%E5%AE%B6%E3%81%AB%E5%85%A5%E3%81%A3%E3%81%9F/3%E5%AE%B6%E3%81%AB%E5%85%A5%E3%81%A3%E3%81%9F%7C0-1-0-0-0-0-0-0-1-0-1%E5%A0%B4%E6%89%80%7C%3A%7Ce%7C%E5%AE%B6%7Cvs%7C%E5%A0%B4%E6%89%80%7C%E5%AE%B6%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7C

http://llama.location.profiles/4%E5%A4%9C%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F/4%E5%A4%9C%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%7C0-1-0-0-0-0-0-0-1-0-1%E5%A0%B4%E6%89%80%7C%3A%7Ct%7C1320%7C390%7Cvs%7C%E5%A0%B4%E6%89%80%7C%E5%A4%9C%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7C

http://llama.location.profiles/5%E5%A4%9C%E3%81%8C%E3%81%82%E3%81%91%E3%81%9F/5%E5%A4%9C%E3%81%8C%E3%81%82%E3%81%91%E3%81%9F%7C0-1-0-0-0-0-0-0-1-0-1%E5%A0%B4%E6%89%80%7C%3A%7Ct%7C390%7C1320%7Cvs%7C%E5%A0%B4%E6%89%80%7C%E5%AE%B6%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7C

設定のイベント

Lama変数「場所」に設定の名前を入れ、Llama変数「設定」が「する」になると動作します。

設定イベントの中で、Llama変数は消去されます。これは、次に「する」にされたときに「変化した」ことを認識するためです。

どのような理由で呼び出されるかはわからないため、変更すると思われるすべての項目を設定しておきます。

中身はほとんど同じでパラメータが違うだけなので、一つイベントを作ってコピーして修正するのが簡単です。

場所として認識する、外出、近所、家、夜のそれぞれに設定イベントがあるので、全部で4つのイベントです。

(…といいたいのですが、家だけ都合により2つのイベントに分けてあります。後ほど詳細説明)


http://llama.location.profiles/1%E5%A4%96%E5%87%BA/1%E5%A4%96%E5%87%BA%7C0-1-0-0-0-0-0-0-1-0-2%E8%A8%AD%E5%AE%9A%7C%3A%7Cvc%7C1%7C%E5%A0%B4%E6%89%80%7C%E5%A4%96%E5%87%BA%7Cvc%7C1%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7Cp2%7C%E5%A4%A7%E5%A3%B0%7C0%7Ci%7C-1%7Cst%7C10%7Ck%7C3%7Cw%7C0-0%7Clw%7C15%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%7C

http://llama.location.profiles/2%E8%BF%91%E6%89%80/2%E8%BF%91%E6%89%80%7C0-1-0-0-0-0-0-0-1-0-2%E8%A8%AD%E5%AE%9A%7C%3A%7Cvc%7C1%7C%E5%A0%B4%E6%89%80%7C%E8%BF%91%E6%89%80%7Cvc%7C1%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7Cp2%7C%E5%A4%A7%E5%A3%B0%7C0%7Ci%7C-1%7Cst%7C10%7Ck%7C3%7Cw%7C0-0%7Clw%7C5%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%7C

次の「家」の設定には、付随する「遅延イベント」があります。

これは、WiFiを「使用する」設定と、WiFi確認間隔の設定が同時に行えない、という Llama の制限を回避するためです。

(待ちイベントを使用しても良いのですが、「家」の境界近くなどで、1分以内に連続して家に入ってしまったりすると、「同じ名前の待ちイベントを作ろうと」してしまい、エラーになるため、このようにしています)

http://llama.location.profiles/3%E5%AE%B6/3%E5%AE%B6%7C0-1-0-0-0-0-0-0-1-0-2%E8%A8%AD%E5%AE%9A%7C%3A%7Cvc%7C1%7C%E5%A0%B4%E6%89%80%7C%E5%AE%B6%7Cvc%7C1%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7Cp2%7C%E6%99%AE%E9%80%9A%7C0%7Ci%7C10%7Cst%7C30%7Ck%7C2%7Cw%7C1-0%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%7C

http://llama.location.profiles/3%E5%AE%B6%E9%81%85%E5%BB%B6%E8%A8%AD%E5%AE%9A/3%E5%AE%B6%E9%81%85%E5%BB%B6%E8%A8%AD%E5%AE%9A%7C0-1-0-1-0-0-0-0-1-0-2%E8%A8%AD%E5%AE%9A%7C%3A%7Cvc%7C1%7C%E5%A0%B4%E6%89%80%7C%E5%AE%B6%7Cvc%7C1%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7Clw%7C10%7C

http://llama.location.profiles/4%E5%A4%9C/4%E5%A4%9C%7C0-1-0-0-0-0-0-0-1-0-2%E8%A8%AD%E5%AE%9A%7C%3A%7Cvc%7C1%7C%E5%A0%B4%E6%89%80%7C%E5%A4%9C%7Cvc%7C1%7C%E8%A8%AD%E5%AE%9A%7C%E3%81%99%E3%82%8B%7Cp2%7C%E9%9D%99%E5%AF%82%7C0%7Ci%7C10%7Cst%7C2%7Ck%7C2%7Cw%7C0-0%7Clw%7C2147483647%7Cvs%7C%E8%A8%AD%E5%AE%9A%7C%7C

変数で複雑なことをしてる理由

さて、このページに示した一連のイベントでは、変数を多用しています。

なんでこんなことしているの? ややこしくなっているけど、メリットは?

…という質問を数多くいただいているので、具体例を挙げて説明してみます。


まず、Llama で次のような設定をすると考えてみてください。

家にいるときは、音量を小さくします。外出時は大きくします。しかし、夜は無音にします。

…ここまでは OK 。普通に Llama で書けます。


次に、YouTube を見るときは、音量を最大にすることにします。これも問題なく Llama で書けます。

では、YouTube を見終わったら、音量を元に戻してください。…これ、実は素直に書けません。


Llama では、「この設定にする」という指定はできても、「さっきの設定に戻す」とか、「後に備えて設定を覚えておく」という指定はできないのです。


ただ、Llama が何も覚えられないわけではありません。変数の内容は覚えておくことができます。

そして、変数が変化したことを条件としたイベントを作ることもできます。


この方法を使って、場所と時間による設定は変数に記憶させておく、というのが上のイベント例になります。


この方法では、変数が2つ必要になることに注意しなくてはなりません。

一つは、設定の記憶用です。もう一つは、実際に設定を行うイベントを起動するための「きっかけ」を与えるためです。

Llama は「変数が変化した」ことを条件として設定できますが、記憶用の変数を変えてしまうわけにはいきません。そこで、別の変数が必要になるのです。


具体的には、先ほどの例でいえば、こうやります。

YouTube を起動するときには、音量などの設定は変えますが、変数は変えません。…つまり、変数は「本来の設定」を覚えていることになります。

YouTube を終了したら、イベント起動用の変数を設定します。これで、本来の設定に戻ります。めでたしめでたし。




YouTube 終了時に、もういちど設定を行いたいのなら、「YouTube が前面にいないとき」を条件に追加したらいいんじゃないの? という質問もいただきました。

これには、2つの理由があります。


1つ目は、「ちょっと設定を変えたい」ことは結構多い、ということ。

ゲームをやるから画面オフの時間を延ばしたい、とか、音楽を聴くから音量を変えたい、とか、カメラを使うから画面輝度上げたい、とか。


これらすべてのアプリの「終了」を、家にいるとき、外出するとき、夜になった時、朝になった時…など、設定関連の全てのイベントの条件に追加しなくてはなりません。

もちろん、新たなアプリのための設定を書くたびに、すべてを正しく書き直す必要があります。


変数を使用する場合は、アプリが終了したら設定用変数をセット、というイベントを、1つ用意しておくだけです。

最初に書くのが大変(「条件」と「設定」を分けたので、イベントの数が2倍になっている)なのですが、その後のメンテナンスはずっと楽になります。


もう1つは、設定の衝突を回避するため。

「YouTube が前面にいないとき」に再び設定関連のイベントが起動するとして…「家にいるとき」と「夜」は同時に動いてしまいます。

すると、実行された順番によって、悲劇が起こります。「家にいるとき」の設定が最後になれば、夜なのに音が鳴ってしまうことになります。

変数を使って状況整理をしておけば、再設定が必要な時に動くイベントは、確実に1個に絞り込めます。



変更履歴

2012.06.06 素直に「場所」に応じて設定するプログラム

2012.06.08 再設定をしやすくするため変数を使うように変更

2012.06.18 家にいるときに「近所」と間違えるバグを修正

2012.10.15 SocialLlama!

2013.04.16 動作の詳細を追記

(ページ作成 2012-06-06)
(最終更新 2013-04-16)

戻る     次記事:同期設定
トップページへ

-- share --

0002

-- follow --




- Reverse Link -