Fedify 1.6

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
Fedify 1.6.1のリリースを発表いたします。本バージョンは1.6.0の取り下げを受けた1.6シリーズの最初のリリースとなります。今回のリリースでは、Fedifyのデプロイメント方法を大幅に拡張し、フェディバース(fediverse)全体でのセキュリティ互換性を向上させる重要な新機能を導入しています。
🌐 Cloudflare Workers対応
Fedify 1.6ではCloudflare Workersへの正式対応を実現し、ActivityPubアプリケーションをエッジ環境でサーバーレス実行できるようになりました。
新しいコンポーネント
WorkersKvStore
: Cloudflare KV APIを使用し、Workers環境で永続ストレージを提供するキーバリューストア実装WorkersMessageQueue
: Cloudflare Queuesを活用し、信頼性の高いメッセージ処理を実現するメッセージキュー実装
主要機能
- Cloudflareのサーバーレスランタイムとのシームレスな統合
- Workersの
queue()
メソッドによる自動的なキューメッセージ処理 - Fedifyの暗号化処理に必要なNode.js compatibility flagのサポート
Federation.processQueuedTask()
メソッドによる手動キュー処理
完全な動作例については、FedifyリポジトリにあるCloudflare Workersのサンプル実装をご覧ください。
🏗️ フェデレーションビルダーパターン
Fedify 1.6ではFederationBuilder
クラスとcreateFederationBuilder()
関数を導入し、フェデレーションの遅延インスタンス化をサポートします。このパターンには以下のメリットがあります。
- 遅延インスタンス化: フェデレーションオブジェクトの作成前にディスパッチャーとリスナーを設定可能
- コード構成の改善: 循環依存を回避し、プロジェクト構造を改善
- Cloudflare Workers 互換性: リソースを引数として渡すバインディングベースアーキテクチャへの対応
- モジュラーセットアップ: 複雑なフェデレーションをインスタンス化前に段階的に構築可能
このビルダーパターンは、特に大規模なアプリケーションや、設定データが実行時に動的に取得されるCloudflare Workersのような環境で有用です。
🔐 HTTP Message Signatures(RFC 9421)
Fedify 1.6では、HTTP Signatures仕様の最終版となる公式HTTP Message Signatures標準(RFC 9421)仕様を実装しました。
ダブルノック機構
フェディバース全体での最大互換性を確保するため、Fedify 1.6ではインテリジェントなダブルノック機構を導入しています。
- 第一段階: 最新実装向けのRFC 9421(HTTP Message Signatures)
- フォールバック: レガシー互換性向けのDraft cavage版
- 適応キャッシング: 各サーバーがサポートするバージョンを記憶し、今後のリクエストを最適化
このアプローチにより、最新とレガシー両方のActivityPub実装との円滑な通信を確保できます。同時に、セキュリティ標準の最前線にFedifyを位置づけています。
相互運用性テスト
RFC 9421実装は、RFC 9421署名検証をサポートする既存のActivityPub実装との相互運用性について徹底的にテストされています。
- Mitra 4.4.0: Fedifyで生成したRFC 9421署名の検証に成功
- Mastodon 4.4.0開発版: FedifyのRFC 9421署名検証実装をテスト(Mastodon PR #34814をご参照ください。ただし、Mastodon 4.4.0はまだリリースされていません)
これらのテストにより、他のActivityPub実装がFedifyで生成したRFC 9421署名を正常に検証できることを確認し、エコシステムが徐々に公式仕様を採用していく中で、適切なフェデレーションが保証されます。これらの実装は現在RFC 9421署名の検証をサポートしていますが、まだ自身でRFC 9421署名を生成していません。Fedifyはこのモダンスタンダードの生成と検証の両方をサポートする最初のActivityPub実装の1つとなっています。
🔍 WebFinger機能強化
専用WebFingerルックアップ
新しいContext.lookupWebFinger()
メソッドにより、WebFingerデータへの直接アクセスが可能になりました。高レベルなContext.lookupObject()
メソッドでは実現できない、アカウント発見とリソース解決のより細かい制御を開発者に提供します。
🛠 Context API改善
コンテキストデータの置換
新しいContext.clone()
メソッドにより動的なコンテキストデータの置換が可能になり、リクエスト処理やデータフローの管理において、より高い柔軟性を提供します。特にミドルウェアの実装や複雑なリクエストルーティングを行う際に有用です。
🚀 移行時の考慮事項
後方互換性
Fedify 1.6は既存のアプリケーションとの完全な後方互換性を維持しています。新しいHTTP Message Signaturesとダブルノック機構は、コード変更なしで透過的に動作します。
Node.jsバージョン要件
重要: Fedify 1.6はNode.js環境においてNode.js 22.0.0以降を必要とします。この変更はDenoやBunランタイムを使用するアプリケーションには影響しません。現在Node.jsをご利用の方は、アップグレード前に環境がこの要件を満たしているかご確認ください。
新しいデプロイメント選択肢
新規デプロイメントでは、以下の利点からCloudflare Workersサポートの活用をご検討ください。
- 低レイテンシのグローバルエッジデプロイメント
- サーバーレススケーリングと自動リソース管理
- Cloudflareサービスエコシステムとの統合
🎯 今後の展望
Fedify 1.6は、フェディバース全体での幅広い互換性を維持するというフレームワークのコミットメントを保ちながら、デプロイメント選択肢の大幅な拡張を表しています。Cloudflare Workersサポートの追加により、フェデレーティッドアプリケーションの新しいアーキテクチャパターンが開かれ、RFC 9421実装により、Fedifyは新たなActivityPubセキュリティ標準に対応し続けています。
詳細な移行ガイド、APIドキュメント、サンプルについては、Fedifyドキュメントをご覧ください。サポートとディスカッションについては、MatrixまたはDiscordのコミュニティにご参加ください。