【自動化】MacroDroid Part3【マクロ】

レス数が950を超えています。1000を超えると書き込みができなくなります。
2021/06/20(日) 14:29:20.82ID:Sdw0XNZk
Androidの操作を自動化するアプリMacroDroidの専用スレです。
マクロ製作の質問や情報交換をしましょう。作成したマクロの共有も大歓迎です。

次スレは>>950が立てること。立てられない場合は>>980が代わりに立ててあげてください。
853散策人
垢版 |
2021/09/23(木) 19:28:43.37ID:KqHyKUxJ
>>838 さん

簡単なイメージを添付します。
(ついっとぺーん利用時の例)

https://i.imgur.com/DkWMDGY.jpg
https://i.imgur.com/60IZZZT.jpg
2021/09/23(木) 23:15:25.42ID:QpDAC617
>>839
>>852
ありがとうございます。
直感的な組み方しかしたことが無かったので勉強になりました。
方法によっては定期チェックは可能と知れて良かったです。試してみようと思います。
2021/09/24(金) 06:34:26.27ID:U9CP1y/8
11月にはSDKのバージョン上げなくちゃいけなくてAndroid11+で管理外のファイル操作に制約がでないように頑張って手を入れなくちゃいけないらしい
ユーザーから管理外のファイルアクセスの許可取るのはMDの主たる機能じゃないからって理由でグーグルに却下されたとのこと
2021/09/24(金) 07:25:49.59ID:6aOTx6H6
>>849
休日除外なら
カレンダーと一致しないを選択
それだと休日のみ作動
2021/09/24(金) 21:03:29.29ID:U9CP1y/8
まあ>>348-352に正解出てるから
誰もが自分のできる範囲で他の人の役に立てばいいと思って書いてると思うんでそのキモチが大事ってことで
2021/09/24(金) 23:22:01.82ID:U9CP1y/8
そもそも>>346は俺が悪くて>>345にも>>841にも悪いことしたね
祝日チェックは1日に1回やれば充分だから共通タスクでインターバルで回してグローバルに覚えればいいという暗黙の想定が思考のベースにあった
ところが>>347って意外な反応でニーズの想定起こしをやり直した
素養のある人ですぐにちゃんとできて良かったよ
2021/09/25(土) 02:00:23.51ID:6/zO3Ciy
初心者だって人はこんにちはマイコン^H^H^H^Hpythonなんかを読むといいと思うよ
突如パソピアIQを手に入れたJKが突如twitterに現れたオッサンからMSX-BASICを教わってゲームをプログラミングのTwitterまとめとかも
いろんな意味で胸熱
2021/09/25(土) 07:51:51.30ID:fw9QYcWa
今時^Hなんて見ない
2021/09/25(土) 08:04:11.74ID:XHIhWgb4
アクセシビリティをオフにした後にオンにしようとしたらこんな画面が出てオンにできなくなりました@ColorOS11
https://i.imgur.com/EBLGPe5.jpg
エラー内で記載のあるAssistive Ballというのも設定内に見つからず困ってしまいます
試しに他のアプリのアクセシビリティをオフにしてみたらそちらも同じ症状になってしまったのでMacroDroidのせいではないようです
スレチになりますが何か解決のヒントになるような事ありません?
2021/09/25(土) 08:29:20.64ID:6/zO3Ciy
>>861
実際にボールを画面に出してるなら無効にしてみたらどうかな?
違うようなら競合しそうなサービス切ってリブート後に順番に戻していくとか
https://support.oppo.com/en/answer/?aid=neu1410
2021/09/25(土) 08:56:55.88ID:XHIhWgb4
>>862
Assistive Ballなんて使ってないしそれが一体何なのかもわかりません
設定やアプリ名で検索してもヒットせず
ジェスチャー系をオフにしても変わらずどこら辺を触れば良いのか…
2021/09/25(土) 09:41:55.96ID:fw9QYcWa
>>863
OPPOの独自機能っぽいな
2021/09/25(土) 09:44:03.41ID:fw9QYcWa
Assistive Ball | OPPO Global
https://support.oppo.com/en/answer/?aid=neu1410
2021/09/25(土) 09:51:23.74ID:6/zO3Ciy
>>863
日本語の用語ではアシストボールというらしいよ
スマートアシストやら便利機能やらの中にないかな?
どうしても出ないなら言語設定を英語にしてみて設定アプリ内を検索するか
日本語でどう表記されてるかの話は全般的にニガテなんで窮状を訴えられてもググるくらいしかできんのよ
2021/09/25(土) 10:46:57.30ID:1ZFt6P37
ありがとうございます
言語を英語に変えて検索しても見つからずすべてのアクセシビリティをオフにしてもダメ
途方に暮れながらもしかしたらと思い開発者オプションをオフ→オンにしたら設定がデフォルトに戻ったっぽかったのでもう一度アクセシビリティをオンにしたらいけましたー!
開発者オプション内の何かが悪さしてたようです
スレチな話しでお騒がせしてしまい申し訳ありませんでした
2021/09/25(土) 11:07:34.73ID:6/zO3Ciy
>>867
なんかOSのバグっぽいね
アクセシビリティ使えんとMD致命的だから戻って何より
ボールの件は分からんけどオプション項目が地域設定で隠されたりする機種もあるね
2021/09/25(土) 19:30:55.33ID:vzE5rU8Z
>>859
すがや先生の御手による記事広に変数のページ載ってて胸熱
https://blog.tkrel.com/13540
2021/09/25(土) 23:10:20.50ID:j9Keen0P
テキストメールが文字化けしてしまうのはどうしようもないのだろうか
docomoメール宛のメールにプリヘッダーテキストを表示したくてhtmlでも色々挑戦してるけどうまく行かなくてずっと悩んでる
2021/09/25(土) 23:29:27.05ID:4dAJofOt
>>870
ヘッダーと実際にボディで使ってる文字コードは一致してる?
Content-Type: text/plain; charset="UTF-8"
ってヘッダーだとしてボディに記述されているのがJISだとすると気の利いたクライアントじゃないと直してくれない
出来の悪いウェブベースのクライアントだとページ自体の文字コードとメールメッセージのコードが一致してないと化けることも
2021/09/25(土) 23:39:53.15ID:uWgcIa5j
>>871はメールヘッダーとメールボディの話ね
hrmlメールで出すときのhtml内head部、body部の話ならボディ開始直後に書いとけば適切にプリヘッダーテキスト表示されると思うけど
もちろんhtmlの文字コード指定は正しく記述しておくとしてね
2021/09/26(日) 01:05:07.82ID:kVuWqiFh
自宅と駐車場まで30m位、通勤手段は車、です。車内では置きっぱの端末とテザリングしたいのでWi-Fiオフしたい、そもそも自宅出たらバッテリー節約の為にWi-Fiオフしたくてマクロ2つ設定してみています。
車乗った時のWi-Fiオフは大体上手く動いてるのですが、車無しで出かけたときのWi-Fiオンオフや車で帰宅時のWi-Fiオンがいまいちです。
範囲的には厳密でなくて良いのですが、オフオンはきちんとやって欲しくて、添付のようなマクロではうまくいかないものでしょうか?
基地局よりもジオフェンスの方が上手く機能するもの?
https://i.imgur.com/YRg7WUv.jpg
https://i.imgur.com/ziHyDRc.jpg
2021/09/26(日) 01:33:59.11ID:NqJzYqeO
>>873
自宅wifiやジオフェンスの方がいいんじゃない?
>>551から>>617あたりまで断続的に続く嫁の安眠ネタが楽しく参考にできると思うよ
2021/09/26(日) 07:39:31.55ID:UUbk6eN3
>>871
説明ありがとうございます
メッセージの中のSMTPメール送信の機能使ってるテキストメール送ろうとしてるんですが
それのテキストコードの指定する事って出来ますか?
2021/09/26(日) 09:48:29.42ID:eaMdz5vQ
>>875
やり方は二通りあってこんな感じでできると思うよ

1. MDから渡すテキスト本文をメールヘッダに合わせて変換する方法
例えばヘッダがiso2002-jp(jis)の場合termuxでiconvで変換(MDから変数を引数で渡す)
echo $1 | sed -i 's/$/\r/' | iconv -f UTF8 -t ISO-2022-JP

2. htmlメールにしてhtmlの文字コードをheadタグ内でMDに合わせて指定しておく方法
<head lang="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
2021/09/26(日) 11:10:05.10ID:Z2Vz2ttu
>>801のttps://i.imgur.com/LDUtYKi.jpg
アクション 起動 アプリ 最近使ったアプリからの消去にするっていいね。ホームに戻るのは手動だけど
きちんと消えてる
2021/09/26(日) 11:10:58.97ID:kVuWqiFh
>>874
ありがとござます。
>>589のように一定間隔でジオフェンス確認とかしててもバッテリー消費的には大したことないものですか?というかそもそも論として、ジオフェンス使いたいならmacrodroid の位置情報の権限を常に許可していなければだめです?ジオフェンスをトリガにして何度か試してみていたのですけど機能しなかったのはそこだったかも知れません。

あと、Wi-Fiオフで帰宅してWi-Fiオンにしたいに対して自宅Wi-Fiをトリガにできるものですか?

質問ばかりですいません
2021/09/26(日) 13:01:25.11ID:RVyXI6fp
>>878
接続→WiFiのSSIDの変化
2021/09/26(日) 13:22:44.28ID:gFWaoDjC
端末のwifiが切れてる状態でSSIDの変化を検出できるのですか?まあ何事もトライ&エラーですね
2021/09/26(日) 13:23:25.91ID:Qp5bb2EL
すげえな
2021/09/26(日) 13:30:20.43ID:iRpoTDBh
>>878
5分間隔とかでジオフェンスを確認するとログが大量発生するからジオフェンスをトリガーとして取得できるのならそっちの方が良いように思う
バッテリー消費は一気に増えたようには感じなかったかな
2021/09/26(日) 14:44:18.53ID:4eQUFIuT
wifi無効ではSSIS変化は無理
2021/09/26(日) 16:25:32.09ID:qQg1HQqP
クイックタイルにボタンで登録した時って、クイックタイルのボタンは常時点灯状態になりますよね。
これを常時消灯に出来ないんでしょうか。
普通は消灯ですよね、カメラとか計算機とか。

https://i.imgur.com/zHntbEi.jpg
2021/09/26(日) 17:10:27.49ID:XyYxBXKP
少し家の周りをウロウロしたところ、Wi-Fiオフになっていても指定のSSID圏内かどうかは何でか分かるみたい。マクロ自体を上手く組めてなかったのでそっちを見直します。
2021/09/26(日) 17:23:55.57ID:l3e08Te+
>>878
バッテリーはひとつひとつ状態を変えてベンチマークしてみればいいよ
俺はキチガイみたいにバッテリー節約するなら画面点灯に絞る派だから他は敷いて言えば長時間屋内にいるときのネット接続を工夫してもいいかなくらい
あとは大勢に影響ないと思ってる
位置情報データソースになるんでwifiもずっとonにしてる
2021/09/26(日) 17:40:39.81ID:kVuWqiFh
ssidの変化をトリガーにしようとすると位置情報サービスを有効にする必要ありと言われるけれど、設定のトリガーオプションをみるとWi-Fi ssidトリガーに影響あるのは位置情報ではなくWi-Fiバックグラウンドスキャンのよう。
位置情報の更新頻度は下げてしまって問題ない?

https://i.imgur.com/wnFqYFs.jpg
https://i.imgur.com/VOtjUvc.jpg
https://i.imgur.com/T1M0fO8.jpg
2021/09/26(日) 18:52:02.54ID:E7fM5pum
>>885
これって俺も>>883だと思い込んでたな
なんでもやってみるもんだね
wifiのoff状態て接続はしないけどOS側で定期的にssidのスキャンはやってるってことか
それとも既に分かってるssidだけキメ撃ちで存在チェックして失敗すると一定期間やらないみたいな実装なのか
ちょっと振る舞いをみてみようかな
2021/09/26(日) 19:07:10.45ID:E7fM5pum
>>878
ジオフェンストリガをインターバルでチェックする必要はないと思うよ
多少の遅延はあってもちゃんと境界を超えたとき1度だけ呼ばれるんで
MD側の実装としてジオフェンス外/内に居続ける場合にコンストレイントは常な判定結果を真偽で返すけどトリガは何度も繰返して呼ばれることはないから
つい最近話題になって確認したとこ
www.macrodroidforum.com/index.php?threads/geofence-is-not-working.1100/
2021/09/26(日) 19:27:28.80ID:E7fM5pum
>>874は嫁を定期的にたたき起こすって話が前提になってるから 笑
2021/09/26(日) 19:29:00.22ID:E7fM5pum
>>890>>589の理由ね
2021/09/26(日) 19:29:53.02ID:kVuWqiFh
自分の用途としては外出したらWi-Fiオフと帰ったらオンしたいなので、アバウトながら基地局でも、ジオフェンスでもSSIDでもどれでもいけそうと分かってまず安心です。
ので、次はどのトリガーがバッテリー節約向きなのかなんですがジオフェンスとSSIDはどんなものでしょうか?
端末をzenfone8に替えたら思ったほどバッテリー持ちが良くないので節約してみようとmacrodroidいじり始めたとこです。
2021/09/26(日) 19:48:11.18ID:E7fM5pum
>>892
個々のケースで違うんで一番いいのはベンチマークすることだけど一般論としては基地局>GPS>wifiの順にバッテリー消費が激しいと思う
たた位置情報サービスは統合的なものになってて常にGPSを最優先して動かすわけでもないのよ
他方wifiは接続確立してしまうと多数のwifi接続時のみのサービスが稼働したりするから副次的にバッテリー消費が増えたりってことも

ちなMDを1秒インターバルでバッテリー情報を変数に取る単純なマクロ1つだけ回すと1時間あたりのMDの消費は0.8mAhくらいだったかな
2021/09/26(日) 20:02:30.69ID:E7fM5pum
>>892
いったんの結論としてはwifiやジオフェンス使ってない(使いたくない)前提なんだから既に常に使ってる基地局だけのままにしとくと増加がないから基地局のままでいいんじゃないかな?
>>873で言ってる車なして外出時/車で帰宅時の再接続がイマイチという問題点を他の手段で解決できるとして解決優先ならそのコストを許容できるかが判断のポイントだと思うからそれは数字取ってみないとね
2021/09/26(日) 20:51:08.24ID:kVuWqiFh
基地局トリガのマクロ組みっぱなしでssidトリガも1日いじくってましたが、家の中いるだけで基地局トリガのマクロが何度か動いてて残念。なので取り合えずばssidをトリガにしてバックグラウンドスキャンの間隔を弄りながら電池持ちを眺めてみることにします。
外出、帰宅した瞬間にオフオンしたいでもないので10分間隔くらいでそれなりの実感が得られればいいなというところです。
おつきあいいただきありがとうございました。
2021/09/26(日) 23:25:50.08ID:Z2Vz2ttu
今のバージョン不安定になったね。。
ひとつ前に戻したよ
2021/09/26(日) 23:40:27.81ID:RVyXI6fp
WiFiをOFFにしてても、OSが定期的にスキャンしてるので、SSIDを検知できるんだよね。
検知されるSSIDに自宅のWiFiのSSIDが含まれるか否かで、WiFiのONとOFFの切り替えできるよ。
2021/09/27(月) 00:12:12.32ID:xTv+rTG4
>>897
うん、勉強になった
どうもありがとう
2021/09/27(月) 00:15:35.77ID:vWpdbAha
これで使えてる。

トリガー
 @指定SSID圏内に入った時
 A指定SSID圏外になった時
アクション
 If トリガーが@の場合
  WiFiをONにする。
 Else If トリガーがAの場合
  WiFiをOFFにする。
 End If

あと、自宅を出たらマナーモードとかやるんだったら、アクションにそれを追加してやると良い。
2021/09/27(月) 02:19:00.49ID:+tbUSGT0
>>899
これってGPSは常にONと言う事ですか?
2021/09/27(月) 07:49:05.89ID:vWpdbAha
>>900
元々、常にGPSはONにしてるけど、OFFでも使えるんじゃないのかな?
2021/09/27(月) 08:52:46.11ID:6p2tXnJT
>>900
GPSは消費電力も少なくてデメリットより利便性が上がるメリットの方が圧倒的に多いから俺は常にオンにしてる
2021/09/27(月) 12:21:15.19ID:n7ew4SCk
非root端末で、アプリ内のプルダウンメニューが開かれているかどうか、
またトグルボタンがON/OFFかどうかをMacroDroid側で読み取りイベントを送信する事は可能ですか?
2021/09/27(月) 12:31:46.79ID:n07oK8kv
>>895
以前同じようなのやろうとした時は

自宅WiFiとの接続が切れる→WiFiオフ
画面オン→WiFiオン↓
一定時間内に自宅WiFiに接続される→そのまま
一定時間内に自宅WiFiに接続されない→WiFiオフ

という頭悪い作りだけど問題なく動いてた
2021/09/27(月) 12:34:38.31ID:lBq+DIcE
>>903
一般的な話なら無理
「アプリ」が対応しているなら可能
MD側からどうのという話じゃない

もっと具体的に1.なんてアプリで2.どんな状態(画面の表示、通知になにかあるか)を3.どうしたい?が有れば「MDによる代替手段」が作れる可能性もある
2021/09/27(月) 16:35:06.90ID:h5ufP6u5
ちょっと教えてください
同時に実行すると片方が失敗するので今まではウエイトとか入れて回避してました
しかし3個以上重なって来るとウエイト同士が被ってしまい最終的に同士実行になってしまい失敗する事があります
どれかに優先順位があるわけではないので先に実行されてるマクロがあったら終了まで待って順次複数実行していくマクロの作り方はどのような作りがスマートでしょうか
3個程度までは個別にマクロ名の変数起こして力ずくでその変数を見て回避してましたがそれ以上になるとなんだかなあと思えてきました
2021/09/27(月) 16:54:23.31ID:B+v2ePOX
プラグでセマフォとか?
2021/09/27(月) 16:55:07.70ID:B+v2ePOX
予測変換でプになったけどフラグ
2021/09/27(月) 17:48:01.03ID:fx1vi438
>>907
セマフォで検索したらやりたい事と一致してました
けどMDでやる具体的な方法はどんなコマンド使えばいいのでしょうか
セマフォという変数に1を入力しておいてバッティングしそうなマクロ走らせると変数から1引いて終わったら1を足す
他のマクロは実行前にセマフォの数値が1になるまで○秒おきに確認して待つのでしょうか?
でも待たせてるアプリが複数あるとセマフォが1になった瞬間に同時に実行される可能性が…?
イメージではなくてMDでそれをやるコマンドが知りたいのです
2021/09/27(月) 18:27:04.65ID:KLADAJdw
すみません。この2つのマクロを1つにまとめたいのですが無理ですか?
https://i.imgur.com/0oiQtt3.jpg
https://i.imgur.com/GdRxREm.jpg
やりたいこと
任意アプリを立ち上げた時5秒待って機内モード
ただし、5秒以内に閉じた時機内モード実行せず
5秒以上経ってアプリを閉じた時機内オフ

(1マクロ)
トリガー、任意アプリを立ち上げた時
アクション 5秒待って機内モード

(2マクロ)
トリガー、 任意アプリを閉じた時
アクション 機内モードオフ
2021/09/27(月) 19:09:22.14ID:xTv+rTG4
>>909
グローバル変数に最低限「アプリ起動中」を意味する情報を覚える
それぞれに排他チェックと当該情報のon/offを入れる
文脈的にどのマクロが起動中か判別する必要があれば覚える情報をマクロ名に、いつ起動したか必要なら時刻を覚える

現状のトリガから変更していいなら変換の値をみて呼ばれるトリガを使うのもいいね
やることは上記の類似
2021/09/27(月) 19:22:56.56ID:OP+RHvC9
>>909
そんなコマンドないから自分で実装する
整理券を発行して自分の順番じゃなかったらwait
自分の仕事したらwait入れてから整理券返す

処理イメージ(書き方は適当)
グローバル変数
g_n=0

マクロ
g_n+=1
n=g_n
while(not n=g_n){wait}
マクロ実行部分
wait
g_n-=1
913名無しさん@お腹いっぱい。
垢版 |
2021/09/27(月) 19:26:00.24ID:RiWuxhQ4
>>895
タイマー(ストップウォッチ)で定期的(例えば10分間隔)でWiFiをオン、自宅のSSIDに継ったらそのまま、継らなかったら
WiFiをオフというやり方もあるけど電池を食うかね。
2021/09/27(月) 19:32:27.10ID:OP+RHvC9
>>910
1マクロで5秒waitの前でONフラグ=trueして
2マクロでマクロキャンセルのとこでONフラグ=falseして
機内モードONにするときONフラグ条件にしたらいいんでないかな
2021/09/27(月) 19:41:56.75ID:xTv+rTG4
>>910
無理じゃないよ
やり方はいろいろ考えられる
・アプリを起動した時刻を覚えてチェック
・ストップウォッチを使って経過時間をチェック
・現2のトリガ起動を5秒条件で制約して実現する
などなど

無理ですか?(できますか?)と聞くのはやめたほうがいいと思うな
できそうだと思うから聞いてると思うしイエス/ノーを答えられても「で?」ってなると思うんでね
希望に合わせたいから遠慮しないでやってくださいなのか自分でやりたいから方法を知りたいなのか意図を書いたらいい
文脈から読み取れない時はとりあえず後者だと仮定してる
2021/09/27(月) 19:57:34.12ID:xTv+rTG4
>>903
状態を直接取得できないけどTouchTaskプラグインで画面内の色の値をみれば可能だよ
ただし変化後または変化前の色が普遍であらかじめ分かっていること
チェックする座標が変化しないことが前提条件

質問がピンポイント過ぎて別のもっといいやり方が提示できないのは>>905が指摘してる通りだから次からその点を考えてみて
2021/09/27(月) 20:05:48.26ID:fx1vi438
>>911
ありがとうございます
イメージは理解できるのですが…
当該情報のon/offと時刻を覚えるはグローバル変数にどのマクロが何時起動したかを入れるのですよね
ただ1番欲しい排他チェックのやり方がわからず
>>912
具体例ありがとうございます
具体例を元にマクロ書いて見ましたけどこんな流れでしょうか
ただ{wait}の部分が何を指してるのか? これは具体例にどこに入れるのでしょう?
https://i.imgur.com/xXP9R51.jpg
2021/09/27(月) 20:33:50.39ID:OP+RHvC9
>>917
一番上の変数を設定はいらないよ(グローバル変数は数値型で用意しとく)
{wait}はwhileの中がwaitだけってことね。マクロのメイン部分はwhileの後で
そこだけ見ると無限ループに見えるけどwaitの度に他のマクロに制御が移ってg_nが変わるからその内自分の番号になってループが終わる仕組み

処理イメージ(書き方は適当)
●グローバル変数(事前に用意)
g_n=0

●それぞれのマクロ
g_n+=1
n=g_n
while(not n=g_n){
wait //ここで同時実行中の別マクロに制御が移る
}
マクロ実行部分
wait
g_n-=1
2021/09/27(月) 20:39:45.02ID:KLADAJdw
>>914,915
すみません。オンフラグ他書いてることの意味がなんのことかさっぱり分からず
自分には無理のようです
願わくば、やってほしい。厚かましいですかね…
ダメなら諦めます
2021/09/27(月) 20:42:53.63ID:xTv+rTG4
>>917
if文で書けばこんな感じ
最初のブロックは実行してるときで次はしてないとき
3種類どれでも起動中かどうかはみれる
時刻や名前だと情報量が多いから式を変えれば判定内容は柔軟にできるね
これを下段の緑の条件てとこでやってもトリガにぶら下げるるんでも要領は同じことだよ
https://i.imgur.com/HjqQkX3.jpg
https://i.imgur.com/5aFJDH6.jpg

実際の流れでは個々のマクロで排他チェックをしてから排他ロックを取ってから処理をすればいい
終わったらロックを解除して終了
2021/09/27(月) 21:02:00.43ID:xTv+rTG4
>>919
いや別にそれはそれで
こんな感じでだいたいいいんじゃないかな?簡単で
5秒抑止がシビアなら1〜2秒増やしてみて
https://i.imgur.com/jsCT9da.jpg
https://i.imgur.com/cUVZlt4.jpg
2021/09/27(月) 21:20:47.88ID:OP+RHvC9
>>921
あーなるほど
スマートですね

>>919
https://imgur.com/KcsyuWb.png

フラグってのはそのまま旗のことで上げたり下ろしたりで相手に状態を知らせることが出来るもののこと
複数の状態をチェックしたい時に使う言葉

マクロ実行から5秒後に機内モードをONにするかOFFにするか決めたいので「ONにしたい」というフラグを用意して『「ONにしたい」フラグが上っていたらONにする』ようにしておく。それで、割り込みでキャンセルするなら「ONにしたい」フラグを下ろせばいいということ

で、「フラグ」を実際にどう作るかってのは結構基本的な内容なので知ってる人に一々説明することでもないから省いてるのよ

こっちからしたら、あなたがわからないのかわからないからね
2021/09/27(月) 21:24:31.98ID:fx1vi438
>>918
こんなんなりましたが意味がいまいち理解できていませんhttps://i.imgur.com/tT5P65V.jpg
1行目でg_nが1になる
2行目でnに1が代入される
3行目からはnが1以外はウエイトを繰り返して1になったらマクロを実行
最後にg_nが0になる

この流れで1〜2の間で他のマクロがg_nを2や3にする事はないのでしょうか
A,B,Cのマクロが同時に実行されたらA1,B1,C1,A2,B2,C2の順で実行されたりはない?
明日少し時間が取れるので具体的にマクロ組んでみます
2021/09/27(月) 21:34:49.85ID:fx1vi438
>>920
具体例ありがとうございます
まず最初に排他のためにグローバル宣言を出して他のマクロの実行をさせないようにしてからマクロを実行するようにしてみます
こちらも明日時間が取れた時に具体例に沿ってマクロを組んでみます
2021/09/27(月) 21:36:49.68ID:OP+RHvC9
>>923
他のマクロがg_nを2とか3にするんだよ
で他のマクロは自分(ローカル)のnも2とか3にするからg_nと自分のnが同じ時だけwhileが終わってマクロが走る
g_n=3のときはn=3のマクロだけ動いて他のマクロはnが1とか2だから動かないわけ
で、実際に動いたマクロの最後でg_nを1減らせばg_n=2になって次にn=2のマクロが動いてくれる(はず)
2021/09/27(月) 21:48:12.45ID:fx1vi438
>>925
ああそういうことですか!
このマクロは自分の発行した番号が排他宣言の逆バージョンみたくなってるのですね
自分じゃなくて後からのマクロが優先実行される流れですかね
2021/09/27(月) 21:53:05.72ID:OP+RHvC9
>>926
そそ、優先順位ないって言うから難しく作る必要も無いかなって
2021/09/27(月) 22:18:26.42ID:xTv+rTG4
>>924
先頭の変数はサンプルの便宜上グローバルに書く内容を列挙するためにローカルに書き出しただけね
念のため

そもそもの起動トリガがや実行したい状況の文脈が不知なんで何とも言えないが実行を保証する必要がなければ競合したらそのまま終了すればいいね
実行が必須なら>>918がやってるようにwhileループでウエイトして空き待ちをしてもいいし
ウエイト後にマクロ実行アクションで再度自分を実行してもいい
ストップウォッチで自己を一定時間後に呼ぶのでも
そのあたりは>>915で言ってることと一緒だよ
2021/09/27(月) 22:57:16.61ID:fx1vi438
>>928
グローバル宣言の件は了解です
今回は同時実行すると失敗するのを回避したいので実行必須になります
それが最終的に何個重なるかわからないのでwhileループで順番待ちをするのがスリムな形態でいけそうですかね
まあウエイト長くなりそうなので動作がモッサリするかもですが
2021/09/27(月) 23:20:44.22ID:OP+RHvC9
>>926
そういえばこれ理論的には行けるはずだけど、例えばn=3のマクロ実行中にそのマクロが強制終了されるとかなるとg_nが3のままでn=1,2のマクロがwaitで無限ループとかなって怖いね

ループは回数指定にしてループ内でbreak判定にしといた方が安全かも

>>929
while内のwaitは10msで行けると思うよ(待つことが目的じゃないので)
931名無しさん@お腹いっぱい。
垢版 |
2021/09/27(月) 23:31:27.87ID:0Q1T7+qp
えっち
https://i.imgur.com/Xb4FjMr.jpg
https://i.imgur.com/nYHPw8L.jpg
https://i.imgur.com/plafaJi.jpg
https://i.imgur.com/yfVrcyw.jpg
https://i.imgur.com/9BZNVN5.jpg
https://i.imgur.com/VJv87t9.jpg
https://i.imgur.com/jVNofou.jpg
https://i.imgur.com/L0op5vO.jpg
https://i.imgur.com/IuLSKyi.jpg
2021/09/27(月) 23:47:10.18ID:lH4kXgr+
>>931
グロ
2021/09/28(火) 00:25:37.97ID:XBXBeK/U
>>929
縦流れにかけた方が分かりやすいならループでウエイトするんでいいと思うな
ウエイト中は別に何するわけでもなく言うたらスリーブ代わりなんで別にもっさりしないよ
遅延するっても大して気にならないんだと思うんでそれぞれのマクロの面から尻まで5秒かかるとかそんな粒度なら1秒くらいで回せばいいと思うよ
2021/09/28(火) 11:15:16.69ID:ZNRHGKWF
>>933
ご指摘ありがとうございます
ブレークに変更しました
実際に動かしてみると自身のマクロがトリガーの問題で複数開始されてしまい n の数値が想定より増えてしまったりした事があったので排他のための変数を追加しました
https://i.imgur.com/cceVbN0.jpg
2021/09/28(火) 11:24:34.41ID:BbGkKuXS
>>923
ふと気になって検討してみた
これのrun macroの部分がそれぞれの実際の処理に置き換わるとして
2行目では自己の予約シリアル値をローカルに取った後にいったん当該マクロを終了
別途変数更新のトリガでグローバルの現シリアル値が別マクロによって増加したときに当該マクロの実体を実行するのをオススメするよ
原案と意図が変わっちゃうんだけどね

今のままだと仮に複数のマクロ実行がかち合ってAが1を取ってストンと抜けた後の処理の流れにウエイトが入ってた場合でかつ終了に達していないとき
運悪くBが発動すると2を取ってストンと抜けて...以下繰り返しが否定しきれない

でこれまた運悪くCが3を取ったあとにAが尻まで進んで1減算した直後にDが発動すると3がDにも発番される
でBがそのタイミングで終わって直後にEが始まるとEにも3...以下繰り返しってなる

どちらも各マクロにウエイトが絶対に入らないなら一気に尻までの連続実行が保証されるから起きないんだけどね
時間の長短は関係なくて少なくともwhileで必ず待つからこちらも否定しきれないかなぁ

後者はデクリメントしなければ発生しないんで足しっぱ放置が良さげ
んで例えばデバイスブート時の一回きり実行してる既存マクロなんかでたまに初期化メンテすればまぁ平気
危なければデイリージョブかなんかでも

原案のキモは妙案だと思うんだけどMDの実行特性が絡んでくるから
管理対象が複数スロットあるわけじゃないし結局シリアライズしなくちゃいけないならバイナリセマフォというかミューテックスというか言葉はまぁいいんだけどフラグ管理の単純ロックベースでいいかなって思った
https://i.imgur.com/kU3j4Dw.png
https://i.imgur.com/5jfxkaD.png
2021/09/28(火) 11:37:22.88ID:BbGkKuXS
>>933
>>930宛だね
それ今のとこ>>925の意図を汲めてないけど大丈夫?
結局排他用に真偽値を加えてるように見えるけど

だいたい横一線でマクロが発動する前提でwhileループに来たときに(リライアブルかどうかはともかく)テンポラリでユニークなシリアル値をみて相互に調停するように振る舞う想定なんだよ
まだ変えてないだけならいいんだけどテストてマクロにジャンプしちゃうと破綻する
2021/09/28(火) 12:07:40.49ID:BbGkKuXS
>>936
俺も間違ってる
>>934宛に書いたつもり
2021/09/28(火) 12:49:07.55ID:0Rke9tHs
>>936
見切れてるからよくわかんないけど同時実行のタイミングずらすのとは関係ない部分じゃない?>>535案件見たいな

>>935
起こりにくいし起きても「まあいいか」で済む問題にどこまで対処するかって話ですねぇ
対象のマクロ全部に記述しなきゃなのでちょっと不備があってもシンプルな方がいいんじゃないかな
でも、無限ループはNG

while(){wait}は要はタイムアウト設定なんで抜けちゃったらどうしよう→抜けた原因を直すで良いと思う
2021/09/28(火) 13:17:37.11ID:PFXrx/p2
>>921
>>922
それぞれ真似して作ってできた!!
後はどういう流れで作っていけばいいかなどこれ見ながら理解頑張ってみます
2021/09/28(火) 13:27:43.97ID:ZNRHGKWF
>>935
ご指摘ありがとうございます
私はMDを本格的に始めてまだ半年程度で初心者に毛が生えた程度なんです
そもそもマクロ自体が始めてなので専門用語は全然知らないので半分位しか理解できていません…
ただイメージはわかりましたし実際に今2つのマクロで動作タイミングを取っていることろでうまく行きそうなところまでは来ています
マクロのスタートタイミングは違うので先に順番付けを行っておいて最後の同時実行する時に順番に動作させています
2021/09/28(火) 13:41:00.17ID:BbGkKuXS
>>938
全部に書かなくちゃいけないからシンプルな方がいいは同感
だからオリジナルの意図でチョイ手を入れて特に後続の実体の中であり得るウエイトで新規のマクロが発動して抜けてかないように補強できないかなーとこねてみたんだけどなかなか美味くなくて
重箱の隅をつつくつもりではないのよ

>>934についての話は
変数を設定
マクロを実行中: True
の部分で骨抜きになっちゃってないのかなー?と
2021/09/28(火) 15:05:27.10ID:ZNRHGKWF
とりあえずGreenifyによるアプリ強制停止が同時実行できいないのでこんなマクロに仕上げました
https://i.imgur.com/EJL4NGb.jpg

アプリ使用後にすぐに強制終了したくないアプリを画面をオンにしたタイミングで強制終了処理させるのですが、Greenifyによる強制終了は複数アプリの同時処理は受け付けてくれません
なのでこのマクロを複数作ってそれぞれ別のアプリに置き換えて実験してみたら順番に終了動作してくれました
2021/09/28(火) 15:08:28.31ID:BbGkKuXS
>>940
>>935は美味い改良が俺のチカラ的にできなくて割と苦し紛れなのよ
1. 開店準備(起動時/デイリー)
2. 発券機から番号が増え続ける整理券を取る
3. 電光板に出て呼ばれたら自分の手続きしてから次の番号を電光板に書く

こんな内容の改案たが>>940で言ってるイメージに合うんじゃないかな?
開店1番の人を呼ぶ人がいないから例外あるしあまり美しくはないけど

しかも今見たら次の人が来店して整理券取ってないと破綻してるし 苦笑
トリガが足りないんだな
誰もいなくなってから新しく来店した客が取った整理券がすでに電光板に出てたときも呼んであげなくちゃか
ついでにこれで例外も解決
https://i.imgur.com/YsYACU3.png
https://i.imgur.com/ZLG0BdC.png
https://i.imgur.com/3iCbisX.png

>>939
できると嬉しいよね
目コピの改造からだんだん分かってくるからね
だから遠慮しないで言えばいいのよ
いつも出てくるかどうかは別の話として 笑
2021/09/28(火) 15:15:33.26ID:ZNRHGKWF
このマクロのいまいちな所は普段使いでログが大量発生してしまう事とアプリ毎に別マクロとして作らなけばならない所ですね
部分的にログを取る・取らないができるとか条件待ちループで記録されるログが少ない方法があればいいのですが
2021/09/28(火) 15:18:07.77ID:ZNRHGKWF
ああ上の話しは>>942の事です
2021/09/28(火) 15:55:03.57ID:0Rke9tHs
マクロ内でユニークな識別子有れば楽なんだけどなって思ってたけどマクロ名ってユニークじゃんね
https://imgur.com/0awrEVC.png

A,B,Cが同時に実行されたら
"A>B>C>"を生成
自身のマクロ名と比較して先頭で一致していたら実行(Aが実行される)
処理の最初でマクロ名削除して(">B>C>"になる)排他制御
処理の最後で先頭の">"削除して("B>C>")次のマクロ実行

カウンターのリセットもローカルな変数もいらない
ただし、セパレータ(">")がマクロ名に使われてないかに注意が必要
2021/09/28(火) 16:07:01.77ID:0Rke9tHs
>>946
排他制御じゃなくて2重起動防止だな
"A>B>C>"の状態でA実行中にDが来たとき"A>B>C>"のままだと"A>B>C>D>"になってAが再度実行されちゃう
2021/09/28(火) 16:33:20.58ID:BbGkKuXS
>>942
言うたら自己の重複実行の抑止はフラグで実行オーダーの決定はパチンコの保留玉n個ってことだね
プラグイン呼び出し後のウエイト5秒でアプリ終了は呼ばれないのか
これ実質は画面offのとき動くと思うんだけど画面onになってからのループで1秒待ちになったとき触らないように気をつけるってことなら平気

マクロ単位でのログの無効化はできるんでデバッグ終わったら無効にしちゃっていいと思うよ
2021/09/28(火) 16:52:51.86ID:0Rke9tHs
>>944
>>935がループ使わない方法作ってくれたからその方向でログ減らせるよ
MDの動作的にもスマートな感じで良さげ
>>946で更に省力化してみたのでどうぞ

マクロはひとつにまとめてもトリガー発火はちゃんとしてる?ならやりようも有ると思うけど
2021/09/28(火) 19:34:33.84ID:ZNRHGKWF
>>949
>>946のマクロを真似して見ましたけど文字列処理はやった事無くていまいち理解できませんでした
処理待ちマクロはグローバル変数ですよね?
https://i.imgur.com/MxS1456.jpg
このマクロのトリガーを2回実行したら変数の値がこんなんなりました
https://i.imgur.com/FBxL22A.jpg
>処理の最初でマクロ名削除して(">B>C>"になる)排他制御になる
この部分の中身が何か違うのでしょうか
https://i.imgur.com/aGCAQXV.jpg
2021/09/28(火) 19:40:09.70ID:ZNRHGKWF
おっとスレ建て踏んだみたいです
だけどスレ進行速度的に950ってちょっと早くないですか?
通常980で早い所でも970辺りでは?
950のままでいいよと言うなら950のままで建てて来ます
2021/09/28(火) 19:40:29.80ID:BbGkKuXS
>>946,947
キュー管理を個々に持たせるのか
なるほどねえ
分散うまいこと考えるなぁ
この線ならキューマネージャーを別途持つ考えだった
デリミタは2文字とか(使い勝手いいか悪いか置いといて例えばお約束の「, 」)使えはマクロ名の制限減るね
レス数が950を超えています。1000を超えると書き込みができなくなります。
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

ニューススポーツなんでも実況