## はじめに
Misskey で導入されているNSFWな画像に対して自動でNSFWが付与されるという機能をMastodonにも導入してみました。
過去にも、以下の記事で記載しているように自動NSFW機能を導入してみたことはあるんですが、如何せん外部APIを使う関係でコストがかなりかかる状況でした。
また画像を投稿する際に毎回チェックが実行されるため投稿処理が重くなるということも発生していました。
そういった背景から機能自体は廃止していたんですが、直近で作ったBotで利用しているopennsfw2をPyCallから使える可能性が出てきたので試しに実装してみました。
やったこと
Rubyでopennsfw2が実行できるかを調査
実際に調査で作ったサンプルは以下になります。
基本的にはPyCallに記載されているサンプルコードを元にopennsfw2を呼び出し、それを使うようにしているだけです。
実際にNSFWな画像を用意し、動作確認なども行ってみました。
NSFWな画像を正しく検知できていました。
Mastodon側のコードを修正
次にMastodon側のコードを修正し、投稿に紐づいた画像をチェックするようにしてみました。
実際に作ったものとしては以下になります。
実際にローカルの開発環境下で確認し、正常にNSFWを付与できているようでした。
ただ、画像自体のチェックにかなり時間がかかるため投稿処理がかなり重くなります。
実運用まで考えるのであれば、はより軽量なモデルを使うか処理のボトルネックを調査していく必要はありそうです。
今後
とりあえず、機能の実装自体は出来たので良かったですねー。
今後実運用までもっていくかどうかは検討していきたいかなと思います。
まあ、より軽量なモデルがあればとかにはなりそうですが......。