FEP-c0e0: 絵文字リアクション
Warning
このFEPはgemini-2.5-flashを利用して2025-08-17に翻訳されました。オリジナルのFEPはここから閲覧できます。
概要
このドキュメントでは、ActivityPub ネットワークにおける絵文字リアクションの実装方法について説明します。
履歴
Misskey はバージョン 10.97.0 (2019年) 以降、絵文字リアクションをサポートしています。 Pleroma はバージョン 2.0.0 (2020年) 以降、絵文字リアクションをサポートしています。
要件
このドキュメントにおけるキーワード「MUST (必須)」、「MUST NOT (してはならない)」、「REQUIRED (必須)」、「SHALL (するものとする)」、「SHALL NOT (しないものとする)」、「SHOULD (すべきである)」、「SHOULD NOT (すべきではない)」、「RECOMMENDED (推奨)」、「MAY (してもよい)」、「OPTIONAL (任意)」は、RFC-2119 に記述されている通りに解釈されます。
EmojiReact アクティビティ
EmojiReact アクティビティタイプは、LitePub ボキャブラリーの一部と見なされます。その完全な IRI は http://litepub.social/ns#EmojiReact です。
このアクティビティは Like アクティビティに似ています。Like アクティビティの標準プロパティに加えて、EmojiReact アクティビティは content プロパティを必須とします。リアクションのコンテンツは、単一のユニコード書記素(unicode grapheme)であるか、コロンで囲まれたカスタム絵文字の名前(ショートコード)のいずれかでなければなりません。
カスタム絵文字が使用される場合、EmojiReact アクティビティは、単一の Emoji オブジェクトを含む tag プロパティを必須とします。その name プロパティの値はカスタム絵文字の名前を含んでいなければならず、コロンで囲まれているべきです。埋め込まれた Emoji は、アクターのサーバーとは異なるサーバーから発信されることがあります。
アクターは、単一の object に対して複数の EmojiReact アクティビティを生成できます。ただし、実装者は、同じ絵文字によるリアクションを複数許可しない、またはオブジェクトごとに複数のリアクションを許可しないことを選択してもよいです。
ユニコード絵文字の例:
{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    {
      "litepub": "http://litepub.social/ns#",
      "EmojiReact": "litepub:EmojiReact"
    }
  ],
  "actor": "https://alice.social/users/alice",
  "content": "🔥",
  "id": "https://alice.social/activities/65379d47-b7aa-4ef6-8e4f-41149dda1d2c",
  "object": "https://bob.social/objects/57caeb99-424c-4692-b74f-0a6682050932",
  "to": [
    "https://alice.social/users/alice/followers",
    "https://bob.social/users/bob"
  ],
  "type": "EmojiReact"
}
カスタム絵文字の例:
{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    {
      "toot": "http://joinmastodon.org/ns#",
      "Emoji": "toot:Emoji",
      "litepub": "http://litepub.social/ns#",
      "EmojiReact": "litepub:EmojiReact"
    }
  ],
  "actor": "https://alice.social/users/alice",
  "content": ":blobwtfnotlikethis:",
  "id": "https://alice.social/activities/65379d47-b7aa-4ef6-8e4f-41149dda1d2c",
  "object": "https://bob.social/objects/57caeb99-424c-4692-b74f-0a6682050932",
  "tag": [
    {
      "icon": {
        "mediaType": "image/png",
        "type": "Image",
        "url": "https://alice.social/files/1b0510f2-1fb4-43f5-a399-10053bbd8f0f"
      },
      "id": "https://alice.social/emojis/blobwtfnotlikethis",
      "name": ":blobwtfnotlikethis:",
      "type": "Emoji",
      "updated": "2024-02-07T02:21:46.497Z"
    }
  ],
  "to": [
    "https://alice.social/users/alice/followers",
    "https://bob.social/users/bob"
  ],
  "type": "EmojiReact"
}
content を持つ Like
絵文字リアクションは、Like アクティビティとして表現することもできます。この絵文字リアクションのバリアントは、非対応の実装によって通常の「いいね」として処理され、それが望ましい場合には、実装者は EmojiReact タイプではなく Like タイプを使用してもよいです。
実装は、content を持つ Like を EmojiReact アクティビティと同じ方法で処理しなければなりません。
リアクションの取り消し
絵文字リアクションは、標準の Undo アクティビティを使用して取り消すことができます:
{
  "@context": [
    "https://www.w3.org/ns/activitystreams"
  ],
  "actor": "https://alice.social/users/alice",
  "id": "https://alice.social/activities/99b8f47b-f3a9-4cf5-94a2-95352e7462d6",
  "object": "https://alice.social/activities/65379d47-b7aa-4ef6-8e4f-41149dda1d2c",
  "to": [
    "https://alice.social/users/alice/followers",
    "https://bob.social/users/bob"
  ],
  "type": "Undo"
}
emojiReactions コレクション
オブジェクトに対する絵文字リアクションのリストは、emojiReactions プロパティを使用して公開できます。その完全な IRI は http://fedibird.com/ns#emojiReactions です。
このプロパティによって指定される URL は、Like(content を持つ)および EmojiReact アクティビティを含むコレクションに解決されなければなりません。
実装
このドキュメントは、Misskey、Pleroma、Fedibird における絵文字リアクションの実装に基づいています。
この FEP が公開された後、他のいくつかのプロジェクトがそのサポートを発表しました:
参照
- Christine Lemmer Webber, Jessica Tallon, ActivityPub, 2018
 - S. Bradner, RFCs で要件レベルを示すためのキーワード, 1997
 - LitePub contributors, LitePub プロトコルスイート, 2019
 - silverpill, FEP-9098: カスタム絵文字, 2025
 
著作権
CC0 1.0 ユニバーサル (CC0 1.0) パブリックドメイン献呈
法的に可能な限り、この Fediverse Enhancement Proposal の著者は、この著作物に対するすべての著作権および関連する権利または隣接する権利を放棄しました。