ActivityPubのような共通プロトコルを利用することで、個人がSNSサイトを立ち上げて、そのアカウント同士が相互につながることができるようになりました。
このようなネットワークは「Fediverse」(フェディバース)と呼ばれています。これは、「Federation」(連合)」と「Universe」(世界)を足した造語です。MastodonやMisskeyなどのSNSサービスはFediverseに属しており、Threadsも加わる見通しです。
Webサイト構築システムであるWordPressが、プラグインでActivityPubに対応したので、WordPressでActivityPub対応のWebサイトを作ることにしました。
【目次】
通常のWebサイトを作成する
まず、レンタルサーバーを借りて通常のWordPressサイトを作成しました。レンタルサーバーのコントロールパネルにはWordPressの自動インストール機能があります。
以下のマニュアルを参考にして、まずデータベースを作成して、そのデータベースを指定してWordPressをインストールしました。
SSLに対応する
WebサイトをActivityPubに対応させるには、SSLに対応させる必要があります。以下のマニュアルを参考にして、レンタルサーバーのコントロールパネルでWebサイトにSSLの設定をしました。設定した数十分後には、「https://~」 のアドレスでWebサイトにサクセスできるようになりました。
WebサイトにSSLの設定をしたら、以下のマニュアルを参考にして、WordPressのコントロールパネル側においても、必要なSSLの設定をしました。
ActivityPubに対応する
以下の記事を参考にして、WordPressにActivityPubプラグインをインストールし、プラグインの設定をしました。
作成したWordPressサイトのActivityPubのアカウントは、WordPressのユーザー単位ではなく、以下のようなサイト単位のアカウントとしました。
posts@nyanzo.com
Mastodon(Fedibird.com)の検索欄で、このIDを「@」マークの後に入力すると、以下のようなActivityPubサイトとして認識されました。
バナー画像とアイコン画像はそれぞれ、WordPressサイトのバナー画像とファビコン画像が参照されています。キャッチフレーズもWordPressサイトのものがそのまま参照されています。
ここで、WordPressサイトをMastodonアカウントでフォローすると、WordPressのActivityPubプラグインでは、フォローされていることが以下のように確認できました。
WordPressサイトでの投稿とMastodonでの表示
WordPressサイトがMastodonアカウントでフォローされた時点で、そのWordPressサイトでの投稿が、そのMastodonアカウントのあるサーバーにもポストされるようになります。
例えば、WordPressサイトで以下のような投稿をすると、
Mastodonサーバーでは以下のような投稿として表示されます。投稿の最後の行の「https://vnyanzo.com/posts/74」というのはWordPessサイトの投稿へのリンクです。
また、WordPressサイトの投稿のタグである「ActivityPub」や「アクティビティパブ」は、Mastodonでは「#~」形式のハッシュタグとなっています。日本語のハッシュタグでも問題ないようです。
WordPressサイトの投稿へのリンクにはブログカードは付かない
WordPressはブログシステムなので、投稿には複数の画像やメディアを含む場合があります。そこで、投稿がMastodonサーバーなどにそのままの内容で投稿されるよりも、以下のようなブログカード付きリンクの形式で投稿される方が簡潔だと思いました。
(※この投稿自体は、WordPressサイトの投稿へのリンクを、通常Mastodonの投稿において記載したものです。)
そこで、WordPressのActvityPubプラグインの「投稿コンテンツ」設定で、投稿のタイトル、ハッシュタグ、リンクが入るが内容は入らない以下のフォーマットにして、
<strong>[ap_title]</strong> ← タイトル(太字)
[ap_hashtags] ← ハッシュタグ
[ap_permalink type="html"] ← リンク
WordPressサイトで以下のような投稿をすると、
Mastodonサーバーでは以下のような表示の投稿となり、WordPessサイトの投稿へのリンクにはブログカードは付きませんでした。また、ActvityPubプラグインの「メディア添付ファイル」をゼロにして投稿しても同様でした。今後のActivityPubブラグインのバージョンアップで、ブログカード付きで投稿できるようになることを期待したいです。
(追記)
これは、ActivityPubプラグインではなくSNSサーバー側の仕様に関係しているのかもしれません。
WordPressとMastodon間の返信の仕組み
WordPressサイトの投稿に、Mastodonにおいて以下のような画像付きの返信をすると、
WordPressサイトでは以下のような、WordPressの投稿へのコメントとして届きます。(※コメントはWordPress側で承認する必要があります。)
シンプルなコメント形式なので、Mastodonで添付された画像などは届きません。
このコメントに対して、さらにWordPressサイトで以下の返信のコメントをすると、
Mastodonでは、以下のような返信の投稿が届きます。
この返信の仕組みについては、WordPressのActivityPubプラグインのインストールと一緒にインストールしたMastodon Appsプラグインの、「Post replies to posts as comments.」チェックの有無で変更可能かと思ったのですが、試したところ、無関係なようです。
WordPressサイトからはMastodonなどのアカウントをフォローできない
WordPressのActivityPubプラグインのインストールと一緒にインストールしたFriendsプラグインでは、以下のようにMastodonやMisskeyなどの指定アカウントのタイムラインを表示できます。
しかし、このプラグインでMastodonやMisskeyなどのアカウントをフォローを行おうとすると、現状ではエラーとなって失敗します。返信や❤️ボタンなどのリアクションを行っても、相手のMastodonやMisskeyには届きませんでした。
WordPressサイトの投稿を削除すると、SNSサーバー側の投稿はどうなる?
WordPressサイトの投稿を削除すると、Mastodonサーバー側にポストされている投稿がどうなるか試してみました。
WordPressサイトの投稿をゴミ箱に入れると、直後にMastodonサーバー側の対応する投稿も削除されました。Mastodonからの返信に対するWordPressサイトからの返信コメントについても、ゴミ箱に入れた直後にMastodonサーバー側の対応する投稿が削除されました。
ただし、WordPressサイトのActivityPubプラグインが無効になっている状態では、投稿をゴミ箱に入れても、Mastodonサーバー側の対応する投稿は削除されないようです。(WordPressから投稿の削除のリクエストが行かない)
その場合は、ゴミ箱にある投稿を復元し、ActivityPubプラグインを有効にして、再度ゴミ箱に入れると、Mastodonサーバー側の対応する投稿も削除されました。
Mastodonサーバーでの投稿の削除の仕組みはについては、以下のようになっているようです。相手のMastodonなどのサーバーが不具合を起こしている状態では、削除されないこともあり得るようです。
WordPressのActivityPubの現状
WordPressの現状のActivityPubの機能では、外部のActivityPubアカウントからのフォローはできても、WordPressサイトからのフォローバックはできないようです。また、投稿の返信のやり取りは、通常のSNSのようなスタイルではできないようです。
しかし、WordPressサイトがFediverseのノードとして成立し、投稿がMastodonやMisskeyなどのタイムラインで表示され、記事の検索に引っかかるようになった意義はとても大きいと思います。今後の機能強化にも期待しています。
ブログパーツ
WordPressのActivityPubプラグインでは、以下のFediverse用ブログパーツ(ウィジェット)が用意されており、WordPressサイトに貼り付けて利用できます。