2012年05月09日の日記です


ダライ・ラマとは関係ありません  2012-05-09 16:22:30  コンピュータ

スマホなんて買わないぞ、とずっと決めていたのに、買ってしまったのでいろいろいじっている。


買わないと決めていた理由のひとつは、いじりたくなっちゃうから、というものでもあった。

だいたい、スマホブームの前に一度買っているからね。

「いじり倒していて仕事がはかどらない」のがもう一度持つのをためらっていた理由なのだ。




自分の使い方は、かなり偏っている。

これは「普通の人と同じ設定では使いにくい」と言うことに他ならない。


まず、僕はほとんど家にいる。自宅で仕事をしているからだ。

目の前にパソコンはあるし、WiFi だってつなぎ放題の環境だ。


この状況で「スマホは持ち歩ける PC だから便利ですよ」とか言われても便利そうに思えないし、「パケット使い放題で5千円」と言われても安いと思えない。



というわけで、スマホを使うとして、基本設定は次のようになる。


・WiFi で接続して、自動同期 ON。WiFi はスリープしない設定。

・屋内で使うので画面の明るさは一番くらい状態で固定。

・画面のロックの解除。電源 ON ですぐ使えるのが望ましい。

 (ロック解除のソフトを導入した。標準ではできない)


生活していれば、もちろん外出しないでも無い。

一番多い外出は、保育園の送り迎え。家から 1km 程度の外出だ。


この間も、メールは受け取りたい。

SP モードメールは通信料無料だからこの通信は構わないのだが、他の通信が勝手に発生すると困る。


このときの設定は次のようになる。


・3G で接続して、自動同期 OFF。

・バックグラウンドで勝手に通信されないように、他のアプリの終了をよく確認。

・画面の明るさは「自動」に。

・画面ロックの設定。人に勝手に使われないように。



この方法、バックグラウンドアプリの確認、というのが面倒くさい。

購入して3日ほどで、ポリシーは次のように変わった。


・WiFi も 3G も、通信は全部 OFF。

・メールが届いたことはわかるので、届いたら手動で本文取得。


しかし、「メールが届いたことがわかる」のは、画面を見たときだけ。

SPモードメールでは、本文取得後にしか音を鳴らす設定が無い。




さて、ここで Llama の出番だ。時速 45km/h で走る、らくだのようなラマ…

ではなくて、Android 用の「Location Profile」ソフト。


このソフトを見つけて3日。

かなり癖の強いソフトで使いこなすのに苦労するが、入れていたほかのソフトがいくつか不要になるほど強力なソフトだった。


Profile は、海外の携帯で使われる概念。

日本では「モード」だろう。マナーモード、ドライブモード、オリジナルモードを作れる機種も多かった。


Llama は Location Profile のソフトだ。

場所によって異なるモードに設定するソフト、と考えてよい。


でも、本当は「場所によって」ではない。それは一番の特徴ではあるけど、「状況によって」かなり自由に設定を変更したり、ソフトを起動したりできる。


基本的な使い方は、次のとおりだ。


・携帯電話基地局の ID を使って、荒く「位置情報」を取得。

 それにより設定を変更する。



携帯電話なので、通話用の通信は必ず行っている。

これを使って位置を把握するので、WiFi や GPS を起動するのと違って、電池を余計に消費したりはしない、というのがミソ。


でも、携帯電話基地局からの電波は、半径 2km くらい届く。

家から外出するときでも 1km 程度の僕は、これでは精度不足。


大丈夫。Llama は、他の方法でも位置を取得できる。

GPS、WiFi、Bluetooth …いろいろな方法で、指定した場所に居るかどうかを調べられる。


僕の場合、家では WiFi をつなげっぱなしにするのが前提なので、WiFi で調べる。


でも、週に何度かは、遠くまで外出するのだ。

そんなときに WiFi が付けっぱなしだと、無駄に電池を使ってしまう…。



これも大丈夫。

2段階で考えればよいだけの話。


・基地局で「近所」を調べて、近所なら WiFi を ON にする。

 (近所でなければ、WiFi は OFF にする)

 

・WiFi で「自宅」を調べて、自宅に居れば自宅用の設定に切り替える。

 (自宅でなければ、外出用の設定に切り替える)



さて、夜になったら僕は、携帯電話で目覚ましをセットして枕の下に入れる。

音量は小さめだが、振動するようにしてある。


これで、同室で寝ている家族を起こさずに、自分だけ起きることができる。


ついでに言うと、寝ている間にメールなどで起こされたくない。

つまり、寝るときの設定はこうだ。


・WiFi も 3G も、通信は OFF。(緊急電話は受け付ける)

・音量は 0 。だけど、アラーム用の音量だけは小さめ、バイブレーションも入れる。


…さて、この設定をしてみたら、困ったことが起きた。


WiFi を OFF にしたため、「自宅」に居ることがわからなくなり、外出時の設定になってしまうのだ。


大丈夫。Llama では、この程度の状況は考慮してある。


Llama は、変数を持つことができる。変数には文字列を入れられるので、「同じ」か「違う」の判断ができる。(数としては扱わないので、大小の判断はできない)


変数を使って状態遷移を作る。

WiFi で自宅であることを確認したときには、設定変更とともに、変数に「自宅」をセットする。

WiFi が切断され「外出した」と判断しても、変数が「自宅」で無い場合は、外出の設定に切り替えない。


この状態でなら、変数に「夜」をセットした上で、WiFi を切断しても「外出」とは判断されない。

Llama では時間による判断もできるので、夜になったら変数を「夜」にして、夜の設定にするようにした。




さて、Llama がすごいのは、実はここからだ。


外出時に sp モードメールが届くと、通知領域に「メールが届いた」というメッセージが表示されるが、音などは鳴らしてくれない。

これを解決しよう。


Llama では、通知領域に特定アプリがメッセージを出した、ということを条件に、動作を行うことができる。


ちなみに、この機能を使うには、本体の「設定」から「ユーザー補助」に入り、Llama に権限を与えなくてはならない。

(ちゃんとソフト内で説明されるのだが、この設定を行わないで「うまくいかない」と悩んでいる人がネット上に山ほどいる)


まずは、sp モードが通知したら、音と振動で伝えるようにしてみた。

本文の取得は手で行う必要があるが、これだけでも、十分実用になりそうだ。



でも、もっと設定したくなった。


Llama では、Android で別のアプリと通信するための「Intent」を送信できる仕組みがある。

spモードメールのアプリが使用する Intent がわかれば、自動的にメール問い合わせを実行できるのだが…


調べてみると、データの一部に日付を入れないといけない、とのこと。

Llama では、さすがにそこまではできない。


かわりに、「spモードメールBOX2 Free」と言うソフトを使えばよい、とわかった。

このソフトは、spモードメールアプリの各種機能へのショートカットを作成できるもので、メール問い合わせも実行できる。


Llama からはショートカットの実行機能もあるので、組み合わせればこうなる。


・WiFi 接続していないときに、spモードが通知領域にメッセージを出したら…

・3G 接続を開始する。

・(接続が完了するまで)1分ほど待って、spモードメール BOX2 の「メール問い合わせ」を呼び出す。

・(ダウンロードが完了するまで)1分ほど待って、3G 接続を切断する。


この場合、メール着信音は spモードメールが出すので、先に書いた「通知があったら音と振動で知らせる」という設定は不要になる。



ついでに、「アプリケーションがアクティブになったら」という条件も作れるので、spモードを起動したら 3G 接続を行い、終了したら切断する、という動作も作っておいた。


返信しようとすると、3G 接続を開始する。

接続には30秒程度はかかるが、返信を書いている間に接続が終わるだろう。

そして、送信してアプリを終了する(もしくはバックグラウンドにする)と、接続終了。


ここまでやって、やっと「今までの携帯電話」と同じように、設定を気にせずにどこにでも持ち歩いて使えるようになった。




ちなみに、先に書いた「ロック画面の解除」だが、Llama 単体で解決できる。

しかも、場所で自動化できる Llama のほうが便利だ。

(入れていたソフトも、WiFi を感知して自動で解除したのだが、夜 WiFi を OFF にすると当然ロックがかかってしまっていた)


このためにインストールしていたソフトは、削除した。



完全なる余談だが、外出時に画面をロックしたまま「携帯電話をなくした」時のために、ロック画面には僕の連絡先を表示している。


HP-200LX は、持ち主を表示する機能が標準であったのだけど、Android では工夫しないとできないのね。

(Lock Screen Message というソフトを使っているが、これは「アラーム用のメッセージ領域に、表示したいメッセージを書き込む」ためのソフト。こうすると、ロック画面にメッセージが表示できる)




さて、Llama ではこれだけのことができてしまう、と言うことはご理解いただけただろうか?


設定はと言うと、非常に難しい。

プログラム言語ではないが、それに近い論理性を持っている。


矛盾した設定をかくと、うまく動かない。


先に書いたとおり、「WiFi で自宅位置を調べる」が「夜になると WiFi を切る」なんていうのは矛盾した設定だ。

変数も使って、うまく矛盾を解消してやる必要がある。



その上、説明はほとんど英語だ。

…英語は苦手だ、と言う人は、ロシア語やフランス語、スロベニア語で表示することはできるが、日本語は今のところ翻訳されていない。

(翻訳ボランティア募集はしている)


そして、この説明は「フレンドリーな文体を心がけてくれ」と翻訳者に要求している。

実際、英語もかなりくだけた、フレンドリーな文体だ。


つまり、読む側に「ネイティブ」な能力を要求する。

英語が苦手な人には、かなりハードルが高い。



日本語の情報では、このページが一番まとまっているように見える。


が、ページをまとめた人はプログラマでは無いようで、プログラムの知識が必要となる部分では翻訳が怪しい。

単純に、くだけた英語の翻訳に失敗しているところもある。

(Noisy contacts は、「うるさい連絡先」ではなく、「目立たせたい連絡先」だろう)


さらにいえば、Android 特有の「癖」も随所に顔を出す。

WiFi polling 間隔を設定すると、WiFi は暗黙に ON されるようだ、など。

(OFF にして、念のため polling 間隔も「polling しない」にして…とやったら、OFF にならなかった)




さて、この複雑なものを理解したうえで…もしくは、少しづつ動作を調べながら設定を行っていると、すぐに設定がごちゃごちゃになる。


矛盾無く設定するのが大切なのに、ごちゃごちゃすると設定の間違い…つまりはバグが増える。ここらへん、まったく「プログラム言語」と同じだ。


一緒に行う設定、たとえば「WiFi を ON にするときは、polling 間隔を 5分に設定して、sleep policy は never sleep にする」などを、サブルーチン化してしまうとよい。

こうすると、複数の条件から同じ「WiFi の ON 」を呼び出していても、設定が分散してミスをすることが減る。



サブルーチン化、と言う機能は Llama には無い。

しかし、Llama では、アプリケーションのショートカットを呼び出すことができる。

そして、Llama で作った「設定」は、ショートカット化して呼び出すことができる。


つまり、まとまった設定を、呼び出し条件無しで登録しておいて、特定条件時に「ショートカットとして呼び出し」すればよいのだ。



ここから後日追記。


上記の方法、問題がありました。

Llama はリエントラントにできていませんでした。そのため、ショートカット呼び出しは「GOSUB」ではなく、「GOTO」として作用します。

設定の呼び出しが1つなら問題ないけど、2つの設定(通信設定と画面設定など)を呼び出そうとすると、後の呼び出しが実行されません。


自分の場合、「画面」と「通信」の設定をわけて、状況により使い分けようとしていました。

このような場合は、基本的に「場所」を認識した時点で変数を設定し、その変数を条件として設定を行う、という2段階で考えると良いようです。


その上で、特殊な状況でのみ、ショートカット呼び出しで設定を行う。

この場合、GOSUB でなく GOTO でも十分実用になります。



画面や通信ごとに別の変数を設け、状況ごとにスイッチして…

と言う方法はお薦めしません。


変数の変更によって5回以上、設定が呼び出されると、Llama はエラーを出して、以降の設定を行いません。

これは、設定ミスで延々と呼び出しが続いてしまうことを防ぐために、Llama 側で制限しているようです。



追記終了。




これにはさらにおまけがつく。

Llama は、設定を自然な文章にして表示してくれる機能があるが、先に書いたように日本語表示はできない。

しかし、「設定」には名前をつけることができて、日本語でつけても良いのだ。


これで、先に書いた WiFi ON 時に一緒にやることの設定を「WiFi開始」などのわかりやすい名前で表示できる。

こうすれば設定のミスがあっても見つけやすい。



登録した設定が増えると、これだけでごちゃごちゃしてしまう。


しかし、設定は「グループ化」ができる。

大抵は、ある状態に「なったとき」と「終わったとき」が対になるので、同じ対をグループ化しておこう。


先に書いた、サブルーチンとしての設定集は、設定集としてグループ化すればよいし、僕の場合 sp モード関連がたくさんできたので、それもグループ化してある。


グループ同士や、グループ内での設定の並びは、文字コード順だ。

だから、並びを整えてわかりやすくしたければ、先頭に数字をつけると良い。




最後にプログラマー向けのアドバイス。


Llama は、非常にプログラム的な設定を行うが、プログラム言語ではない。

GUI を使って、条件と、その条件が満たされたときの「アクション」を選んでいく、と言う設定方法だ。

(条件は複数設定可能で、and / or も設定できる)


でも、その設定は自然な文章として表示される。

なので、組みあがった条件がたくさん並んでいる様は、プログラム言語で組まれているように見える。


そして、これがプログラム言語だとすれば、その制御構造は、awk に非常に良く似ている。

全体を括るループなどは存在せず、「条件」と「処理」だけが列記されている、と言う構造だ。


なので、そのつもりで取り組むと、すぐに理解できるのではないかと思う。


5/30 追記

llama のページ作りました。

上に書いた記事は、使い始めてすぐに書きなぐったもので、今見ると勘違いもあります。

訂正などは新たに作ったページで。



同じテーマの日記(最近の一覧)

コンピュータ

別年同日の日記

04年 ケーキ食べ放題

11年 しんぶんし


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0001

-- follow --




- Reverse Link -