※この記事はパクリ防止対策がいろいろ含まれています
今回はMacrodroidの少し高度な使い方として、AndroidのターミナルソフトであるTermuxをMacrodroidで使うためのTasker/Localeプラグインである、「Termux:Tasker」について、使い方を書いてみます。
◼️はじめに「まとめ」
・Termuxをインストール(無料)
・Termux:Taskerをインストール(有料:230円)
・Termuxを起動して以下のコマンドを順に発行
apt update
apt upgrade
mkdir -p ~/.termux/tasker
chmod 700 -R ~/.termux
cd ~/.termux/tasker
・~/.termux/tasker にシェルスクリプトを作成
echo -n > (任意のファイル名).sh して
vi (任意のファイル名).sh
して編集すると楽かも知れない。
・MacrodroidのアクションからTaskerプラグインを指定してTermuxを選択
→ Yeah!!
◼️きっかけ
Termux+Termux:Tasker 環境をずいぶん前から触っていたのですが、Termuxのヘルプ見ていたらaptが使えることが判明し、試しにapt install zipしてみたらパッケージが入り…
あれ、これ非ルートの僕のスマホでもシェルスクリプト使えばzip圧縮自動化できるんじゃね?Macrodroid Forumで悩んでたの無駄じゃなくね?
…と気づいたかもしれない、そんな年度末。
◼️まずはTermuxとTermux:Taskerの導入(Macrodroidはもちろん入ってる前提だよ!)
Termuxとは、Androidで利用可能なターミナルアプリであり、無料で利用することができます。
ベンダーはFredrick Fornwallさんという方で、スウエーデンはストックホルムで活動されている開発者様です。
Fredrick Fornwallさんの公式サイトは以下
https://fornwall.net
すばらしいアプリを無料で提供してくださる心意気に感謝と賛辞を。
Termux:Taskerは有料(日本円で2020年3月末現在は230円)のTermuxプラグインで、Androidの自動化アプリでは最も有名なTasker、以前は多くのユーザを抱えていたLocaleなど、仕様に準じた外部の自動化アプリから、Termuxの所定フォルダ内に作成されたスクリプトを実行することができます。当然Macrodroidでも利用することができます。
勘違いされている方が非常に多いですが、Termux:Taskerは、入れればTaskerやMacrodroidからUnixコマンドを任意に発行できるプラグインではありません。
Termux側でUnixコマンドに沿ったシェルスクリプトを書いておく必要性から、ある程度Unix系のコマンドに関する知識を必要とするため、Unixの知識に乏しい方の利用はお奨めしません。
ただ、一定水準以上の知識をお持ちの皆様には、一度、Google Play Storeで支払いを済ませておくだけで、自動化の幅が広がりますので価値のあるものです。
なに?
課金したくない?
GoogleアンケートモニターになってGoogle Play Storeで使える端金を稼いで有料アプリをゲットする手もありますよ。
時間はそれなりにかかりますが。
導入は、Google Play Storeからアプリをインストールするだけ!簡単!
セキュリティの確保のため、怪しいサイトからapkを入手しないようにしましょう。
あなたがESETやMalwarebytes' Anti-Malwareのお世話にならないためにもね!
※この二つのAnti-Malwareアプリは割りとおすすめですよ。あ、話がそれましたね。ノリも日本人じゃない感じになりましたね(笑)
◼️Termuxを入れたらまずすること
Termuxを導入したら、ターミナル自体を快適な環境にするために、以下の二つのコマンドを発行し、パッケージを最新化します。
この作業では、パッケージをダウンロードするために、インターネット接続が必要になります。
apt update
apt upgrade
おや?apt upgradeを行ったところ、何か聞かれていますね。
追加でディスク容量をこのぐらい使いますけど、問題ないですか?(意訳)と聞かれていますね。
yを入力して、エンターで確定させ処理を進めます。
パッケージのファイルが次々とダウンロードされて…
一部、圧縮されたファイルは解凍処理もあるようです。
終わりました。
Termuxを使うだけならこれだけでも(知ってる方にはさらにエイリアスを張る作業を行っていただいても※※)良いのですが、Taskerプラグインを使うための準備をさらに行います。
※※具体的には「termux-setup-storage」コマンドを発行すると、お使いのAndroid端末のダウンロードフォルダなどにアクセス可能になるエイリアスフォルダが、Termuxホームフォルダ配下に /storage という形で作られます。中を見ると…
こんな感じでございます。
◼️ちょっぴり寄り道
ここでワタクシらいなーせぶんは、追加で作業を行いました。
それは以下のコマンドです。
apt install zip
apt install unzip
はい。
zip形式ファイル圧縮に使うための、zipコマンドのパッケージと、解凍するためのunzipコマンドのパッケージですね。
当ブログのMacrodroid過去記事を御覧頂いた方は、Macrodroidでは開発者が対応しないと回答しているzip圧縮について、フォーラムで問い合わせていたことが記憶に新しいかと思います。
それのリベンジですね!
あら?unzipは既に最新のパッケージが入っていた様子で、導入がスキップされました。
いつの間に入っていたのでしょうね。
寄り道はこれでおしまい。
◼️Termux:Taskerを使うために
mkdir -p ~/.termux/tasker
と、コマンドを発行し、Taskerプラグインを使うための「所定フォルダ」、つまりTasker専用フォルダを作成します。
※詳しい方向けの補足:Taskerのホーム配下にTaskerフォルダを作らないと外部のアプリからプラグインを指定してもエラーで「所定フォルダないじゃん!」と怒られます。
では。
コマンドを発行…
何も起こらないように見えますが、
慌てず騒がず cd コマンドで対象のフォルダにカレントを移ってみます。
移れますね。
移れますね。
戯れにls -lでファイルを見てみましょう。
な~んにもないはずですが。
ないですね。やっぱり(笑)
ないですね。やっぱり(笑)
外部アプリから利用するために、権限も与えておきます。
chmod 700 -R ~/.termux
これでTermuxを外部の自動化アプリから使うための準備が整いました。
◼️さて、シェルスクリプトを所定フォルダに準備しましょう!
echo -n > (任意のファイル名).sh
でまずはシェルスクリプトファイルを作ります。
ファイル名は test としました。
echo -n > test.txt
で、テキストファイルも作っておきました。
zip圧縮を試すために……
Macrodroidでどんな感じで見えるか、
確認してみましょう。
Macrodroidでマクロ作成から、「アクション」タブを選択し、"アプリケーション"カテゴリからTasker/Localeプラグインを選択すると以下のようになりました。
「Termuxイベント」をタップします。
タップ後に表示される詳細設定画面の
Execute in~
の欄をタップすると「所定フォルダ」の中身のファイルが選択肢に出てきます。
シェルスクリプト(*.sh )を選択しておきます。
といっても、まだ何もできません。
シェルスクリプトの中身を書いてませんからね!
arguments(引数)欄は空にしておき、
Execute in Terminal Session(ターミナルセッション内で実行)はチェックしない状態にしました。
Execute in Terminal Sessionにチェックを入れると実行の度にTermuxのウィンドウが立ち上がる予感がしたもので…
設定を確定させるために、右上のフロッピーマークをタップします。
Execute in Terminal Sessionにチェックを入れると実行の度にTermuxのウィンドウが立ち上がる予感がしたもので…
設定を確定させるために、右上のフロッピーマークをタップします。
変数指定画面が出てきました。
ここで「Termuxプラグイン経由で実行したシェルスクリプトの結果を受けとる変数」を指定します。
このように指定してみました。
変数名は適当です。
全てローカル変数(そのマクロ内でのみ利用可能な変数)にして、かつ、各変数入力欄横の青背景+ボタンから新規作成していますが、
もちろん、グローバル変数(すべてのマクロから参照可能な変数)を指定できますし、既に作成してある変数(文字型)を指定することも出来ます。
この変数指定で重要なのは、真ん中のStandard Errorの部分で、シェルスクリプトの実行時のエラーメッセージはここに指定した変数に格納されます。
マクロ名をつけて、Macrodroidのマクロ側は一旦確定させておきました。
再びTermuxに戻り、シェルスクリプトの編集をしましょう!
vi test.sh
して、viからシェルスクリプトを編集します。
zip test.zip test.txt と…
先ほどMacrodroid側で確定させておいたマクロを実行してみましょう。
…あれれ?
zip test.zip test.txt と…
先ほどMacrodroid側で確定させておいたマクロを実行してみましょう。
…あれれ?
zip warning。
どうやら失敗しているようです。
ローカル変数outをタップして、中身を確認します。
んん!?
「所定フォルダ」でシェルスクリプトを実行していますが、参照先は「Termuxのホームフォルダ」ですね。
つまり…
シェルスクリプト側であらかじめ cd しておくか、zipコマンドの引数指定時に、パス指定しないとダメですね。
というわけで…
シェルスクリプト内でzipコマンドの引数をパス指定に変更して、Macrodroid側のマクロを再実行します。
さあ、どうでしょう?
お、zipファイルが出来ていますね!
お、zipファイルが出来ていますね!
成功です!!
◼️キーポイント
・Macrodroid側のアクション指定時にStandard Errorの変数が、デバッグ(動作確認)の大きな原動力になる
・一度Macrodroid側のマクロでシェルスクリプト呼び出しロジックを組んでおけば、あとはTermux側の所定フォルダのスクリプトのメンテナンスで如何様にも出来る
・zip圧縮もMacrodroid単体では出来ないが、Termuxを噛ませてシェルスクリプトを組んでしまえば、自動化出来ないこともない
◼️蛇足:Macrodroidについて思うことを少しだけ
もうそろそろ、小学校ではプログラミングの学習が義務化されますが、みんながみんな、プログラミングが出来るようになるかというと、それはNoだと思う次第であります。
躓く子も居るでしょうし、教員も聖人君子ではありません。昔ほど阿漕な教員も居ないとはいえ、クラスの子供を全員カバーするのは無理でしょう。挫折してしまう子が出たら悲しいですよね。
そのようななかで、Macrodroidや、iOSのショートカット(旧Workflow)をお使いの(このブログを御覧の)皆様が、日常生活のなかで、欠かせない存在となりつつあるスマホやタブレットで、「やりたいこと」を考えて「どうすればそれが出来るのか」を「分解して」「論理的に組み立ててみる」というプロセスをご自分の子供たちに教えることができる、というチャンスや切っ掛けを産み出すことができる、と考えたら、どうでしょうか。夢が広がりますね!
他のMacrodroid紹介サイトのような、素敵な説明はできませんが、皆様の生活が、次世代も含めて豊かになれるような使いやすい自動化アプリが増えてくれれば良いし、使って下さるユーザさんも沢山増えればなぁ、とぼんやりと思う今日この頃でございます。
巷ではコロナバイオレンスがまだまだ続いておりますが、この記事が皆様の一助になれば幸いでございます。
ここまでお読み下さりありがとうございました。
以上、らいなーせぶんでした。