ActivityPubフレームワークのFedifyがついに最初の正式バージョン1.0.0をリリースしました!
Fedifyとは?
FedifyはActivityPubプロトコルをベースにした連合型(federated)サーバーアプリケーションを簡単に作成できるようにするTypeScriptライブラリです。ActivityPubはソーシャルネットワーキングサービスが相互に通信できるようにするオープンな標準プロトコルで、これを通じて様々なサービス間でユーザーが互いにコミュニケーションを取れる分散型ソーシャルネットワークであるフェディバース(fediverse)を構成します。
Fedifyを使用すると、開発者はActivityPubプロトコルの複雑な詳細を直接実装する必要なく、高レベルのAPIを通じて連合型サーバーアプリを簡単に作成できます。FedifyはActivityPubオブジェクトに対する型安全なインターフェース、WebFinger、HTTP Signatures、Linked Data Signatures、Object Integrity Proofsなど、ActivityPub実装に必要な様々な機能を基本的に提供します。
また、FedifyはMastodonやMetaのThreadsのような人気のあるフェディバースのソフトウェアやサービスとの相互運用性のための特別な処理も含んでおり、開発者が既存のフェディバース生態系と簡単に統合できるアプリケーションを作成できるようにします。さらに、様々なWebフレームワークとの統合をサポートし、CLIツールも提供しているため、開発とデバッグのプロセスをより便利にします。
主な変更点
「ハンドル」用語の使用中止
このバージョンから、Fedify全体で「ハンドル」(handle)という用語はフェディバースハンドル(例:@hongminhee@fosstodon.org
)を指す場合にのみ使用されるようになりました。アクターの内部固有ID(例:b379dbdc-3b4f-4ef4-88c2-fc25632d1c22
)は「識別子」(identifier)として、WebFinger名(例:hongminhee
)は「ユーザー名」(username)として呼ばれます。
APIのハンドルという用語は以前のバージョンとの互換性のために当面は維持されますが、使用中止(deprecation)警告がログに記録され、将来的に廃止される予定です。
詳細については関連ドキュメントを参照してください。
Linked Data Signatures
Linked Data Signaturesは古くなった標準ではありますが、MastodonなどフェディバースNの主要な実装がまだ依存している署名方式です。
FedifyはこのバージョンからLinked Data Signaturesをサポートするようになり、HTTP SignaturesとObject Integrity Proofsに加えて、フェディバースで使用されるすべての種類の署名方式をサポートするようになりました。これにより、Fedifyは最高の相互運用性を持つActivityPub実装となりました。
ただし、Linked Data Signaturesを使用するためにFedifyユーザーが特別に行うことはありません。受信するアクティビティがLinked Data Signaturesを持っている場合は自動的に署名を検証し、すべての送信アクティビティにはHTTP Signatures、Linked Data Signatures、およびObject Integrity Proofs、3つの形式の署名が付与されます。
詳細については関連ドキュメントを参照してください。
アクティビティの転送
このバージョンから、受信トレイ(inbox)内で受信したアクティビティをInboxContext.forwardActivity()
メソッドを使用してそのまま他のアクターに転送できるようになりました。
一見すると、受信トレイ内で受信したアクティビティをContext.sendActivity()
メソッドを使用して再送信すればよいと思われるかもしれません。しかし、この方法では受信トレイにアクティビティが渡される前に元の署名が削除され、送信時にはこれを転送するアクターの署名が代わりに付与されるため、転送されたアクティビティを受信する側がこれを信頼しなくなります。
一方、InboxContext.forwardActivity()
メソッドを使用すると、元の署名が保持されたままで転送されるため、このような問題がありません。(もちろん、元のアクティビティ自体がLinked Data SignaturesやObject Integrity Proofsで署名されている必要があります。)
詳細については関連ドキュメントを参照してください。
fedify inbox
終了時にDelete(Application)
送信
fedify inbox
は一回限りの一時的なアクターと受信トレイ(inbox)を作成し、アクティビティが正しく配信されているかを確認できるデバッグコマンドです。
このバージョンからfedify inbox
は終了時に、遭遇したすべてのピア(peer)サーバーにDelete(Application)
アクティビティを送信するようになりました。これは一般的にアカウントを削除する際に送信されるアクティビティであり、一時的なアクターに関連する残存データが他のサーバーに残らないようにするのに役立ちます。
PostgreSQLドライバー
KvStore
およびMessageQueue
インターフェースのPostgreSQLドライバーを実装する@fedify/postgresパッケージが同時にリリースされました。
PostgreSQLドライバーはプロダクションで十分に使用できるバックエンドで、特にすでにPostgreSQLを使用しているプロジェクトにおすすめです。
また、fedify init
コマンドでもPostgreSQLドライバーを選択できるオプションが追加されました。
Fedify 1.0.0を祝して
バージョン1.0.0がリリースされたことで、Fedifyは今後APIの下位互換性を最大限維持していく予定です。(もちろん、長期的には下位互換性を破壊する2.0.0が出る可能性もあります。)これまで正式バージョンが出ていなかったためFedifyの使用を躊躇していた方々にとっては良いニュースになるでしょう!
Fedify 1.0.0はJSRおよびnpmで今すぐ入手できます:
deno add jsr:@fedify/fedify
npm add @fedify/fedify
それでは、今後さらに多くのサービスがActivityPubをサポートすることを願って、この記事を締めくくります!