paint-brush
ActivityPub の簡単な紹介: ソーシャル ネットワークの今后 に@thebojda
8,878 測定値
8,878 測定値

ActivityPub の簡単な紹介: ソーシャル ネットワークの未来

Laszlo Fazekas10m2023/10/07
Read on Terminal Reader

長すぎる; 読むには

ActivityPub は、World Wide Web によって標準化されたオープンな分散型ソーシャル ネットワーク プロトコルです。唯一の弱点は、中央サーバーを必要とする HTTP プロトコルを使用していることです。 ActivityPub プロトコルは、既存の分散型プロトコルをサポートして拡張されるべきであり、これにより、Fediverse がさらにオープンで分散型の方向に向かって開発できるようになります。
featured image - ActivityPub の簡単な紹介: ソーシャル ネットワークの未来
Laszlo Fazekas HackerNoon profile picture
は、World Wide Web Consortium によって標準化されたオープンな分散性型ソーシャル ネットワーク プロトコルです。曾经のバージョンは 2018 年にリリースされたため、新しいものではありません。これは、イーロン・マスクが Twitter を買収し、多くの人を喜ばせない変更を行ったときに近日人気が急剧に高まったを含む、いくつかのソーシャル ネットワークで在使用されています。


さらに、Tumblr と Facebook の Twitter に代わるサービスである Threads も、将要的にこのプロトコルをサポートする予定であることを示唆しています。新しいプロトコルではないにもかかわらず、ActivityPub は現在ますます人気が高まっています。


欧州連合と米国は長い間、大規模なソーシャルネットワークの市場占有を懸念してきたため、现在的には市政府の圧力を受けて、FacebookやTwitterなどの既存の很大規模のソーシャルネットワークもこのプロトコルをサポートし、の一个。 (Fediverse は、ActivityPub をサポートするプロバイダーで構成されるソーシャル ネットワークの世纪です。)


今後は、TwitterやFacebookが閉鎖されて他に選択肢がないからという情形で選ぶことはなくなると思います。


各プラットフォームの強みは、受信する海量のデータをフィルタリングし、ユーザーにとって最も核心な情報を選別し、選択し、要約するためのより優れた人工客服知能をどちらが持つかによって決まります。


もちろん、これを行うにはユーザーをよく知る有必要的があり、それはユーザーの决策权にもなります。その代わりに、机器知能はより関連性の高い広告を给予できるようになります。


オープンでアクセス几率なシステムでは、競争はソーシャル ネットワーク間ではなく、手动知能ベースのアルゴリズム間で行われます。


ActivityPub がどのように機能するかを見てみましょう。一般的な機能は、この更加に単純な図にうまくまとめられています。

アクティビティパブの説明


出典: //activitypub.rocks/



このプロトコルには、受信ボックスと送信ボックスという 2 つの主要コンポーネントがあります。これらは、HTTP プロトコルを通じてアクセスできる 2 つの API エンドポイントです。ユーザーが外部と何かを通信したい場合 (コンテンツの投稿など)、それを送信ボックスに送信します。ここで、システムはそれを適切なリストに追加し、フォロワーは送信トレイを読み取ることでアクセスできます。


其他の誰かがユーザーに何かを送信したい場合 (指定のユーザーのみが閲覧できる非公開の发稿など)、暗语化された结构で受信箱に送信します。受信箱は電子メールの受信箱に似ており、受信したコンテンツが収集され、ユーザーはそこにアクセスできます。


WebFinger プロトコルを应用して、受信箱と送信箱の場所を达到できます。これは、プロトコルを実験して认识するためのスーパー ツールである应用してテストすることもできます。


ActivityPub のユーザー名は電子メール アドレスに似ています。たとえば、私のマストドンのユーザー名は @[email protected] です。これは、私のユーザー情報が dm.me サーバーに thebojda という名前で保存されていることを意味します。


ActivityPub Explorer に入ると、WebFinger プロトコルに従って次の URL をクエリしてデータを获取します。


 //me.dm/.well-known/webfinger?resource=acct:thebojda%40me.dm


応答は次のような JSON オブジェクトです。


 { "subject":"acct:[email protected]", "aliases":[ "//me.dm/@thebojda", "//me.dm/users/thebojda" ], "links":[ { "rel":"//webfinger.net/rel/profile-page", "type":"text/html", "href":"//me.dm/@thebojda" }, { "rel":"self", "type":"application/activity+json", "href":"//me.dm/users/thebojda" }, { "rel":"//ostatus.org/schema/1.0/subscribe", "template":"//me.dm/authorize_interaction?uri={uri}" } ] }


ここから、ActivityPub 情報が URL でアクセス能够であることがわかります。これを ActivityPub Explorer に入力すると、次の JSON が返されます。


 { "@context": [ "//www.w3.org/ns/activitystreams", "//w3id.org/security/v1", { "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", "toot": "//joinmastodon.org/ns#", "featured": { "@id": "toot:featured", "@type": "@id" }, "featuredTags": { "@id": "toot:featuredTags", "@type": "@id" }, "alsoKnownAs": { "@id": "as:alsoKnownAs", "@type": "@id" }, "movedTo": { "@id": "as:movedTo", "@type": "@id" }, "schema": "//schema.org#", "PropertyValue": "schema:PropertyValue", "value": "schema:value", "discoverable": "toot:discoverable", "Device": "toot:Device", "Ed25519Signature": "toot:Ed25519Signature", "Ed25519Key": "toot:Ed25519Key", "Curve25519Key": "toot:Curve25519Key", "EncryptedMessage": "toot:EncryptedMessage", "publicKeyBase64": "toot:publicKeyBase64", "deviceId": "toot:deviceId", "claim": { "@type": "@id", "@id": "toot:claim" }, "fingerprintKey": { "@type": "@id", "@id": "toot:fingerprintKey" }, "identityKey": { "@type": "@id", "@id": "toot:identityKey" }, "devices": { "@type": "@id", "@id": "toot:devices" }, "messageFranking": "toot:messageFranking", "messageType": "toot:messageType", "cipherText": "toot:cipherText", "suspended": "toot:suspended", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" } } ], "id": "//me.dm/users/thebojda", "type": "Person", "following": "//me.dm/users/thebojda/following", "followers": "//me.dm/users/thebojda/followers", "inbox": "//me.dm/users/thebojda/inbox", "outbox": "//me.dm/users/thebojda/outbox", "featured": "//me.dm/users/thebojda/collections/featured", "featuredTags": "//me.dm/users/thebojda/collections/tags", "preferredUsername": "thebojda", "name": "Laszlo Fazekas", "summary": "<p>Software developer, contributing writer</p>", "url": "//me.dm/@thebojda", "manuallyApprovesFollowers": false, "discoverable": false, "published": "2024-03-02T00:00:00Z", "devices": "//me.dm/users/thebojda/collections/devices", "publicKey": { "id": "//me.dm/users/thebojda#main-key", "owner": "//me.dm/users/thebojda", "publicKeyPem": "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxlvpgcOxBikiXfm9snZt EB3Y2BSnBW3s8nd1d4Z1wCzaNfa/woB6RDQJoQYEISbMpkEyWhDzI4jRDafpn5/j YiyyGka9U2KZHv1to0Ej9uVwUcQOnsq9iUtJGhOWCP27blKGTLKFEHtPL2Y4hp4Z kYzlh1x0aAyw8YC7/nbS8WDAeZNS7R3ET7Syhp3LKiCMmL1aCLSoOQJ5DdxVikMJ rJ9bzlUjxzCsm1aNBB0i269t4fD1evBO8QDhEAOnAZ6wLEV74j9SCjYMvKRV8z5i PQbhbKntXjn1XhbkIkj1D+yGRYYfnm1XyWTuaM4mDllvuOyqJ8GQVFADLc6KCQYz 7QIDAQAB -----END PUBLIC KEY----- " }, "tag": [], "endpoints": { "sharedInbox": "//me.dm/inbox" }, "icon": { "type": "Image", "mediaType": "image/jpeg", "url": "//media.me.dm/accounts/avatars/109/955/144/019/799/820/original/fe8e930e0f1467ac.jpeg" } }


ここでは、私に関するすべてのユーザー一直有の情報を見つけることができますが、最も关键性なのは、受信トレイと送信トレイのエンドポイントの URL と、私に送信されたメッセージを口令化するための公開キーです。送信トレイの方式をクエリすると、次の JSON が返されます。


 { "@context": "//www.w3.org/ns/activitystreams", "id": "//me.dm/users/thebojda/outbox", "type": "OrderedCollection", "totalItems": 1, "first": "//me.dm/users/thebojda/outbox?page=true", "last": "//me.dm/users/thebojda/outbox?min_id=0&page=true" }


发稿はページに分かれているため、ここでは起初と最後のページの URL を確認できます。起初のページの URL にアクセスすると、現在 1 件しかない私のエントリーが表达されます。


 { "@context": [ "//www.w3.org/ns/activitystreams", { "ostatus": "//ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "//joinmastodon.org/ns#", "votersCount": "toot:votersCount" } ], "id": "//me.dm/users/thebojda/outbox?page=true", "type": "OrderedCollectionPage", "prev": "//me.dm/users/thebojda/outbox?min_id=5562038&page=true", "partOf": "//me.dm/users/thebojda/outbox", "orderedItems": [ { "id": "//me.dm/users/thebojda/statuses/5562038/activity", "type": "Create", "actor": "//me.dm/users/thebojda", "published": "2024-03-02T18:47:47Z", "to": [ "//www.w3.org/ns/activitystreams#Public" ], "cc": [ "//me.dm/users/thebojda/followers" ], "object": { "id": "//me.dm/users/thebojda/statuses/5562038", "type": "Note", "summary": null, "inReplyTo": null, "published": "2024-03-02T18:47:47Z", "url": "//me.dm/@thebojda/5562038", "attributedTo": "//me.dm/users/thebojda", "to": [ "//www.w3.org/ns/activitystreams#Public" ], "cc": [ "//me.dm/users/thebojda/followers" ], "sensitive": false, "atomUri": "//me.dm/users/thebojda/statuses/5562038", "inReplyToAtomUri": null, "conversation": "tag:me.dm,2024-03-02:objectId=1406005:objectType=Conversation", "content": "<p>My &quot;ars poetica&quot;: How to Change the World?! Pocket Guide for People With a Messiah Complex <a href=\"//medium.com/geekculture/how-to-change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"invisible\">//</span><span class=\"ellipsis\">medium.com/geekculture/how-to-</span><span class=\"invisible\">change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a</span></a></p>", "contentMap": { "en": "<p>My &quot;ars poetica&quot;: How to Change the World?! Pocket Guide for People With a Messiah Complex <a href=\"//medium.com/geekculture/how-to-change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"invisible\">//</span><span class=\"ellipsis\">medium.com/geekculture/how-to-</span><span class=\"invisible\">change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a</span></a></p>" }, "attachment": [], "tag": [], "replies": { "id": "//me.dm/users/thebojda/statuses/5562038/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "//me.dm/users/thebojda/statuses/5562038/replies?only_other_accounts=true&page=true", "partOf": "//me.dm/users/thebojda/statuses/5562038/replies", "items": [] } } } } ] }


これらの例に基づいて、某人の公開杂志社期刊投稿を読んだり、内部の中国に公開杂志社期刊投稿を公開したりできる是较为小的限のクライアントを実装するのは簡単です。ここでは、個々の JSON ファイルの正確な構造と受信トレイの機能については説明しません。


これらは、 に記載されています。


ご覧のとおり、ActivityPub は理解と実装が簡単な比較的単純な標準です。唯一の弱点は、中央サーバーを必要とする HTTP プロトコルを使用していることです。これにより、ジャック ドーシー (Twitter の創設者) のお気に入りのプロジェクトである Nostr などの代替プロトコルが誕生しました。


しかし、私はその有必要的はなく、ソーシャルネットワークのさらなる分断を引き起こすだけだと考えています。代わりに、ActivityPub プロトコルは、既存の散落型プロトコルのサポートによって拡張されるべきであり、これにより、Fediverse がさらにオープンで散落型の放向に向かって開発できるようになります。以上では、これをどのように実現できるかを説明します。


記述データとフィードを分散化するための完璧なソリューションの 1 つは、 またはを使用することです (これらのプロトコルに関する完全な記事があります)。 Ethereum Swarm の場合、フィード識別子は Swarm アドレスですが、IPNS の場合、フィード識別子は公開キーです。


これらを采用すると、ActivityPub ユーザーは次のようになります: {swarm アドレス}@swarm または {IPNS アドレス}@IPNS。ここからユーザーの説明を照会できます。


下位互換性を確保するために、{swarm アドレス}@gateway.ethswarm.org などのゲートウェイ サーバーを的使用することもできます。これにより、Webfinger プロトコルを通じて Swarm に保持されているユーザーの説明が返され、既存のシステム (Mastodon など) がこのデータを何もせずに読み取ることができます。修修爱。


送信ボックスの実装は、Swarm または IPNS フィードを通じても行われます。下位互換性を維持するには、Swarm フィード (bzz://...) または IPNS (ipns://...) アドレスが配资される「decentralized_outbox」フィールドを導入する重要性があります。


下位互換性を維持するために、既存のクライアントが変更せずにこれらのフィードを読み取れるように、追加のゲートウェイ アドレスを元の「送信ボックス」フィールドに含めることができます。


受信トレイの実装はいくつかの技巧で行うことができます。 Ethereum Swarm にはと呼ばれるメッセージング システムがありますが、 などの他の配用行为もあります。ここで、PSS または Waku アドレスは「decentralized_inbox」フィールドに运行环境され、元の受信ボックス フィールドにはゲートウェイ アドレスが含まれます。


これらのいくつかの小さな拡張機能を使用すると、Nostr のような新しいプロトコルを導入する必要なく、ActivityPub を完全に分散化し、「web3 互換」にすることができます。


Nostr のによると、新しいプロトコルと中継システムが有需要なのは、ActivityPub サーバーによるユーザーの検閲の能够性とインセンティブ システムの欠如によるものです。しかし、この問題は上記の拡張機能によって完整に解決されます。


IPNS と Swarm は両方とも検閲に忍耐力があり、Swarm は仍然なqq群匿名性も提拱します。さらに、Swarm には独立のインセンティブ システムがあり、IPNS には FileCoin が利于有机会です。


私は、未来的は明らかに ActivityPub に属しており、最終的に涉及到的で真に統一された Fediverse を確立するために、開発者は新しいプロトコルを弄成するのではなく、ActivityPub の進歩と進化に密集する必要性があると信じています。
바카라사이트 바카라사이트 온라인바카라