この記事はMisskey アドベントカレンダー 2022の4日目です。
こんにちは、山田ハヤオです。Androidの好きなところの一つにMacroDroidの存在があります。
MacroDroidはAndroid上での気軽なプログラム環境みたいなもので、なんでも自動化できます。
というかMisskeyやってるような変態はみんなMacroDroid使ってると思います。
今回はMisskeyというSNSのAPIをMacroDroidを使って叩いてみます。
今回アドベントカレンダー飛び入り参加です急ですみません。。。
Misskeyとは
日本人は開発した分散型SNSです。
誰でもインスタンス(サーバ)を建てることができ、インスタンス間でActivityPubで通信します。
Mastdonと同系列のものと思っていただければ大丈夫です。
MisskeyのAPIとMacroDroid
MisskeyのAPIは非常に単純で、アクセストークンごとJSONをPOSTするだけです。
APIのエントリーポイントなどのドキュメントは各インスタンスで公開されています。
アクセストークンは設定画面でかんたんに取得できます。
ところで、MacroDroidにはPOSTを送信する機能があります。
アクションブロックの中のアプリカテゴリにHTTPリクエストというブロックがあります。
このブロックではHTTPヘッダーや文字列、メソッドを指定して送信できるというものです。
つまり実質curlが使えるのと同じことです。
本当はシェルでMisskeyクライアント書いた話をしたかったのですが期限までに完成しませんでした。
今回はMisskeyのAPIとMacroDroidのPOST機能、この2つを使ってMisskeyに投稿していきます。
作成したアクションブロック
一般的なプログラミング言語で言うところの関数を、MacroDroidではアクションブロックと呼びます。
MacroDroidには標準入出力はないので、ioはすべて変数を介して行います。
引数としてトークン、インスタンス、内容、範囲を受け取り、POSTを送信します。
サーバから帰ってきたJSONはまた別の変数に代入され、他のアクションブロックで再利用できます。
アクションブロックを用いたマクロ
最終的に出来上がったのがこちら。
ユーザーに投稿を入力後、投稿先を選択してもらって投稿完了。
MacroDroidにはJSONを解析して連想配列に変換してくれる機能があります。
まさかそんな機能を使う日が来るとは思いませんでしたが…
その機能を使ってレスポンスからcreatdNoteIdを取得しています。
これはMisskeyとは関係ないんですが、MacroDroidのInputBoxは非常にわかりにくいところに配置されているので注意です。
投稿後はブラウザが起動し投稿が表示されます。
このマクロ自体は劣化版クライアントでしかないですが、MacroDroidの他の変数と組み合わせればスマホの状態監視なども投稿できます。
ダウンロード
今回のマクロをアップロードしているので自由にインポートして使ってください。
インポート後、MisskeyTokenとMisskeyInstance変数を設定してください。
テンプレートにも投稿したので使ってみてください。
終わり
このマクロを利用すればAndroidでノーコードで(MacroDroidだけで)Bot開発ができる気もします。
正直こんな程度の内容で参加してしまってよかったのか非常に不安です…
来年はもっとしっかりとした内容で参加できるようにがんばります。
実は人生初アドベントカレンダーでした。
コメント
[…] MacroDroidからMisskeyに投稿する | FascodeNetwork Blog […]