(1)はこちら、(2)はこちらから。
ソーシャルネットワークで使われるそのほかの機能の実現方法
ここまででFediverseに参加するために必要な最小限の機能は実装できていますが、Actubでは未実装なもののMastodonなどのフル機能のActivityPubサーバで実装されている、ソーシャルネットワークでよく使われる機能がいくつかあります。本節ではそれらの実装方法ついて概略を説明します。
ブースト(リツイート)
通常の短文投稿ではCreateオブジェクトを作成しますが、Mastodonで言うブースト(Twitterにおけるリツイート)を行う場合はAnnounce
オブジェクトを作成します。
object
属性にはブーストする短文のIDを設定します。そのあと通常の投稿と同様にこのオブジェクトをフォロワーに通知します。
お気に入り(いいね)
お気に入りに指定する場合、次のようなLike
オブジェクトを作成し、短文を作成したアクターに通知します。
ここでもobject
属性にはお気に入りに指定する短文のIDを設定します。
ハッシュタグ
ハッシュタグに関する詳細は、ActivityPub仕様では定義されていません。そのため、Fediverseで慣習的に用いられている方法を実装します。以下に、ハッシュタグを含む短文のNote
オブジェクトを示します。
まずActivityPubに含まれていない属性を使うために、@context
属性にHashtag
クラスに関する定義を追加します。そして、tag
属性としてtype
属性に固定文字列Hashtag
、name
属性にタグ文字列、href
属性にこのタグを含む短文の一覧が表示されるHTMLへのリンクを指定します。content
属性の短文にハッシュタグを含めただけではハッシュタグとは認識されず、サーバが短文をパースしてハッシュタグの内容をtag
属性に設定する必要があることに注意してください。
画像の添付
画像を添付するには、Note
オブジェクトを作成するときに次のようなattachment
属性を追加します。
プロフィール情報
アクターの表示名、プロフィール、アイコンは、アクターオブジェクトに次のような形で追加します。
name
属性に表示名、summary
属性にプロフィール、icon
属性にアイコンの情報を指定します。
まとめ
ActivityPub自体の仕様は大きいので、Mastodonのようなフル機能のサーバを作るのは大変です。ただ、機能を絞れば比較的少ないコード量でFediverseに参加するサーバを作成できます。みなさんもぜひ挑戦してください。
さて、次回の執筆者は楠田来安さんで、テーマは「動的なモジュールロードとの付き合い方」です。お楽しみに。