【🔥炎上、解消。】荒れたコメントや記事を見たくない人のためのアプリとその仕組み

#はじめに
**技術的な内容のみをご覧になりたい方は[こちら](#技術的なポイント)からどうぞ**
ポエム的な内容は一応[こちらのnote]()に載せてます。


[<img = auto src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/70202ca2-4ed5-bb80-2d5f-31bae721a638.png">](https://tokiwaproject.page.link/mute)


[以前の記事](https://qiita.com/KokumaruGarasu/items/3ca4c0c7f8bc83b28645)でも紹介したアプリ「ミュート」に**Yahooニュースなど各種サイトでのコメント欄非表示**の機能を追加しました。コメントでの誹謗中傷は話題になっていたのでそれに対応した形になります。今回はその詳細と、以前の記事で伝えきれていなかった部分をご紹介したいと思います。

**ダウンロードはこちらから**

https://tokiwaproject.page.link/mute



#追加した機能


##コメント欄、広告ブロック
![過激な言葉をブロックします-3-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/3e7cb76b-c3fb-5b54-23ff-e0e3ca845af9.jpeg)

多くのサイトでコメント欄を非表示にする機能を実装しました。まだ全てのサイトでの対応は出来ていませんが、現時点でYahooニュースとまとめサイトのものに対処できるようにしています。

Yahooニュースのように最初から非表示のボタンが用意されているサイトもありますが、本アプリではそれも含めてブロックしています。
##コメント数ブロックで炎上対策

![過激な言葉をブロックします-5-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/f05e212b-15a7-0e36-09c6-2c2ccfba80a7.jpeg)

コメントの数などを表示する関連要素も非表示にすることが可能です。コメント数の多さは議論の多さと等しいですが、どこでも冷静かつ有意義な議論が行われているとは限りません。そこでこれらも非表示にしています。


例の画像はニュースフィードですが記事本文の中のコメント数もブロックしています。これはコメント数が多い記事が、いわゆる炎上記事であることが多いのを受けての対処です。


#技術的なポイント


今回はアップデートで追加した部分のみ紹介しているので、もっと知りたいという方は[以前の記事](https://qiita.com/KokumaruGarasu/items/3ca4c0c7f8bc83b28645)も併せてご覧ください。


##declarative_net_request
今回はJavaScriptでの広告ブロック処理をご紹介します。それは`declarative_net_request`です。これは**Manifest v3**からの、URLを指定して通信などをブロックする機能です。詳しくは[こちらのドキュメント](https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/)で確認することができます。以下は画像とフォントをブロックするサンプルです。


```json:blockerList.json
[
    {
        "id": 1,
        "priority": 1,
        "action": {
            "type": "block"
        },
        "condition": {
            "urlFilter": "example.com",
            "resourceTypes": [
                "image",
                "font"
            ]
        }
    }
]
```

前後のコードを一部省略していますが、処理が行われるように`manifest.json`に次のような追加をする必要があります。

```json:manifest.json
    "declarative_net_request": {
        "rule_resources": [
            {
                "id": "blockerList",
                "enabled": true,
                "path": "blockerList.json"
            }
        ]
    },

    "permissions": [
        "declarativeNetRequest"
    ]
```


Safari拡張での使用はWWDC2021のサンプルの中でも紹介されており、もちろんiOS版でも問題なく機能します。URLやサイトそのものをブロックした場合、デバイス側にはこのように表示されます。

![v3z3ltdg5xxv8frdgs9v94xdtcztnq6cpd81k20q73ksnqj3kd9w3pghrjtdfwhzsn0d99nl6sccc6yqndjb7n5wbycn9A3333s9lz7b6dAAt3631Arb39msl0csAt7spwm1wzs3f2gmwwllqlmrpvA025pyrd4d0z5kgdrpd98hq8cqdk41-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/1cd1caf3-3d80-9553-bbfe-346b5d4efa11.png)


これはデフォルトで設定されているので特に自分で文章を用意する必要はなく、本体設定に応じたローカライズも自動です。ページが開けないのはコンテンツブロッカーの機能だと説明してくれるので使う側も不具合かと心配することなく使うことができます。

##活用言語の追加
![4dqt3z99hm9fy8c4nm1bctq3ypfrc5vqtlnb9jql9vAqz0f1h72q9fkpt3xyxm32vxn68x9vkplhl3vAtr84vbzwq6v0cx9792cgsq8fAlfm1Aqqjxj40rjcmpk1hn6s6kctyg8Acddl4lw4AAfzbkvs77dA8A5f43crrtsgwdxkbfjcbqkq.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/713689/973c7240-3ea5-f22b-bede-4f6d5d7c25f8.png)

以前までこのアプリは、本体を構成するSwiftと拡張機能を担うJavaScriptで成り立っていました。しかしこれだけでは上記の新機能は実装困難でした。そこで今回はCSSを学び、拡張機能の本格的な部分に用いることとしました。前回と割合はほとんど変わっていませんがイメージはこのような形です。



##CSSの仕組み
```css:style.css
.plugin-comment_list {
    display:none;
}
```
実のところただCSSを書き換え、拡張機能の`manifest.json`で指定しているだけなので、仕組みと言えるほど複雑なものではありません。たったこれだけですがコメント欄を非表示にするという目的のためには十分で、なかなか大きな効果を生み出してくれます。ちなみにCSSファイルはiOSのSafari拡張機能でも問題なく使うことができます。





#今後の展望
対応を考えているのはTwitterです。また、Mac版のリリースも考えています。ほとんどがSwiftUIで作成した恩恵としてiOS版の機能やUIもある程度そのまま移行できるので、レイアウトなどを見やすいものにしてから公開したいと思っています。




#さいごに
機能自体は単純ですが、日々の生活のストレスを防ぐには効果的なものになったかと思います。普段目にする荒れた記事やコメント欄で気持ちが暗くなってしまう人は多いと聞きます。ご自分はもちろん、もし同じような悩みを抱えている方がいたらアプリや記事を共有していただけるとお役にたてると思います☺️



---

**よかったらこちらもよろしくお願いします**

・その他作成したアプリ：[RebootFilter](https://twitter.com/tokiwa16448392)

・各種お知らせ：[Twitter](https://twitter.com/tokiwa16448392)

・作成途中のアプリなどについて：[note](https://note.com/izumo092)