絵文字と絵文字リアクション

絵文字を使ってお相手とコミュニケーション

「絵文字」はActivityPubの仕様には入ってない。各サーバーソフトウエア(インスタンス)の独自拡張。すべてのサーバーが対応しているとは限らないので、現時点での暫定対応となります。

【絵文字】

    使う絵文字は2種類
  1. unicodeで規定の絵文字を使う
  2. 「画像」を用意して絵文字として使う

unicodeの絵文字「😸」「🙀」「😿」は、ほかの文字と同じ扱いでそのまま使える

画像を絵文字として使う場合はActivityのJSONに絵文字の情報を入れる必要がある

ActivityPubで繋がっているFediverseで「絵文字」と言うと「画像を絵文字として使う」のこと、と言ってもいいぐらいでしょうか。各サーバーで、ユーザーが作成した、いろんな独自画像が絵文字として用意されています。

以下は「画像を絵文字として使う」についてのメモがほとんどです。

【投稿本文に絵文字を使う】

うちの入力画面です。
投稿エリア下の3つの画像を絵文字として使えるようにしました。

「:mike3_smile:」というのが絵文字の名前です。画像をクリックすると画像の名前をコピーするので投稿エリアに貼り付け。
ほかのサーバーやアプリだと、投稿エリアにちゃんと画像を貼り付けられます(うちは手抜きの未対応)

投稿を入力したら、ActivityのJSONを作成して、フォロワーさんのところに配送します。

  1. このActivityでは絵文字を使いますよ、ということを「context」で表明する(「ハッシュタグ」なんかと同じ)
  2. 絵文字を使いますよ、ということを伝えたら、その絵文字がなんなの?その画像はどこにあるの?という情報をNoteのActivityのtag配列に記載する(ハッシュタグなんかと同じ)

詳細はわかってないんだけど、飛んでくる絵文字入りのActivityのcontextに指定されているものが以下


        "toot": "http://joinmastodon.org/ns#",
        "Emoji": "toot:Emoji",
        "misskey": "https://misskey-hub.net/ns#",
        "_misskey_reaction": "misskey:_misskey_reaction",
        "_misskey_license": "misskey:_misskey_license"},
	

(ここ、本当はちゃんと理解できた方がいいところだけど、わたしはわかってないので「呪文」です)

tag配列に入れる絵文字の情報が以下


"tag": [
    {"icon":{
        "url":"https://tokoroten.doncha.net/images/emojis/mike3_smile.png",
        "type":"Image","mediaType":"image/png"
        },
    "creator":"t2aki@tokoroten.doncha.net",
    "name":":mike3_smile:",
    "updated":"2025-05-31T10:00:00Z",
    "id":"https://tokoroten.doncha.net/emojis/mike3_smile",
    "type":"Emoji",
    "license":"CC0 : https://creativecommons.org/licenses/by/4.0/",
    "_misskey_license":{"freeText":"CC0 : https://creativecommons.org/licenses/by/4.0/"}
    }
]
	

配列に入れる情報はユーザーが作った画像の情報と画像へのURLを記載したもの。

「type」が「Emoji」の配列で、「icon」に記載される「url」と「name」に記載される「絵文字のコード名」がキモ、かな。
(「name」を見て、それに該当する「絵文字画像」を表示させる)

ライセンスも必要だと思う。ここを見て絵文字画像の権利関係が確認できる。

絵文字入りActivityのJSONが以下


{
    "@context": [
        "https://www.w3.org/ns/activitystreams", 
        {"Hashtag": "as:Hashtag", 
        "toot": "http://joinmastodon.org/ns#",
        "Emoji": "toot:Emoji",
        "misskey": "https://misskey-hub.net/ns#",
        "_misskey_reaction": "misskey:_misskey_reaction",
        "_misskey_license": "misskey:_misskey_license"},
        "https://w3id.org/security/v1"
    ],
    "type": "Create",
    "id": "https://tokoroten.doncha.net/t2aki/activity/04911-20250601",
    "url": "https://tokoroten.doncha.net/t2aki/activity/04911-20250601",
    "published": "2025-05-31T23:34:33Z",
    "actor": "https://tokoroten.doncha.net/t2aki",
    "to": ["https://www.w3.org/ns/activitystreams#Public"],
    "cc": ["https://tokoroten.doncha.net/t2aki/followers"],
    "object": {
        "type": "Note",
        "id": "https://tokoroten.doncha.net/t2aki/items/04911-20250601",
        "url": "https://tokoroten.doncha.net/t2aki/items/04911-20250601",
        "published": "2025-05-31T23:34:33Z",
        "to": ["https://www.w3.org/ns/activitystreams#Public"],
        "cc": ["https://tokoroten.doncha.net/t2aki/followers"],
        "attributedTo": "https://tokoroten.doncha.net/t2aki",
        "content": "本文中に絵文字:mike3_smile:",
        "tag": [
            {"icon":{
                "url":"https://tokoroten.doncha.net/images/emojis/mike3_smile.png",
                "type":"Image","mediaType":"image/png"
                },
            "creator":"t2aki@tokoroten.doncha.net",
            "name":":mike3_smile:",
            "updated":"2025-05-31T10:00:00Z",
            "id":"https://tokoroten.doncha.net/emojis/mike3_smile",
            "type":"Emoji",
            "license":"CC0 : https://creativecommons.org/licenses/by/4.0/",
            "_misskey_license":{"freeText":"CC0 : https://creativecommons.org/licenses/by/4.0/"}
            }
        ]
    }
} 
	

フォロワーさんのサーバーで投稿文に入れた絵文字が表示されます。

上がIceschrimp、下がFedibird。どちらもWEBのブラウザで表示。

ちなみに絵文字表示に対応していないウチの場合の表示

絵文字の名前で雰囲気はつかめる…ぐらいでも、わたしはOKです。

【絵文字リアクション】

ActivityPubで他のユーザーの投稿に対するリアクションは「Like」=イイネだけです。
たとえば追悼系など、ユーザーさんが落ち込んでる投稿に「イイネ」はさすがに使えません。

そんな時使えるのが、絵文字でリアクション。

ただ、投稿本文に使う絵文字と違って、絵文字リアクションに対応しているサーバーはまだ限られています。
絵文字のリアションを表示するエリアがあって、絵文字を表示することができる、という表示側・表側の対応でしょうか。

絵文字リアクションに対応しているfedibird.comで、絵文字リアクションをいただいてるわたしの投稿を表示。
画面下にリアクションでいただいた絵文字が並んでます。

絵文字リアクションを送ってみます。

うちで「まだら」さん(わたしの別サーバーの別アカウント)の投稿を表示して、絵文字リアクションエリアを展開したものです。

「絵文字」は、上から「unicodeの絵文字」「フリーで利用できる画像絵文字」「自作した画像絵文字」です。
ほかのサーバーやアプリだと、もっと種類豊富に選択画面も便利になってます(うちは手抜き)

絵文字リアクションを受けとった「まだら」さんの投稿表示。

投稿下の絵文字リアクション表示エリアに送信した絵文字が表示されています。

使いたい絵文字を選んで「like」ボタンをクリックすると「まだら」さんに絵文字を送信することになります。

わたしが確認したところだけになりますが、今日時点でのサーバーごとの絵文字リアクション対応状況

    【対応】
  • Misskey、Iceshrimp、Firefish、Fedibird、kmyblue、mitra、sharkey、Akkoma
    【未対応】
  • Mastdon系全般

絵文字リアクションのActivityとして「EmojiReact」というのもありますが、ActivityPubの仕様にはなくて、絵文字リアクションに対応していないサーバーもまだまだ多いのが現状です。

「EmojiReact」がリクエストで送られてきても、対応していないサーバーはおそらくスルーすることになる=リアクションを届けられない、ということになります。

そのため、現状では(便宜的に?)「Like」のActivityのJSONに絵文字情報を追加して配送するという対応のようです。

絵文字リアクションを送信するActivityのJsonが以下


{
    "@context":[
        "https://www.w3.org/ns/activitystreams",
        {"Hashtag": "as:Hashtag",
        "toot": "http://joinmastodon.org/ns#",
        "Emoji": "toot:Emoji",
        "misskey": "https://misskey-hub.net/ns#",
        "_misskey_reaction": "misskey:_misskey_reaction",
        "_misskey_license": "misskey:_misskey_license"},
        "https://w3id.org/security/v1"
    ],
    "type": "Like",
    "id": "https://tokoroten.doncha.net/t2aki#likes/b3d041cb-3e79-11f0-b545-9cf9ec71b4f4",
    "actor": "https://tokoroten.doncha.net/t2aki",
    "object":"https://fedibird.com/users/donbe1961/statuses/114605105753799645",
    "content": ":mike3_smile:",
    "_misskey_reaction":":mike3_smile:",
    "tag":[
        {"updated":"2025-05-31T10:00:00Z",
        "type":"Emoji",
        "creator":"t2aki@tokoroten.doncha.net",
        "icon":{
            "mediaType":"image/png",
            "url":"https://tokoroten.doncha.net/images/emojis/mike3_smile.png"
        },
        "name":":mike3_smile:",
        "_misskey_license":{"freeText":"CC0 : https://creativecommons.org/licenses/by/4.0/"},
        "license":"CC0 : https://creativecommons.org/licenses/by/4.0/",
        "id":"https://tokoroten.doncha.net/emojis/mike3_smile"}
    ]
}
	

Like」のActivityに投稿本文に絵文字をつける時と同じく、contextに追加、tag配列を追加となります。

標準のLikeと違うところがひとつ。
絵文字リアクションのLikeには「content」「_misskey_reaction」要素があって、そこに絵文字の名前を記載します。

unicodeの絵文字をリアクションとして送信するActivityのJsonが以下


{
    "@context": [
        "https://www.w3.org/ns/activitystreams", 
        {"Hashtag": "as:Hashtag",
        "toot": "http://joinmastodon.org/ns#",
        "Emoji": "toot:Emoji",
        "misskey": "https://misskey-hub.net/ns#",
        "_misskey_reaction": "misskey:_misskey_reaction",
        "_misskey_license": "misskey:_misskey_license",
        "litepub": "http://litepub.social/ns#",
        "EmojiReact": "litepub:EmojiReact"},
        "https://w3id.org/security/v1"
    ],
    "type": "Like",
    "id": "https://tokoroten.doncha.net/t2aki#likes/7be6946e-3ea1-11f0-941c-99615ae0fe1e",
    "actor": "https://tokoroten.doncha.net/t2aki",
    "object":"https://mstdn.jp/users/donbe2023/statuses/114606233167078862",
    "content": "😸",
    "_misskey_reaction":"😸"
}
	

画像絵文字と違ってtag配列は不要です。「content」と「_misskey_reaction」に直接unicodeの絵文字を入れます。
飛んできたActivityを参考にこちらの「context」には「litepub」「EmojiReact」要素も追加しました。

(unicodeの絵文字は手抜き…)

前述したように絵文字リアクションは「イイネ」では足りない/ちょっと違うようなケースで使えるし、そのためにあるようなものだと思います。

ところが、絵文字リアクションに対応していないサーバーに「Like」のActivityとして配送すると、絵文字は表示されず「イイネ」となるので注意する必要があります。

絵文字リアクションに対応していない別サーバーの別アカウントにunicodeの絵文字で泣き顔の猫「😿」を送ったのに「お気に入りに登録されました」となります。

ということにもなるので、取扱注意でしょうね。

わたしが今回作った絵文字が3つ。
ウチのおひとり様ActivityPubサーバーに実装するより、絵を描くほうに時間も手間もかかって大変でした。そのわりにこのアリサマという絵になってますが。

還暦の手習いお絵かきチャレンジ::ひまつぶし雑記帖

↑年寄の冷や水というか、悪戦苦闘した記録です。御笑覧いただけると幸いです。

[2025-06-02 12:31:44] v1.0.0

Menu