Fediverse自鯖で看板Botを動かす話(第2回FediLUG勉強会)

575 Views

May 12, 24

スライド概要

第2回FediLUG勉強会 (2024/05/12) の発表資料です。

profile-image

「評論・情報」ジャンルで活動している個人サークルです。 主に住宅街や地方の国道沿いなどで見かけるマルフク看板・キリスト看板を題材にした同人誌を作っています。関東地方に大量に看板を出している「きぬた歯科」系列の看板も好きです(ファンクラブ「大日本きぬた連盟」会員)。 お一人様Pixelfedの鯖缶もやっています (2023/8/20~)。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Fediverse自鯖で看板Botを動かす話 hira / モナコ広告 @[email protected] 2024.05.12

2.

自己紹介 • hira(ハンドルネーム) / モナコ広告(サークル名) • 赤白の「マルフク看板」と黒の「キリスト看板」ほか、 懐かしさを感じる看板たちを撮影して収集しておりま す。 • マルフク看板を41都府県で撮影しました。 • 2021年から同人誌を制作して即売会に出展しています。 • X (Twitter) 一強状態からの脱却に一役買いたいと思っ ています。 2

3.

私とFediverse 第0回の再掲 • 同人活動の宣伝用SNSとしてはTwitter (X) を使っていたが… • 2023/4/4のアイコンが柴犬に変わる事件でヤバさを感じmisskey.designにア カウントを開設 • 避難所を作りつつしばらくは静観 • 2023/7/2(新潟コミティア当日)予告ないAPIレート制限事件 • 当日の告知に支障! • 最近は表示名を変えるたびにクイズを解かされる → Fediverseに徐々に軸足を移すことに 3

4.

私とFediverse 第0回の再掲 • 同人活動の宣伝用SNSとしてはTwitter (X) を使っていたが… • 2023/4/4のアイコンが柴犬に変わる事件でヤバさを感じmisskey.designにア イベント名や配置場所を書く カウントを開設 • 避難所を作りつつしばらくは静観 • 2023/7/2(新潟コミティア当日)予告ないAPIレート制限事件 • 当日の告知に支障! • 最近は表示名を変えるたびにクイズを解かされる → Fediverseに徐々に軸足を移すことに 4

5.

とはいえ、Fediverseでは困ることも • 同人界隈では現在でも Xがデファクトスタンダード 第0回の再掲 Fediverseのアカウントの入力欄がない (Webサイトとして登録することはできるが) • イベントの公式アカウントがXのみ • Webカタログに登録できるSNSが X (+Instagram, Pixivなど) しかない • 当面はXと並行運用するしかなさそう • 最近はX以外のイベント公式アカウントも 増えてきている(例: 文学フリマThreads) • いっそXが完全有料になれば、 同人界隈の変革が進むかも? (コミティア146のWebカタログより) 5

6.

目次 • 看板Botについて • サーバー実装の検討 • 看板データの管理 • まとめ 3

7.

看板Botについて 2024.01.14 文学フリマ京都8

8.

「看板Bot」構想 @029bot • 登録されている画像からランダムに1枚投稿する だけの単機能Bot • マルフク看板やキリスト看板の画像を2時間に1回 投稿するXのBotを運営している。これを Fediverseでもやりたい @christsignbot • Botのレギュレーションを気にしなくてよいよう に、自鯖を立てる • Botのためだけに高性能サーバーは勘弁 • 自鯖 (Xserver VPS: 3core, 2GB RAM) でPixelfedを動か しており、それと同居できれば嬉しい 8

9.

サーバー実装の検討

10.

これまでの検討内容 • 同じ画像が繰り返し投稿されるので、毎度ストレージを消費しない実装が良い • Misskey系のドライブ機能が有力 • Mastodonでは、画像(メディアID)の使いまわしが不可能(実験済) • mei-v11 を試した(Misskey v11のフォーク) • シンプルで良さそう。Botで使わない機能を削減した結果、 イメージサイズ1GB未満、メモリ消費200MB~で動く • (めいどるふぃんは、開発用のAPIキーが発行できないのでパス) Dockerで動かしてみた図 (docker stats, docker images) 10

11.

立ててみた(テスト環境で) • 良さそうであったが、mei-v11からの変更箇所が多いので、自分でメンテし きれる自信がない • できればもう少し楽にやりたい 11

12.

Misskey v12フォークはどうか? • v11と比べると種類が多い、Firefish, Iceshrimpなど現役のフォークも • 「v12 LTS」と呼ばれる非公式フォークも複数系統ある • 探してみると「Nexkey」というものがあった • まさに今の自分が欲していたもの • フォーク元の「v12 LTS」と比較すると、機能削減による軽量化が図られている。 (自分でメンテしなくていい!) 12

13.

機能の比較 v12 LTS (現行のMisskeyともさほど変わらない?) Nexkey みつけるの 中に移動 グループ、ゲーム、アンテナ等が無くなってい る(一部は移動): Bot専用なら問題なし 13

14.

Nexkeyのリソース消費量など • 魅力的な選択肢 Nexkeyのメモリ消費は v12 LTS比で3割くらい少ない コンテナのイメージサイズは ほぼ半分 ※Firefishも2GB超 不要なファイル(ビルドのためだけに作られたnode_modulesなど)を イメージにコピーしないよう、さらに調整した結果… 参考: mei-v11 v11以下のサイズに削減! 14

15.

構成 • Dockerを利用 Cloudflare R2 VPS Nexkey 3000 PostgreSQL Node Web 80 443 Cloudflare 80 443 Redis Nginx Pixelfed : : 15

16.

看板データの管理 2024.02.25 文学フリマ広島6

17.

Botのコンテンツ管理 • 定期投稿するテキスト・画像を登録・管理し、SNSに投稿するための システムが必要 Twitter Bot用に 作ったもの 17

18.

システムの移行 • 従来のシステム(2015年頃に開発)はCakePHP 2.10で作っていたが、 2.xは2021年にサポート終了。もちろんPHP8にも対応していない • CakePHPの最新版に移行するくらいなら、今どきのフレームワークに移行す る方がよいだろう → Laravel 10で書き直しを決定 • Xの管理システムを移行するとともに、Fediverse用のBotも同様に管理でき ることを目標に開発 • 2023年12月頃から開発スタート、2024年1月末に一通りの実装を完了 → 先行してXの管理システムを移行、3月末からFediverseのBotを開始 18

20.
[beta]
Misskey (Nexkey) 連携のポイント
• レコード追加時にドライブへの登録処理を実行し、画像IDをDBに保存
最初の1回だけ

• ノート投稿時に、リクエストに画像IDを含めると、ノートに画像が添付できる
• 同じ画像IDを何回でも利用できる

画像データ

{"id":"hogehoge"}

app/Console/Commands
/PostCommand.php
Crontab

/api/drive/files/create
/api/drive/files/delete
Misskey
サーバ

/api/notes/create
{"i":"token", "text":"投稿内容",
"visibility":"home", "fileIds":["hogehoge"]}

30 8-22/2 * * * /path/to/project/artisan app:post

20

21.

Fediverse版のBot マルフク看板とキリスト看板の画像を投稿 • https://mi.signboard.fun/@029bot • https://mi.signboard.fun/@kirikanbot 21

22.

Fediverse版のBot 歯科医の顔出し看板の画像を投稿 2024/5/11スタート • https://mi.signboard.fun/@dentistbot 22

23.

まとめ 2023.12.23 クリスマスマーケット@吉祥寺

24.

まとめ • Misskeyフォーク(Nexkey)を立てた • Laravelで画像の管理システムを作った • 1ヶ月半ほど順調に動いている • (宣伝)看板コレクションの活動にご興味があればフォローお願いします • @[email protected] : 創作系 • @[email protected] : 雑談・鯖缶系(本活動はこちら) • (宣伝) 5/19(日)文学フリマ東京、5/26(日)コミティアに出ます • イベント情報・お問い合わせは上記いずれかのアカウントまで 24

25.

Fin. ご清聴ありがとうございました 25