Please check the errata for any errors or issues reported since publication.
See also translations.
Copyright © 2018 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
ActivityPub ãããã³ã«ã¯ã[ActivityStreams] 2.0 ããŒã¿åœ¢åŒãåºãšãã éäžå€®éæš©åãœãŒã·ã£ã«ãããã¯ãŒã¯ãããã³ã«ã§ãããããã¯ã³ã³ãã³ãã®äœæãæŽæ°ãåé€ã®ããã®ã¯ã©ã€ã¢ã³ã-ãµãŒãé API ããã³ã éç¥ãšã³ã³ãã³ããé éããããã®é£åãµãŒãé API ãæäŸããã
ãã®ç¯ã¯ãçºè¡æç¹ã§ã®ãã®ææžã®ç¶æ ã説æããŠãããä»ã®ææžããã®ææžã«åã£ãŠä»£ããããšããããçŸåšã® W3C ã«ããçºè¡ç©ãš ãã®æè¡å ±åã®ææ°ç㯠https://www.w3.org/TR/ ã® W3C technical reports index ã«ããã
ãã®ææžã¯ Social Web Working Group ã«ãã£ãŠ å§åãšããŠçºè¡ãããã
å šãŠã®é¢å¿ã®ããé¢ä¿è ã¯ãå®è£ ãã Working Group ã® Issue tracker ã éãããã°ã¬ããŒãããã®ä»ã®ã³ã¡ã³ããæäŸããããå§ãããããã㯠Social Web Community Group ã«ãã£ãŠ è°è«ããããã®ä»æ§ã®å°æ¥ã®ããŒãžã§ã³ã§èæ ®ãããã
Working Group ã® implementation report ãåç §ã®ããšã
ãã®ææžã¯ãW3Cã¡ã³ããŒããœãããŠã§ã¢éçºè ãããã³ãã®ä»ã®W3Cã°ã«ãŒããšé¢ä¿è ã«ãã£ãŠã¬ãã¥ãŒãããW3Cå§åãšããŠãã£ã¬ã¯ã¿ãŒã«ãã£ãŠæ¿èªãããŠããŸããããã¯å®å®ããææžã§ãããåèè³æãšããŠäœ¿çšããããä»ã®ææžããåŒçšãããããããšãã§ããããã®å§åãäœæããäžã§ã®W3Cã®åœ¹å²ã¯ã仿§ã«æ³šæãåèµ·ãããã®åºç¯ãªå±éãä¿é²ããããšã§ãããããã¯ãWebã®æ©èœæ§ãšçžäºéçšæ§ãåäžãããã
ãã®ææžã¯ãW3C Patent Policyã®äžã§æŽ»åããŠããã°ã«ãŒãã«ãã£ãŠäœæããããW3Cã¯ãã°ã«ãŒãã®ææç©ã«é¢é£ããŠäœæãããç¹èš±é瀺ã®å ¬éãªã¹ããä¿å®ããŠããããã®ããŒãžã«ã¯ç¹èš±ãé瀺ããããã®æé ãå«ãŸããŠãããEssential Claim(s)ãå«ããšä¿¡ããç¹èš±ã«ã€ããŠå®éã®ç¥èãæããè ã¯ãW3C Patent Policy第6æ¡ã«åŸã£ãŠæ å ±ãé瀺ããªããã°ãªããªãã
ãã®ææžã¯ã1 March 2017 W3C Process Documentã«æºæ ããã
ActivityPub ã¯äºã€ã®å±€ãæäŸããŸã:
ActivityPub å®è£ ã¯ããããã®äžã€ã ããå®è£ ããŠãè¯ãããäž¡æ¹ãšãå®è£ ããŠã è¯ãã§ããããããäžæŠäžã€ãå®è£ ããã°ãããäžã€ãå®è£ ããã®ã«ããã»ã©å€ãã® ã¹ãããã¯ãªããäž¡æ¹ã«å€ãã®å©çããããŸã (web ãµã€ããéäžå€®éæš©åãœãŒã·ã£ã« web ã«ããæ§ã ãªãœãŒã·ã£ã« web ãµã€ãã§ åäœããã¯ã©ã€ã¢ã³ããšã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã䜿ããããã«ããŸã)ã
ActivityPub ã§ã¯ããŠãŒã¶ãŒã¯ãµãŒãäžã®ã¢ã«ãŠã³ããéã㊠ã¢ã¯ã¿ãŒ ãšããŠè¡šçŸãããŸããç°ãªããµãŒãã®ãŠãŒã¶ãŒã¢ã«ãŠã³ãã¯ããããç°ãªã£ãã¢ã¯ã¿ãŒã«å¯Ÿå¿ããŸããå šãŠã®ã¢ã¯ã¿ãŒã¯æ¬¡ã®ãã®ãæã¡ãŸã:
inbox: äžçäžããã¡ãã»ãŒãžãåãåãå Žæoutbox: ä»ãžã¡ãã»ãŒãžãéãå Žæ
ãããã¯ãšã³ããã€ã³ããã€ãŸãå®éã«ã¯ ActivityPub actor ã® ActivityStreams èšè¿°ã«ããåãªã URL ã§ãã(ActivityStreams ã«ã€ããŠã¯åŸã«è§ŠããŸãã)
以äžã¯ãæãå Alyssa P.Hacker ã®èšé²ã®äŸã§ã:
{"@context": "https://www.w3.org/ns/activitystreams",
"type": "Person",
"id": "https://social.example/alyssa/",
"name": "Alyssa P. Hacker",
"preferredUsername": "alyssa",
"summary": "Lisp enthusiast hailing from MIT",
"inbox": "https://social.example/alyssa/inbox/",
"outbox": "https://social.example/alyssa/outbox/",
"followers": "https://social.example/alyssa/followers/",
"following": "https://social.example/alyssa/following/",
"liked": "https://social.example/alyssa/liked/"}ActivityPub ã¯èªåœãšã㊠[ActivityStreams] ã䜿ããŸããããã¯ãªããªãçŽ æŽãããããšã§ã; ActivityStreams ã¯ãœãŒã·ã£ã«ãããã¯ãŒã¯ã« æµããå šãŠã®ã¢ã¯ãã£ããã£ãšå 容ã衚çŸããå šãŠã®äžè¬çãªçšèªã å«ãã§ããããã§ãããããã ActivityStreams ã¯æ¢ã«ããªããå¿ èŠãªå šãŠã®èªåœã å«ãã§ããã§ãããããããããã§ãªããã°ãActivityStreams 㯠[JSON-LD] ã䜿ã£ãŠæ¡åŒµã§ããŸããããªãã JSON-LD ã«ã€ããŠç¥ã£ãŠãããªããJSON-LD ã«ãã£ãŠæäŸããã ã¯ãŒã«ãªãªã³ã¯ä»ãããŒã¿ææ³ã®æçšæ§ã䜿ããŸããããããã§ãªããŠããå¿é ã¯èŠããŸãã; JSON-LD ææžãš ActivityStreams 㯠ã©ã¡ããåãªãåçŽãª JSON ãšããŠçè§£ããã°ããã§ãã(ããæ¡åŒµã远å ããããšããŠãããªãããããæ¬åœã« JSON-LD ãå©ãã«ãªããšããã§ãã)
ããŠãAlyssa ã¯åœŒå¥³ã®å人ãšè©±ããããšæã£ãŠããŠã圌女ã®å人ã圌女㚠話ããããšæã£ãŠããŸã!幞ãã«ããããã® "inbox" ãš "outbox" ããã®å©ãã«ãªããŸãããããã¯ãããã GET ãš POST ã§ç°ãªã£ãæ¯ãèããããŸãããããã©ã®ããã«åãã®ããèŠãŠã¿ãŸããã:

ã§ã¯ãããã§ããããã§ã:
ãã¡ãããããæåŸã®ãã® (誰ãã® outbox ã GET ãã) ãã人ã ã éã£ãŠãããã®ãèŠãå¯äžã®æ¹æ³ãªããããã¯ãšãŠãå¹çç㪠é£åãããã³ã«ãšã¯èšããŸãã!å®éã«ã¯ãé£åã¯æ®éãµãŒããä»ã®ãµãŒãã®actorã®inboxã«éããšãã«èµ·ãããŸãã
äŸãèŠãŠã¿ãŸããã!Alyssa ã¯å人ã§ãã Ben Bitdiddle ãšè©±ããããšããŸãã圌女ã¯åœŒã«æè¿æ¬ã貞ããŠããŠããããè¿ããŠãããã確èªãããã§ãã以äžã¯ãåœŒå¥³ãæžãããActivityStreams ãªããžã§ã¯ããšããŠã® ã¡ãã»ãŒãžã§ãã
{"@context": "https://www.w3.org/ns/activitystreams",
"type": "Note",
"to": ["https://chatty.example/ben/"],
"attributedTo": "https://social.example/alyssa/",
"content": "Say, did you finish reading that book I lent you?"}ãã㯠Ben ã«åãã note ã§ãã圌女ã¯ããã圌女㮠outbox ã« POST ããŸãã

ããã¯éã¢ã¯ãã£ããã£ãªããžã§ã¯ããªã®ã§ããµãŒã㯠ããã¯æ°ããäœæããããªããžã§ã¯ããšèªèããããã Create ã¢ã¯ãã£ããã£ã«ã©ããã³ã°ããŸãã(ActivityPub ã§éããã Activity ã¯äžè¬çã« ãã actor ããããªããžã§ã¯ãã«å¯ŸããŠè¡ãããã¢ã¯ãã£ããã£ããšãã ãã¿ãŒã³ã«åŸããŸãããã®å Žåã¯ãã¢ã¯ãã£ããã£ã¯ Person ã«ãã£ãŠæçš¿ããã Note ãªããžã§ã¯ãã® Create ã§ãã)
{"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"id": "https://social.example/alyssa/posts/a29a6843-9feb-4c74-a7f7-081b9c9201d3",
"to": ["https://chatty.example/ben/"],
"actor": "https://social.example/alyssa/",
"object": {"type": "Note",
"id": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19",
"attributedTo": "https://social.example/alyssa/",
"to": ["https://chatty.example/ben/"],
"content": "Say, did you finish reading that book I lent you?"}}Alyssa ã®ãµãŒã㯠Ben ã® ActivityStreams actor ãªããžã§ã¯ããæ¢ãã 圌㮠inbox ãšã³ããã€ã³ããèŠã€ãã圌㮠inbox ã«åœŒå¥³ã®ãªããžã§ã¯ãã POST ããŸãã

æè¡çã«ã¯ããã¯äºã€ã«åå²ãããã¹ãããã§ãâŠäžã€ç®ã¯ ã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ãããäžã€ã¯ãµãŒããããµãŒããžã®éä¿¡(é£å)ã§ãããããããã®äŸã§ã¯äž¡æ¹ã䜿ã£ãŠããã®ã§ã outbox ãã inbox ãžã®äžé£ã®æµããšããŠã®æçš¿ãšæœè±¡åããŠèããããŸã:

ãã°ããã!ãã°ããåŸã«ãAlyssa ã¯åœŒå¥³ãåãåã£ãæ°ããã¡ãã»ãŒãžã ãã§ãã¯ããŸãã圌女ã®ã¹ããŒããã©ã³ã¯åœŒå¥³ã® inbox ã GET ã§ããŒãªã³ã°ãã å人ãæçš¿ãã倧éã®ç«åç»ãå§ãæçš¿ããç¥ã®åçã®äžããã åœŒå¥³ã¯æ¬¡ã®ã¡ãã»ãŒãžãèŠã€ããŸã:
{"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"id": "https://chatty.example/ben/p/51086",
"to": ["https://social.example/alyssa/"],
"actor": "https://chatty.example/ben/",
"object": {"type": "Note",
"id": "https://chatty.example/ben/p/51085",
"attributedTo": "https://chatty.example/ben/",
"to": ["https://social.example/alyssa/"],
"inReplyTo": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19",
"content": "<p>Argh, yeah, sorry, I'll get it back to you tomorrow.</p>
<p>I was reviewing the section on register machines,
since it's been a while since I wrote one.</p>"}}Alyssa ã¯ã»ã£ãšããŠãBen ã®æçš¿ã«ãããããããŸã:
{"@context": "https://www.w3.org/ns/activitystreams",
"type": "Like",
"id": "https://social.example/alyssa/posts/5312e10e-5110-42e5-a09b-934882b3ecec",
"to": ["https://chatty.example/ben/"],
"actor": "https://social.example/alyssa/",
"object": "https://chatty.example/ben/p/51086"}圌女ã¯ãã®ã¡ãã»ãŒãžã圌女㮠outbox ã« POST ããŸãã(ããã¯ã¢ã¯ãã£ããã£ãªã®ã§ã圌女ã®ãµãŒã㯠ããã Create ãªããžã§ã¯ãã§ã©ããããå¿ èŠããªãããšãåãã£ãŠããŸãã)
幞ããªæ°åã«ãªã£ãã®ã§ã圌女ã¯åœŒå¥³ã®ãã©ãã¯ãŒã«å ¬éã¡ãã»ãŒãžã æçš¿ããããšã«ããŸãããã»ã©ãªãããŠä»¥äžã®ã¡ãã»ãŒãžã圌女㮠followers ã³ã¬ã¯ã·ã§ã³ã®å šãŠã® ã¡ã³ããŒã«éä¿¡ããããŸãããã¯ç¹æ®ãª Public ã°ã«ãŒãå®ã«ãªã£ãŠããã®ã§ã 誰ã§ãäžè¬ã«èªãããšãã§ããŸãã
{"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"id": "https://social.example/alyssa/posts/9282e9cc-14d0-42b3-a758-d6aeca6c876b",
"to": ["https://social.example/alyssa/followers/",
"https://www.w3.org/ns/activitystreams#Public"],
"actor": "https://social.example/alyssa/",
"object": {"type": "Note",
"id": "https://social.example/alyssa/posts/d18c55d4-8a63-4181-9745-4e6cf7938fa1",
"attributedTo": "https://social.example/alyssa/",
"to": ["https://social.example/alyssa/followers/",
"https://www.w3.org/ns/activitystreams#Public"],
"content": "Lending books to friends is nice. Getting them back is even nicer! :)"}}ãã®ä»æ§ã«ããããéèŠç¯çãšãããŠããç¯ããã³ãå šãŠã®äœæã¬ã€ãã©ã€ã³ã å³ãäŸã泚èšã¯éèŠç¯çã§ããããã®ä»æ§ã«ããããã®ä»ã®å šãŠã¯èŠç¯çã§ããã
ããŒã¯ãŒãMAY, MUST, MUST NOT, SHOULD, SHOULD NOT ã¯ã [RFC2119] ã« èšè¿°ãããŠããããã«è§£éãããã
ãã®ä»æ§ã¯ã坿¥ã«é¢é£ãçžäºã«äœçšããäºã€ã®ãããã³ã«ãå®çŸ©ãã:
ActivityPub 仿§ã¯ãäžæŠãããã®ã©ã¡ããã®ãããã³ã«ãå®è£ ããããšã ããçæ¹ãžã®å¯Ÿå¿ã¯ã»ãšãã©è¿œå ã®äœæ¥ãäžèŠã§ããããã«èšèšãããŠãããããããããã§ããµãŒãã¯ããçæ¹ãªãã§çæ¹ãå®è£ ã§ãããããã¯äžã€ã®æºæ ã¯ã©ã¹ãäžãã:
ããã¯ã仿§ã®ãã¡ãé£åãããã³ã«ã®å®è£ ã«ã®ã¿é©çšããããã®ã«ä»èšããããããã«ãèŠä»¶ãæå®ãããå Žåã(ã¯ã©ã€ã¢ã³ã-ãµãŒããããã³ã«ã§ã¯) ã¯ã©ã€ã¢ã³ããšãµãŒãã®ã©ã¡ãã«é©çšãããããæç€ºããã ãµãŒãéãããã³ã«ã§ã¯éä¿¡ãµãŒããšåä¿¡ãµãŒãã®ã©ã¡ããåç §ãããã æç€ºãããã
ãªããžã§ã¯ã㯠[ActivityStreams] ãš ActivityPub äž¡æ¹ã®äžæ žãšãªãæŠå¿µã§ããããªããžã§ã¯ãã¯ãã°ãã° Activity ã§ã©ããã³ã°ãããèªèº«ã Object ã® ãµãã¯ã©ã¹ã§ãã Collection ã«å«ãŸããã[Activity-Vocabulary] ææžãç¹ã« Core Classes ãåç §ã®ããš; ActivityPub ã¯ãã®èªåœã®ãããã³ã°ã«éåžžã«å¯æ¥ã«åŸãã
ActivityPub 㯠ActivityStreams ã«ãã£ãŠæäŸããããã®ã«å ããŠããã€ãã® çšèªãå®çŸ©ããŠããããããã®çšèªã¯ https://www.w3.org/ns/activitystreams ã§ ActivityPub JSON-LD context ãšããŠæäŸããããå®è£
è
ã¯ãã®ãªããžã§ã¯ãå®çŸ©ã« ActivityPub context ãå«ãã¹ãã§ãã(SHOULD)ãå®è£
è
ã¯è¿œå ã® context ãå¿
èŠã«å¿ããŠå«ãã§ãè¯ã(MAY)ã
ActivityPub 㯠ActivityStreams ã® URI / IRI 仿§ ãšåããã®ãå ±æããã
ãµãŒãã¯ã³ã³ãã³ãã¹ããŒãã£ã³ã°æ»æãé²ãããã«åä¿¡ããã³ã³ãã³ãã æ€èšŒããã¹ãã§ãã(SHOULD)ã(ãµãŒãã¯å°ãªããšãããã®ãªããžã§ã¯ãããã®çºä¿¡å ããåä¿¡ããããšããã§ãã¯ããã®ãš åããããé 匷ãªäœããããã¹ãã§ãããã å¯èœã§ããã°çœ²åæ€èšŒã®ãããªæ©æ§ãæãŸããã)ç¹å®ã®æ€èšŒæ©æ§ããã®ææžã§åœä»€çã«æå®ããããšã¯ããªããã ããã€ãã®ææ¡ãšè¯ãç¿æ £ã«ã€ããŠã¯ ã»ãã¥ãªãã£äžã®èæ ®äºé ãåç §ããŠã»ããã
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Like",
"actor": "https://example.net/~mallory",
"to": ["https://hatchat.example/sarah/",
"https://example.com/peeps/john/"],
"object": {
"@context": {"@language": "en"},
"id": "https://example.org/~alice/note/23",
"type": "Note",
"attributedTo": "https://example.org/~alice",
"content": "I'm a goat"
}
}id ã®åç
§å
ãååŸããŠããããååšããŠåŠ¥åœãªãªããžã§ã¯ãã§ããã ãã®ãªããžã§ã¯ããäžæ£ç¢ºã§ã¯ãªãããšã確èªããã¹ãã§ããã(ãã®äŸã§ã¯ãMallory ã Alice ã«ãã£ãŠæçš¿ããããšãããŠãããªããžã§ã¯ãã æé ããŠããå¯èœæ§ãããã)[ActivityStreams] ã®å šãŠã®ãªããžã§ã¯ãã¯ãŠããŒã¯ãªã°ããŒãã«èå¥åã ä»ããã¹ããšãããŠãããActivityPub ã¯ãã®èŠæ±ãæ¡åŒµãã; ActivityPub ãããã³ã«ã§é åžãããå šãŠã®ãªããžã§ã¯ãã¯ã æå³çã«äžæçãªãã®(ããçš®ã®ãã£ããã¡ãã»ãŒãžãã²ãŒã éç¥ã®ãããªãçåœã® ã¢ã¯ãã£ããã£ã§æ€çŽ¢ãããããšãæå³ããŠããªããã®)ã§ãªãéãã ãŠããŒã¯ãªã°ããŒãã«èå¥åãæããªããã°ãªããªã(MUST)ããããã®èå¥åã¯ä»¥äžã®ã°ã«ãŒãã®ã©ããäžã€ã§ãªããã°ãªããªã:
null ãªããžã§ã¯ããšããŠæå®ããã ID; ãã®å Žåã¯ç¡åãªããžã§ã¯ã(芪ã³ã³ããã¹ãã®äžéš) ãæå³ãããèå¥åã¯ãã¢ã¯ãã£ããã£ãæå³çã«äžæçãªãã®ã§ãªãéãã ãµãŒããããµãŒããžã®éä¿¡ã§æçš¿ããã¢ã¯ãã£ããã£ã§ã¯ æäŸããªããã°ãªããªã(MUST)ãããããã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ã§ã¯ãid ã®æå®ãªãã« outbox ã«æçš¿ããããªããžã§ã¯ããåä¿¡ãããµãŒãã¯ã ãã®ã¢ã¯ã¿ãŒã®åå空éã® ID ãå²ãåœãŠãæçš¿ããããªããžã§ã¯ãã« ãããæ·»ä»ããã¹ãã§ãã(SHOULD)ã
å šãŠã®ãªããžã§ã¯ãã¯ä»¥äžã®å±æ§ãæã€:
id ã¯çç¥ããŠãè¯ã(MAY))ãã¢ã¯ãã£ããã£ãååŸããããã«ã ãªããžã§ã¯ãã® id 屿§ã«å¯Ÿã㊠HTTP GET ã¡ãœããã䜿ãããšãããããªã¯ãšã¹ãã«å¯Ÿããã¬ã¹ãã³ã¹ãšããŠè¿ãããŒã¿ã®çš®é¡ãéžæããããã«ã ãµãŒã㯠[RFC7231] ã§å®çŸ©ãããŠãã HTTP content negotiation ã䜿ã£ãŠãè¯ã(MAY)ãã application/ld+json; profile="https://www.w3.org/ns/activitystreams" ãžã®è¿çãšã㊠ActivityStreams ãªããžã§ã¯ã衚çŸã衚çŸããªããã°ãªãã(MUST)ã application/activity+json ãžã®è¿çãšããŠã ActivityStreams 衚çŸã衚çŸããã¹ãã§ãã(SHOULD)ãã¯ã©ã€ã¢ã³ãã¯ã¢ã¯ãã£ããã£ãååŸããããã« Accept ãããã« application/ld+json; profile="https://www.w3.org/ns/activitystreams" ã¡ãã£ã¢ã¿ã€ããæå®ããªããã°ãªããªã(MUST)ã
ãµãŒãã¯åè¿°ããèŠæ±ã«åŸããªããªã¯ãšã¹ãã«å¯ŸããŠä»ã®æ¯ãèãã å®è£ ããŠãè¯ã(MAY)ã(äŸãã°ããµãŒãã¯è¿œå ã§ã¬ã¬ã·ãŒãªãããã³ã«ãå®è£ ããŠãè¯ããã ãããªãœãŒã¹ã® HTML 衚çŸãš ActivityStreams 衚çŸã§åã URI ã䜿ã£ãŠãè¯ãã)
ãµãŒã㯠B.1 èªèšŒãšèªå¯ ã§æå®ãããèªèšŒãèŠæ±ãããã ç¬èªã®èªèšŒèŠåãå®è£ ãããããŠãè¯ã(MAY)ããµãŒãã¯ãèªèšŒãã§ãã¯ãééããªãã£ããªã¯ãšã¹ãã«å¯ŸããŠé©å㪠HTTP ãšã©ãŒã³ãŒããã ãªããžã§ã¯ãã®ååšããã©ã€ããŒããªãã®ãšèããããå Žå㯠403 Forbidden ãšã©ãŒã³ãŒãã§å€±æããã¹ãã§ãã(SHOULD)ããã©ã€ããŒãã¿ãŒã²ããã®ååšãå ¬éããããªãçºä¿¡å ãµãŒãã¯ã 代ããã« 404 Not Found ã®ã¹ããŒã¿ã¹ã³ãŒããè¿ããŠãè¯ã(MAY)ã
[Activity-Vocabulary] ã§å®çŸ©ãããŠããå
šãŠã®å±æ§ã«å ããŠã ActivityPub 㯠Object ã« source 屿§ãæäŸããããã«æ¡åŒµãããsource 屿§ã¯ãcontent ããŒã¯ã¢ããã ç±æ¥ãããªãããã®ãœãŒã¹ãåºæã®åœ¢åŒãšããŠäŒãããã ã¯ã©ã€ã¢ã³ãã«ããå°æ¥ã®ç·šéã«å¯Ÿå¿ããããšãæå³ããŠãããäžè¬çã«ãã¯ã©ã€ã¢ã³ã㯠source ãã content ãžã®å€æãè¡ããéã¯è¡ããªãã
source ã®å€ã¯ã ãœãŒã¹æ
å ±ãæäŸããããã«èªèº«ã® content ãš mediaType ãã£ãŒã«ããæã€ãªããžã§ã¯ãã§ããã
{
"@context": ["https://www.w3.org/ns/activitystreams",
{"@language": "en"}],
"type": "Note",
"id": "http://postparty.example/p/2415",
"content": "<p>I <em>really</em> like strawberries!</p>",
"source": {
"content": "I *really* like strawberries!",
"mediaType": "text/markdown"}
}äžè¬çã«ãå
ã
äœæããã®ãšåããœãŒã¹åœ¢åŒã§ãŠãŒã¶ãŒã«å
ã®æçš¿ãç·šéãããã®ã æåã§ãããããããå
šãŠã®ã¯ã©ã€ã¢ã³ããå
šãŠã®ãœãŒã¹åã«å¯Ÿããããã€ã³ã¿ãŒãã§ãŒã¹ã å®å®ããŠæäŸã§ããããã§ã¯ãªãã ã¯ã©ã€ã¢ã³ã㯠source ãã content ãžã®å€æãè¡ãããããšã æ³å®ããã®ã§ã ã¯ã©ã€ã¢ã³ãã«ãã£ãŠã¯ãä»ã®ã¯ã©ã€ã¢ã³ããã©ã®ããã«åäœããããç¥ããªã ã¡ãã£ã¢åã§åäœãããããããªããã¯ã©ã€ã¢ã³ãã¯ç·šéããããã® content ãéœåè¯ãæäŸã㊠ãœãŒã¹ãç¡èŠãããããããªãããããã¯ãŠãŒã¶ãŒãå°æ¥ã®ç·šéã§å
ã® source ã®æãŸãã圢åŒã倱ãããšãæå³ãããåŸã£ãŠããã®ããã«ããã¯ã©ã€ã¢ã³ãã¯æäœéãå
ã®ãœãŒã¹åœ¢åŒãçè§£ã§ããªãã®ã§ ç¡èŠããããšã泚æãããããªç®ç«ã€åœ¢ã§ã®èŠåãæäŸããã¹ãã§ããã
äŸãã°ãAlyssa P.Hacker ã¯ãOrg mode ã å©çšããŠåœŒå¥³ãæžãã Emacs ã¯ã©ã€ã¢ã³ãã䜿ã£ãŠ ActivityPub 察å¿ã®ããã°ã« æçš¿ããã®ã奜ãã§ããåŸã«åœŒå¥³ã¯é»è©±ã®ã¯ã©ã€ã¢ã³ãã§ã®ç·šéã«åãæ¿ããŸãã; ãã㯠text/x-org ãäœã§ãããããããã HTML ã«ã¬ã³ããªã³ã°ãã æ¹æ³ãç¥ããªãã®ã§ã代ããã«å
ã® content ãç·šéããããã® ããã¹ãããã¯ã¹ãæäŸããŸãããã®ç·šéãšãªã¢ã®äžã«ã¯ãå©ãã«ãªãèŠåã衚瀺ãããŸã;ãããã¯å
ã
ç§ãã¡ãæ±ãæ¹ãç¥ããªãããŒã¯ã¢ããèšèªã§ æžãããŠããŸãã ãããç·šéãããšãå
ã®ãœãŒã¹ã倱ãããŸã!ãã¡ãã£ãšãã誀åä¿®æ£ã«ãããæãã® org-mode ã®ããŒã¯ã¢ããã倱ã䟡å€ã ãªããšåœŒå¥³ã¯å€æããå®¶ã«åž°ã£ãŠããæŽæ°ããããšã«æ±ºããŸããã
ActivityPub ã®ã¢ã¯ã¿ãŒã¯äžè¬çã«ã¯ ActivityStreams Actor Types ã®äžã€ã§ãããã ããã«å¶éãããªããäŸãã°ã Profile ãªããžã§ã¯ãã ã¢ã¯ã¿ãŒãšããŠäœ¿ããããããããªããã ActivityStreams æ¡åŒµããã®åã䜿ããããããããªããã¢ã¯ã¿ãŒã¯ ActivityPub ã®ä»ã® Object ãšåæ§ã« ååŸ ããããä»ã® ActivityStreams ãªããžã§ã¯ããšåæ§ãã¢ã¯ã¿ãŒã¯ URI ã§ãã id ãæã€ã(äŸãã°ãã°ã€ã³ãã©ãŒã ã®ãããª)ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ããçŽæ¥å
¥åããã å ŽåãåçŽåããåœåèŠåã«å¯Ÿå¿ããŠããã®ãæãŸããããã®ç®çã®ãããID æ£èŠåã¯ä»¥äžã®ããã«è¡ãããã¹ãã§ãã(SHOULD):
example.org/alice/ ã®ããã«ããŠãŒã¶ãŒã URI ã«ã¹ããŒã ã远å ããã®ãæ ã£ãããã以å€ã¯æå¹ã§ããããã« èŠããå Žåãã¯ã©ã€ã¢ã³ãã¯ããã©ã«ãã®ã¹ããŒã (https ãæãŸãã) ãæäŸããããšããŠãè¯ã(MAY)ãäžæŠã¢ã¯ã¿ãŒã® URI ãèå¥ããããšããã®åç §å ãååŸããã¹ãã§ããã
Actor ãªããžã§ã¯ãã¯ã3.1 Object Identifiers ã§åŒ·å¶ããã屿§ã«å ããŠã 以äžã®å±æ§ãæããªããã°ãªããªã(MUST):
OrderedCollection ãžã®åç
§; 5.2 Inbox ãåç
§ã®ããšãOrderedCollection; 5.1 Outbox ãåç
§ã®ããšãå®è£ ã¯ãããã«å ããŠã以äžã®å±æ§ãæäŸããã¹ãã§ãã(SHOULD):
å®è£ ã¯ä»¥äžã®å±æ§ãæäŸããŠãè¯ã(MAY):
{
"@context": ["https://www.w3.org/ns/activitystreams",
{"@language": "ja"}],
"type": "Person",
"id": "https://kenzoishii.example.com/",
"following": "https://kenzoishii.example.com/following.json",
"followers": "https://kenzoishii.example.com/followers.json",
"liked": "https://kenzoishii.example.com/liked.json",
"inbox": "https://kenzoishii.example.com/inbox.json",
"outbox": "https://kenzoishii.example.com/feed.json",
"preferredUsername": "kenzoishii",
"name": "ç³äºå¥èµ",
"summary": "ãã®æ¹ã¯ãã ã®äŸã§ã",
"icon": [
"https://kenzoishii.example.com/image/165987aklre4"
]
}å®è£ ã¯ãããã«å ããŠã以äžã®å±æ§ãæäŸããŠãè¯ã(MAY):
endpoints ãããã³ã°ã¯ä»¥äžã®å±æ§ãå«ãã§ããŠãè¯ã(MAY):
id ã®å€ãæã€ x-www-form-urlencoded id åŒæ°ã æçš¿ãããpublicInbox ãšã³ããã€ã³ãã¯ã ãããªãã¯ã«èªã¿èŸŒã¿å¯èœãªã Public ç¹æ®ã³ã¬ã¯ã·ã§ã³ã瀺ã ãªããžã§ã¯ããå«ã OrderedCollection ãªããžã§ã¯ãã§ããã¹ãã§ãã(SHOULD)ãsharedInbox ãšã³ããã€ã³ãããã®èªã¿èŸŒã¿ã¯ã Public ãšã³ããã€ã³ãã«ã¢ãã¬ã¹æå®ãããŠããªããªããžã§ã¯ãã 衚çŸããŠã¯ãªããªã(MUST NOT)ãActivityPub ã®ããã®äžæµèªåœãšããŠã ä»»æã®é©çšå¯èœãª [ActivityStreams] 屿§ã¯ ActivityPub Actor ãšããŠäœ¿ããããäžéšã® ActivityStreams 屿§ã¯ç¹ã«æ³šç®ãã䟡å€ããã; ããã ActivityPub å®è£ ã§ã©ã䜿ãããããäŸç€ºããã
id ã®å€ãšåãã§ã¯ãªãå Žå)ãname, preferredUsername, summary ã® ãããªãèªç¶èšèªå€ãå«ã屿§ã¯ã natural language support defined in ActivityStreams ã䜿ãã
[ActivityStreams] ã¯ã³ã¬ã¯ã·ã§ã³ã®æŠå¿µãå®çŸ©ããŠãã; ActivityPub ã¯ç¹æ®ãªæ¯ãèããããã³ã¬ã¯ã·ã§ã³ãããã€ãå®çŸ©ãããActivityPub ã¯å€§ããªãªããžã§ã¯ãã®éåã蟿ãããã« ActivityStreams paging ã䜿ãããšã«æ³šæããããšã
ãããã®ã³ã¬ã¯ã·ã§ã³ã®äžéšã¯ç¹ã« OrderedCollection åãæå®ããŠãããäžæ¹ãã®ä»ã¯ Collection ãŸã㯠OrderedCollection ã®äž¡æ¹ãèš±ããŠããããšã«æ³šæããããšã OrderedCollection ã¯äžè²«ããŠéæç³»åé ã§è¡šçŸãããªããã°ãªããªã(MUST)ã
éæç³»åé ãæ±ºå®ããã®ã«ã©ã®å±æ§ã䜿ããããã¯ãæå³çã«å®è£ 詳现ãšã㊠æ®ããŠãããäŸãã°ãå€ãã® SQL ã¹ã¿ã€ã«ã®ããŒã¿ããŒã¹ã¯èå¥åãšããŠã€ã³ã¯ãªã¡ã³ããã æŽæ°ã䜿ã; ããã¯ã»ãšãã©ã®å Žåæ¿å ¥é ãšããŠåççã«äœ¿ãããããã®ä»ã®ããŒã¿ããŒã¹ã§ã¯ãæ¿å ¥æå»ã¿ã€ã ã¹ã¿ã³ãã奜ãŸãããããããªããäœã䜿ããããã¯éèŠã§ã¯ãªãããæ°ããã¢ã€ãã ãæåã«ãªããããªåœ¢ã§ èŠçŽ ã®é åºãä¿æãããŠããªããã°ãªããªãããæçµæŽæ°ãã¿ã€ã ã¹ã¿ã³ãã®ãããªå®æçã«å€æŽããã屿§ã¯ 䜿ãããã¹ãã§ã¯ãªãã
outbox 㯠ã¢ã¯ã¿ãŒ ã®ãããã¡ã€ã«ã® outbox ããããã£ã䜿ã£ãŠçºèŠããããoutbox 㯠OrderedCollectionã§ãªããã°ãªããªã(MUST)ã
outboxã¹ããªãŒã ã¯ãèŠæ±è ãã¢ã¯ãã£ããã£ãååŸããèœåããããšããåæã§ã ãŠãŒã¶ãŒãçºè¡ããã¢ã¯ãã£ããã£ãå«ã (ã€ãŸããoutbox ã®å 容ã¯ãããèªãäººã®æš©éã«ãã£ãŠãã£ã«ã¿ããã)ããŠãŒã¶ãŒã Authorization ãªãã§ãªã¯ãšã¹ããæçš¿ããå Žåã ãµãŒãã¯å šãŠã® Public æçš¿ã å¿çããã¹ãã§ãããããã¯å Žåã«ãã£ãŠã¯ãã®ãŠãŒã¶ãŒã«ãã£ãŠçºè¡ããããå šãŠã®é¢é£ãã ãªããžã§ã¯ããšãªããããããªããã å©çšå¯èœãªã¢ã€ãã ã®æ°ã¯ãµãŒãã®å®è£ ãšãããã€ã®èªç±è£éã«ä»»ãããŠããã
outbox 㯠HTTP POST ãªã¯ãšã¹ããåãä»ãã; ãã®æ¯ãèã㯠ã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ã« èšè¿°ãããŠããã
inbox 㯠ã¢ã¯ã¿ãŒ ã®ãããã¡ã€ã«ã® inbox ããããã£ã䜿ã£ãŠçºèŠããããinbox 㯠OrderedCollection ã§ãªããã°ãªããªã(MUST)ã
inbox ã¹ããªãŒã ã¯ã¢ã¯ã¿ãŒãåä¿¡ããå šãŠã®ã¢ã¯ãã£ããã£ãå«ãããµãŒãã¯èŠæ±è ã®æš©éã«å¿ããŠã³ã³ãã³ãããã£ã«ã¿ãªã³ã°ããã¹ãã§ãã(SHOULD)ãäžè¬çã«ãinbox ã®ææè 㯠ãã® inbox ã®ã³ã³ãã³ãå šãŠã«ã¢ã¯ã»ã¹ã§ãããinbox ã«ã¢ã¯ã»ã¹ã§ããå Žåã§ããã¢ã¯ã»ã¹å¶åŸ¡ã«äŸåããŠããã®ä»ã®ã³ã³ãã³ãã® äžéšã¯ãããªãã¯ã§ãäžæ¹ãã®ä»ã®ã³ã³ãã³ãã¯éææè ã®ãŠãŒã¶ãŒã¯èªèšŒã èŠæ±ããããããããªãã
ãµãŒã㯠inbox ã«è¿ãããã¢ã¯ãã£ããã£ã®éè€è§£æ¶ã å®è¡ããªããã°ãªããªã(MUST)ãéè€ã¯ãããã¢ã¯ãã£ããã£ãããã¢ã¯ã¿ãŒã®ãã©ãã¯ãŒãšãåä¿¡ã¢ã¯ã¿ãŒã ãã©ããŒããŠããç¹å®ã®ã¢ã¯ã¿ãŒã®äž¡æ¹ã«ã¢ãã¬ã¹æå®ããã ãµãŒããåä¿¡ãªã¹ãã®éè€è§£æ¶ã«å€±æãããšãã«èµ·ããããã®ãããªéè€è§£æ¶ã¯ãã¢ã¯ãã£ããã£ã® id ãæ¯èŒããŠã æ¢ã«èªãã ã¢ã¯ãã£ããã£ãèœãšã圢ã§è¡ãããªããã°ãªããªã(MUST)ã
é£åãµãŒãäžã®ã¢ã¯ã¿ãŒã® inbox 㯠HTTP POST ãªã¯ãšã¹ããåãä»ãã; ãã®æ¯ãèã㯠é é ã«èšè¿°ãããŠãããéé£åãµãŒã㯠POST ãªã¯ãšã¹ããåãåã£ãå Žå㯠405 Method Not Allowed ã è¿ãã¹ãã§ãã(SHOULD)ã
å ã¢ã¯ã¿ãŒ 㯠followers ã³ã¬ã¯ã·ã§ã³ã æã€ã¹ãã§ãã(SHOULD)ãããã¯ãã®ã¢ã¯ã¿ãŒã« Follow ã¢ã¯ãã£ããã£ãéä¿¡ãããšãã« å¯äœçš ãšããŠè¿œå ãããéä¿¡è
ã®äžèЧã§ãããããã¯èª°ããããã¢ã¯ã¿ãŒããã©ããŒããŠããå
šãŠã®ãŠãŒã¶ãŒã®äžèЧã èŠã€ããå Žæã§ãããfollowers ã³ã¬ã¯ã·ã§ã³ã¯ OrderedCollection ãŸã㯠Collection ã§ãªããã°ãªãã(MUST)ã èªèšŒããããŠãŒã¶ãŒã®æš©éããèªèšŒããªãå Žåã¯é©åãªåœ¢ã§ãã£ã«ã¿ãªã³ã°ããŠã è¯ã(MAY)ã
follow ã¢ã¯ãã£ããã£ã¯äžè¬çã«ã¯ãããã¢ã¯ã¿ãŒãäœæãããªããžã§ã¯ãã èŠãããã®èŠæ±ã§ãããããã«ãããFollowers ã³ã¬ã¯ã·ã§ã³ã¯éç¥ã® é é ã® é©åãªããã©ã«ãã®å¯Ÿè±¡ã«ãªãã
åã¢ã¯ã¿ãŒã¯ following ã³ã¬ã¯ã·ã§ã³ãæã€ã¹ãã§ãã(SHOULD)ããã㯠å¯äœçš ãšããŠè¿œå ãããã ãã®ã¢ã¯ã¿ãŒããã©ããŒããçžæã®äžèЧã§ãããfollowing ã³ã¬ã¯ã·ã§ã³ã¯ OrderedCollection ãŸã㯠Collection ã§ãªããã°ãªãã(MUST)ã èªèšŒããããŠãŒã¶ãŒã®æš©éããèªèšŒããªãå Žåã¯é©åãªåœ¢ã§ãã£ã«ã¿ãªã³ã°ããŠã è¯ã(MAY)ã
åã¢ã¯ã¿ãŒã¯ liked ã³ã¬ã¯ã·ã§ã³ãæã£ãŠãè¯ã(MAY)ããã㯠å¯äœçš ãšããŠè¿œå ãããã ãã®ã¢ã¯ã¿ãŒã®å
šãŠã® Like ã®ãªããžã§ã¯ãã®äžèЧã§ãããliked ã³ã¬ã¯ã·ã§ã³ã¯ OrderedCollection ãŸã㯠Collection ã§ãªããã°ãªãã(MUST)ã èªèšŒããããŠãŒã¶ãŒã®æš©éããèªèšŒããªãå Žåã¯é©åãªåœ¢ã§ãã£ã«ã¿ãªã³ã°ããŠã è¯ã(MAY)ã
[ActivityStreams] ã³ã¬ã¯ã·ã§ã³ãšãªããžã§ã¯ãã«å ããŠã Activity ã¯è¿œå ã§ç¹æ®ãªããããªãã¯ãã³ã¬ã¯ã·ã§ã³ãå®å
ã«æå®ã§ãã; ããã¯èå¥å https://www.w3.org/ns/activitystreams#Public ã§ãããäŸ:
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://www.w3.org/ns/activitystreams#Public",
"type": "Collection"
}ãã®ç¹æ®ãª URI ãå®å
ã«æå®ããã Activity ã¯å
šãŠã®ãŠãŒã¶ãŒãã èªèšŒãªãã«ã¢ã¯ã»ã¹ã§ãããå®è£
è
ã¯ããããªãã¯ãç¹æ®ã³ã¬ã¯ã·ã§ã³ãžé
éããŠã¯ãªããªã(MUST NOT); ããã¯å®éã®ã¢ã¯ãã£ããã£ãåä¿¡ããèœåãæããªããããããã¢ã¯ã¿ãŒã¯ãããªãã¯ãªæçš¿ã®å¹ççãªå
±æé
éã®ããã«å©çšå¯èœã§ãã sharedInbox ãšã³ããã€ã³ãã æã£ãŠããã(MAY); 7.1.3 å
±æ inbox ãžã®é
é ãåç
§ã®ããšã
ActivityStreams JSON-LD ã³ã³ããã¹ãã䜿ã£ãŠ ActivityStreams ãªããžã§ã¯ããççž®åãããšã https://www.w3.org/ns/activitystreams#Public ã¯ã ãããããããªãã¯ã³ã¬ã¯ã·ã§ã³ã®æ£åœãªè¡šçŸã§ããã åã« Public ããã³ as:Public 㚠衚çŸã§ããããšã«æ³šæããããšãActivityStreams ã«é¢ããŠã åä¿¡ããã¢ã¯ãã£ããã£ã JSON-LD ããŒã«ã䜿ã£ãŠããŒã«ã«ãªã³ã³ããã¹ãã« å€æããã®ã§ã¯ãªããåã« JSON ãšããŠæ±ãå®è£
ã¯ããã«æ³šæããã¹ãã§ã 3 çš®é¡å
šãŠã®è¡šçŸãåãä»ããããã«æºåããã¹ãã§ããã
åãªããžã§ã¯ã㯠likes ã³ã¬ã¯ã·ã§ã³ãæã£ãŠããã(MAY)ããã㯠å¯äœçš ãšããŠè¿œå ãããã ãã®ãªããžã§ã¯ãã object 屿§ãšããŠæã€å
šãŠã® Like ã¢ã¯ãã£ããã£ã®äžèЧã§ãããlikes ã³ã¬ã¯ã·ã§ã³ã¯ OrderedCollection ãŸã㯠Collection ã§ãªããã°ãªãã(MUST)ã èªèšŒããããŠãŒã¶ãŒã®æš©éããèªèšŒããªãå Žåã¯é©åãªåœ¢ã§ãã£ã«ã¿ãªã³ã°ããŠã è¯ã(MAY)ã
likes ã³ã¬ã¯ã·ã§ã³ãã䌌ããããªååã§ããããã©ãç°ãªã liked ã³ã¬ã¯ã·ã§ã³ãš æ··åããªãããã«æ³šæããããšããŸãšãããš:
Like ã¢ã¯ãã£ããã£ã®ã³ã¬ã¯ã·ã§ã³ã§ã outbox ãžã®é
éã®å¯äœçš ãšã㊠ã³ã¬ã¯ã·ã§ã³ã«è¿œå ããããLike ã¢ã¯ãã£ããã£ã® ã³ã¬ã¯ã·ã§ã³ã§ã inbox ãžã®é
éã®å¯äœçš ãšã㊠ã³ã¬ã¯ã·ã§ã³ã«è¿œå ãããã[ActivityStreams] ã§å®çŸ©ããã Activity ã¯ããœãŒã·ã£ã«ã°ã©ãå ã§ ã³ã³ãã³ããäœæã倿Žãå ±æããããã®äžå¿ãšãªãæ©æ§ã§ããã
ã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ã¯ãã¯ã©ã€ã¢ã³ããã¢ã¯ã¿ãŒã® outbox ã« Activitity æçš¿ããããšã§è¡ãããããããè¡ãããã«ãã¯ã©ã€ã¢ã³ãã¯ã¢ã¯ã¿ãŒã® profile ãããã® outbox ã® URL ã çºèŠããªããã°ãªãã(MUST)ã ãããããContent-Type ã« application/ld+json; profile="https://www.w3.org/ns/activitystreams" ãæå®ãã POST ãªã¯ãšã¹ãããã® URL ã«è¡ããªããã°ãªããªã(MUST)ããµãŒãã¯ã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ã«ãããŠã Content-Type ã Accept ã®ãããã§ application/activity+json ã application/ld+json; profile="https://www.w3.org/ns/activitystreams" ãšç䟡ãšèŠãªããŠããã(MAY)ããã®ãªã¯ãšã¹ãã¯ãoutbox ãææãããŠãŒã¶ãŒã®èªèšŒæ
å ±ã§ èªèšŒãããªããã°ãªããªã(MUST)ãPOST ãªã¯ãšã¹ãã®ããã£ã¯ãåäžã® Activity (çµã¿èŸŒã¿ãªããžã§ã¯ããå«ãã§ããŠãè¯ã(MAY))ãããã㯠ãµãŒãã«ãã£ãŠ Create ã¢ã¯ãã£ããã£ã«ã©ããã³ã°ããã åäžã®é Activity ãªããžã§ã¯ãã®ã©ã¡ãããå«ãã§ããªããã°ãªããªã(MUST)ã
POST /outbox/ HTTP/1.1
Host: dustycloud.org
Authorization: Bearer XXXXXXXXXXX
Content-Type: application/ld+json; profile="https://www.w3.org/ns/activitystreams"
{
"@context": ["https://www.w3.org/ns/activitystreams",
{"@language": "en"}],
"type": "Like",
"actor": "https://dustycloud.org/chris/",
"name": "Chris liked 'Minimal ActivityPub update client'",
"object": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
"to": ["https://rhiaro.co.uk/#amy",
"https://dustycloud.org/followers",
"https://rhiaro.co.uk/followers/"],
"cc": "https://e14n.com/evan"
}id 屿§ä»ãã® Activity ãæçš¿ããããšãã ãµãŒãã¯ãããç¡èŠããŠãã® Activity ã®ããã®æ°ãã id ã çæããªããã°ãªããªã(MUST)ããµãŒã㯠201 Created HTTP ã³ãŒããè¿ããªããã°ãªãã(MUST)ã Activity ãäžæçãªãã®ã§ãªãéãã Location ãããã«æ°ãã id ã å«ããªããã°ãªããªã(MUST)ã
HTTP/1.1 201 Created
Location: https://dustycloud.org/likes/345ActivityStreams ãªããžã§ã¯ãã« bto ã bcc 屿§ããã å ŽåããµãŒãã¯é
éã®åã«ããããåé€ããªããã°ãªããªã(MUST)ãã ããšããš bto / bcc 屿§ã«ä¿ç®¡ãããŠããå®å
ã delivery ã§ã®å®å
ãæ±ºå®ããã®ã«äœ¿çšããªããã°ãªããªã(MUST)ã
ãããããµãŒãã¯æ°ãã Activity ã outbox ã³ã¬ã¯ã·ã§ã³ã« 远å ããªããã°ãªããªã(MUST)ãActivity ã®åã«äŸåããŠããµãŒãã¯ãããªãå¯äœçšãå®è¡ããããšãèŠæ±ãããã(ããããActivity ã outbox ã«çŸããæå»ã«ã¯ä¿èšŒãããªããActivity ã¯é å»¶ããŠçŸããããä»»æã®æç¹ã§æ¶æ» ããããããããããªãã)ãããã¯åŸè¿°ããåã ã® Activity ã«èšè¿°ãããŠããã
ã¯ã©ã€ã¢ã³ããããµãŒãã§å®è£
ãããŠããªããµãŒãã«ãªããžã§ã¯ããæçš¿ããããšãã å Žåã405 Method Not Allowed ã¬ã¹ãã³ã¹ãè¿ãã¹ãã§ãã(SHOULD)ã
HTTP ãã£ãã·ã¥æ©æ§ [RFC7234] ã¯ã ã¯ã©ã€ã¢ã³ãããµãŒãããå¿çãåä¿¡ããå ŽåãšãµãŒããã¯ã©ã€ã¢ã³ãã« å¿çãéä¿¡ããå Žåã®äž¡æ¹ã«ãããŠãé©åãªå Žåã«ã¯éµå®ããã¹ãã§ãã(SHOULD)ã
ã¯ã©ã€ã¢ã³ã ã¯ã æ°ãã Activity ãé©åã«ã¢ãã¬ã¹æå®ããããšã«è²¬ä»»ãæã€ãããã¯ããçšåºŠç¹å®ã®ã¯ã©ã€ã¢ã³ãã®å®è£
ã«äŸåãããã ãµãŒãã¯æ°ãã Activity ã to, bto, cc, bcc, audience ãã£ãŒã«ãã®ã¢ãã¬ã¹æå®å
ã«ã®ã¿ 転éããããšããããšãã¯ã©ã€ã¢ã³ãã¯èªèããŠãããªããã°ãªããªãã
Followers ã³ã¬ã¯ã·ã§ã³ ãš Public ã³ã¬ã¯ã·ã§ã³ ã¯ã æ°ãã Activity ã®ããã©ã«ãã®å®å ãšããŠè¯ãéžæè¢ã§ããã
ã¯ã©ã€ã¢ã³ãã¯ã object, target, inReplyTo, tag ãã£ãŒã«ãã§ æ°ãã Activity ã«æ·»ä»ããããªããžã§ã¯ããèŠãã¹ãã§ãã(SHOULD)ã ãã® actor ã attributedTo 屿§ãååŸããŠã ãŸãããã®ã¢ãã¬ã¹æå®å±æ§ãååŸããŠã äœæãããæ°ãã Activity ã® to ãŸã㯠cc ãã£ãŒã«ãã«è¿œå ããŠããã(MAY)ãã¯ã©ã€ã¢ã³ãã¯æ·»ä»ããããªããžã§ã¯ããååž°ããŠãè¯ã(MAY)ãã ããããå Žåã¯ãã®ååž°ã«å¶éãèšå®ããã¹ãã§ãã(SHOULD)ã(ããã¯ãã¯ã©ã€ã¢ã³ããã¢ãã¬ã¹æå®ãããã¢ã¯ã¿ãŒã®ã³ã¬ã¯ã·ã§ã³ãåã
ã®å®å
ãšã㊠ãå±éãããããšãææ¡ããŠããã®ã§ã¯ãªãããšã«æ³šæããããšã)
ã¯ã©ã€ã¢ã³ã㯠UI ã§ãŠãŒã¶ãŒã«å®å ã倿Žããæ©äŒãäžããŠãè¯ã(MAY)ã
äŸãã°ãChris ã Amy ã«ããæ¬¡ã®èšäºã«ãããããããããšã:
{
"@context": ["https://www.w3.org/ns/activitystreams",
{"@language": "en-GB"}],
"id": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
"type": "Article",
"name": "Minimal ActivityPub update client",
"content": "Today I finished morph, a client for posting ActivityStreams2...",
"attributedTo": "https://rhiaro.co.uk/#amy",
"to": "https://rhiaro.co.uk/followers/",
"cc": "https://e14n.com/evan"
}ã¯ã©ã€ã¢ã³ãã«ãã£ãŠçæããããããããã¯:
{
"@context": ["https://www.w3.org/ns/activitystreams",
{"@language": "en"}],
"type": "Like",
"actor": "https://dustycloud.org/chris/",
"summary": "Chris liked 'Minimal ActivityPub update client'",
"object": "https://rhiaro.co.uk/2016/05/minimal-activitypub",
"to": ["https://rhiaro.co.uk/#amy",
"https://dustycloud.org/followers",
"https://rhiaro.co.uk/followers/"],
"cc": "https://e14n.com/evan"
}åä¿¡ãã outbox ã¯ã(ããããã) Chris ã®ãã©ãã¯ãŒã ãã§ãªãã å ã®èšäºãåãåã£ãŠãã AmyãAmy ã®ãã©ãã¯ãŒãEvan ã«ã é éã§ããã
以äžã®ã¢ã¯ãã£ããã£ã outbox ã«æçš¿ããã¯ã©ã€ã¢ã³ãã¯ã ã¢ã¯ãã£ããã£ã« object 屿§ãæäŸããªããã°ãªããªã(MUST): Create, Update, Delete, Follow, Add, Remove, Like, Block, Undoãããã«ã以äžã®ã¢ã¯ãã£ããã£ã outbox ãžæçš¿ããã¯ã©ã€ã¢ã³ãã¯ã target 屿§ãæäŸããªããã°ãªããªã(MUST): Add, Removeã
Create ã¢ã¯ãã£ããã£ã¯æ°ãããªããžã§ã¯ããæçš¿ãããšãã«äœ¿ããããããã¯ãActivity ã®äžã«(object 屿§ãšããŠ)åã蟌ãŸããŠãã ãªããžã§ã¯ããäœæããããšããå¯äœçšãããã
Create ã¢ã¯ãã£ããã£ãæçš¿ããããšããã¢ã¯ãã£ããã£ã® actor 㯠object ã® attributedTo ãã£ãŒã«ãã«ã³ããŒãããã¹ãã§ãã(SHOULD)ã
Create ã¢ã¯ãã£ããã£ãšãã® object ã®ã¢ãã¬ã¹æå®ã® äžäžèŽã¯ããããæ··ä¹±ãåŒãèµ·ãããåŸã£ãŠããµãŒãã¯åæã®é
éæã« Create ã¢ã¯ãã£ããã£ã®å®å
ã ãã® object ã«ã³ããŒããã¹ãã§ãã(SHOULD)ã åæ§ã« object ããã©ããããŠãã Create ã¢ã¯ãã£ããã£ã« ã³ããŒããã¹ãã§ãã(SHOULD)ãCreate ã®ã¢ãã¬ã¹æå®ã倿Žããããšãªã (äŸãã° Update ã¢ã¯ãã£ããã£ã§) object ã®ã¢ãã¬ã¹æå®ã倿Žããããšã¯ åãå
¥ããããããšã«æ³šæããããšã
ã¯ã©ã€ã¢ã³ããããµãŒããžã®æçš¿ã§ã åšãã®ã¢ã¯ãã£ããã£ãªãã§ãªããžã§ã¯ããäœæããããšãå¯èœã§ããããµãŒã㯠outbox ãžã® POST ãªã¯ãšã¹ãã§ã Activity ã®ãµãã¿ã€ãã§ãªã æ£åœãª [ActivityStreams] ãªããžã§ã¯ããåãå
¥ããªããã°ãªããªã(MUST)ããµãŒãã¯ãã®ãªããžã§ã¯ãã Create Activity ã® object ãšããŠæ·»ä»ããªããã°ãªããªã(MUST)ãéäžæçãªããžã§ã¯ãã«é¢ããŠã¯ã ãµãŒãã¯ã©ããã³ã°ãã Create ãšã©ããããã Object ã«å¯ŸããŠãid ã æ·»ä»ããªããã°ãªããªã(MUST)ã
ãµãŒãããè¿ããã Location ã®å€ã¯ã æ°ãã(ãªããžã§ã¯ãã§ã¯ãªã) Create ã¢ã¯ãã£ããã£ã® URL ã§ããã¹ãã§ããã
ãªããžã§ã¯ãã§æå®ãããŠãã to, bto, cc, bcc, audience 屿§ã¯ã ãµãŒãã«ãã£ãŠæ°ãã Create ã¢ã¯ãã£ããã£ã«ã³ããŒãããªããã°ãªããªã(MUST)ã
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Note",
"content": "This is a note",
"published": "2015-02-10T15:04:55Z",
"to": ["https://example.org/~john/"],
"cc": ["https://example.com/~erik/followers",
"https://www.w3.org/ns/activitystreams#Public"]
}{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"id": "https://example.net/~mallory/87374",
"actor": "https://example.net/~mallory",
"object": {
"id": "https://example.com/~mallory/note/72",
"type": "Note",
"attributedTo": "https://example.net/~mallory",
"content": "This is a note",
"published": "2015-02-10T15:04:55Z",
"to": ["https://example.org/~john/"],
"cc": ["https://example.com/~erik/followers",
"https://www.w3.org/ns/activitystreams#Public"]
},
"published": "2015-02-10T15:04:55Z",
"to": ["https://example.org/~john/"],
"cc": ["https://example.com/~erik/followers",
"https://www.w3.org/ns/activitystreams#Public"]
}Update ã¢ã¯ãã£ããã£ã¯ãæ¢ã«ååšãããªããžã§ã¯ããæŽæ°ãããšã㫠䜿ããããããã®å¯äœçšãšããŠãã¢ã¯ã¿ãŒããã®ãªããžã§ã¯ããæŽæ°ããæš©éãæã£ãŠããå Žåã object 㯠Update ã¢ã¯ãã£ããã£ã§å®çŸ©ãããŠããæ°ããæ§é ã åæ ãã圢ã§ä¿®æ£ãããªããã°ãªããªã(MUST)ã
ã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ã§ã¯ãæŽæ°ã¯éšåçã§ãã; ææžå
šäœãäžåºŠã«æŽæ°ããã®ã§ã¯ãªããæå®ãããä»»æã®ããŒ/å€ã®çµã æ¢åã®å€ãæ°ããå€ã«çœ®ãæããããã«äœ¿ããããããã¯æŽæ°ããããªããžã§ã¯ãã®æäžäœã®ãã£ãŒã«ãã«ã®ã¿é©çšããããç¹å¥ãªäŸå€ã¯ãå€ã json ã® null åã®å Žåã§ãã; ããã¯ããã®ãã£ãŒã«ãã¯ãµãŒãã®ãªããžã§ã¯ã衚çŸãã åé€ãããã¹ããšèšãããšãæå³ããã
ãã®æ¯ãèãã¯ãã¯ã©ã€ã¢ã³ãããµãŒãã«æçš¿ãããšãã®ã¯ã©ã€ã¢ã³ããããµãŒããžã® éä¿¡ã®ã¿ã§ããããšã«æ³šæããããšããµãŒããããµãŒããžã®çžäºäœçšãšããµãŒãããã¯ã©ã€ã¢ã³ããžã®æŽæ°ã¯ã éšåçæŽæ°ãé©çšãããåŸã®ããªããžã§ã¯ãã®å®å šã«æ°ãã衚çŸãå«ãã¹ãã§ããããšã«æ³šæããããšããã詳ãã㯠ãµãŒãéçžäºäœçšã§ã® Update ã¢ã¯ãã£ãã㣠ã®èª¬æãåç §ã®ããšã
Delete ã¢ã¯ãã£ããã£ã¯ãæ¢ã«ååšãããªããžã§ã¯ãã åé€ããããã«äœ¿ãããããã®å¯äœçšãšããŠããµãŒã㯠object ãã åé€ããããªããžã§ã¯ããåç
§ããã¢ã¯ãã£ããã£ã§è¡šç€ºããã Tombstone ã®ãªããžã§ã¯ãã«çœ®ãæããŠãè¯ã(MAY)ãåé€ããããªããžã§ã¯ããèŠæ±ãããå ŽåããµãŒãã¯ã ã¬ã¹ãã³ã¹ããã£ãšã㊠Tombstone ãªããžã§ã¯ãã衚çŸãããŠããå Žå㯠HTTP 410 Gone ã¹ããŒã¿ã¹ãã ãããªããã° HTTP 404 Not Found ã¹ããŒã¿ã¹ãè¿ãã¹ãã§ãã (SHOULD)ã
åé€ããããªããžã§ã¯ã:
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://example.com/~alice/note/72",
"type": "Tombstone",
"published": "2015-02-10T15:04:55Z",
"updated": "2015-02-10T15:04:55Z",
"deleted": "2015-02-10T15:04:55Z"
}Follow ã¢ã¯ãã£ããã£ã¯ãä»ã®ã¢ã¯ã¿ãŒã®ã¢ã¯ãã£ããã£ã 賌èªããããã«äœ¿ãããã
ããã outbox ã«åä¿¡ããå Žåã®å¯äœçšãšããŠã ãµãŒãã¯ããã® Follow ã¢ã¯ãã£ããã£ããªããžã§ã¯ããšãã Accept ã¢ã¯ãã£ããã£ãåŒãç¶ããŠåä¿¡ããå Žåã«ã®ã¿ã actor ã® following ã³ã¬ã¯ã·ã§ã³ ã« object ã远å ããã¹ãã§ãã(SHOULD)ã
Add ã¢ã¯ãã£ããã£ã outbox ã«åãåã£ããšãã 以äžã®å Žåãé€ããŠããµãŒã㯠object ã target ããããã£ã§æå®ãããã³ã¬ã¯ã·ã§ã³ã«è¿œå ããã¹ãã§ãã(SHOULD):
target ãåä¿¡ãµãŒãã«ãã£ãŠææãããŠããããåŸã£ãŠãããæŽæ°ããæš©éããªããobject ã target ã³ã¬ã¯ã·ã§ã³ã«è¿œå ããããšã èªããããŠããªããoutbox ã« Remove ã¢ã¯ãã£ããã£ãåä¿¡ãããšã ãµãŒãã¯æ¬¡ã®å Žåãé€ããŠã target 屿§ã§æå®ãããã³ã¬ã¯ã·ã§ã³ãã object ãåé€ããã¹ãã§ãã(SHOULD)ã
target ãåä¿¡ãµãŒãã«ãã£ãŠææãããŠããããåŸã£ãŠãããæŽæ°ããæš©éããªããobject ããåä¿¡ãµãŒãã®è£éã«ãããäœããã®ä»ã®çç±ã§ target ããåé€ããããšãèªããããŠããªããLike ã¢ã¯ãã£ããã£ã¯ ã¢ã¯ã¿ãŒ ã object ã奜ãã§ããããšã瀺ãã
ããã outbox ã«åä¿¡ãããšãã®å¯äœçšãšããŠã ãµãŒã㯠actor ã® liked ã³ã¬ã¯ã·ã§ã³ ã« ãã® object ã远å ããã¹ãã§ãã(SHOULD)ã
Block ã¢ã¯ãã£ããã£ã¯ãæçš¿ããã¢ã¯ã¿ãŒã¯ (object屿§ã§å®çŸ©ããã)ã¢ã¯ã¿ãŒã Block ã¢ã¯ãã£ããã£ãæçš¿ããã¢ã¯ã¿ãŒã«ãã£ãŠæçš¿ããã ãªããžã§ã¯ããšçžäºäœçšåºæ¥ãããšãæãŸãªãããšã瀺ãããã«äœ¿ãããããµãŒãã¯ãããã¯ãããŠãŒã¶ãŒãšããã®ã¢ã¯ã¿ãŒã«ãã£ãŠæçš¿ãããä»»æã® ãªããžã§ã¯ããšã®çžäºäœçšã鲿¢ããã¹ãã§ãã (SHOULD)ã
ãµãŒã㯠Block ã¢ã¯ãã£ããã£ããã® object ã« é
éããã¹ãã§ã¯ãªã(SHOULD NOT)ã
Undo ã¢ã¯ãã£ããã£ã¯ä»¥åã®ã¢ã¯ãã£ããã£ãåãæ¶ããšãã«äœ¿ããããActivity Vocabulary ææžã® Inverse Activities and "Undo" ãåç
§ã®ããšãäŸãã°ãUndo ã¯ä»¥åã® Like, Follow, Block ã®ããããã® åãæ¶ãã®ããã«äœ¿ããããUndo ã¢ã¯ãã£ããã£ãšåãæ¶ãããã¢ã¯ãã£ããã£ã¯ã©ã¡ããåã actor ã æã£ãŠããªããã°ãªããªã(MUST)ãå¯äœçšãšããŠãã§ããã ãåºç¯å²ã«åãæ¶ããè¡ãã¹ãã§ãããäŸãã°ããã Like ãåãæ¶ããšããã®åã«ã€ã³ã¯ãªã¡ã³ãããã ã«ãŠã³ã¿ã¯é©åã«ãã¯ãªã¡ã³ããããã¹ãã§ããã
æ¢åã®æç€ºçãªãéã¢ã¯ãã£ããã£ãã代ããã«äœ¿ãã¹ãäŸå€ããããCreate ããŒã¹ã®ã¢ã¯ãã£ããã£ã¯ Delete ãã Add ã¢ã¯ãã£ããã£ã¯ Remove ã䜿ãã¹ãã§ããã
é£åãµãŒã㯠outbox ã«æçš¿ãããå šãŠã® Activity ã outboxé é ã«åŸã£ãŠé éãå®è¡ããªããã°ãªããªã(MUST)ã
ãã®ç¯ã¯éèŠç¯çã§ããã
ãµãŒãã¯ãç»åããããªããã®ä»ã®ãã€ããªããŒã¿ã®ãããªã ã¢ã¯ãã£ããã£ã§åç §ãããææžåã®ã¢ããããŒãã«å¯Ÿå¿ããŠãè¯ã(MAY)ãã æ£ç¢ºãªæ©æ§ã¯ãã®ããŒãžã§ã³ã® ActivityPub ã®ã¹ã³ãŒãå€ã§ãããThe Social Web Community Group 㯠ActivityPub Media Upload report ã§ãããã³ã«ãæŽç·ŽãããŠããã
ãµãŒãã¯ãã¢ã¯ãã£ããã£ãã¢ã¯ã¿ãŒã® inbox ãšã³ããã€ã³ãã« ãã¹ãããããšã§ãä»ã®ãµãŒããšéä¿¡ããæ
å ±ããœãŒã·ã£ã«ã°ã©ãäžã«äŒæ¬ãããããããã¯ãŒã¯äžãéããã Activity ã¯ãäžæçã§ããããšãæå³ããŠããå Žåã é€ããid ãæã€ã¹ãã§ãã(SHOULD) (äžæçãªå Žå㯠id ãçç¥ããŠãè¯ã(MAY))ã
(inbox ãªã©ãžã®) POST ãªã¯ãšã¹ã㯠Content-Type ã« application/ld+json; profile="https://www.w3.org/ns/activitystreams" ãèšå®ããªããã°ãªãã(MUST)ãGET ãªã¯ãšã¹ã (3.2 Retrieving objects ãåç
§ã®ããš) 㯠Accept ãããã« application/ld+json; profile="https://www.w3.org/ns/activitystreams" ã èšå®ããªããã°ãªããªã(MUST)ããµãŒãã¯ããµãŒããããµãŒããžã®éä¿¡ã«ãããŠãContent-Type ã Accept ãããã® application/activity+json ã application/ld+json; profile="https://www.w3.org/ns/activitystreams" ãš ç䟡ãªãã®ãšããŠæ±ãã¹ãã§ãã(SHOULD)ã
ãœãŒã·ã£ã«ã°ã©ãäžã«æŽæ°ãäŒæ¬ãããããã«ãActivity ã¯é©åãªå®å ã« éä¿¡ãããããŸãããããã®å®å ã¯ãã¢ã¯ã¿ãŒã«å°éãããŸã§ãªããžã§ã¯ãéã®é©åãªãªã³ã¯ã 蟿ãããšã§æ±ºå®ããã ãããããã® Activity ã¯ã¢ã¯ã¿ãŒã® inbox ã«æ¿å ¥ããã (é é)ãããã«ãããå®å ãµãŒãã¯:
é éã¯éåžžãäŸãã°ä»¥äžã®ãã®ã§åŒãèµ·ãããã:
ä»ã®ãµãŒãäžã®ã¢ã¯ã¿ãŒã® inbox ã publicInbox 屿§ãžã®é
éãå®è¡ãããµãŒãã¯ã 次ã®ã¢ã¯ãã£ããã£å
ã« object 屿§ãæäŸããªããã°ãªããªã(MUST): Create, Update, Delete, Follow, Add, Remove, Like, Block, Undoãããã«ã以äžã®ã¢ã¯ãã£ããã£ã®ãµãŒãéé
éãå®è¡ãããµãŒãã¯ã target 屿§ãæäŸããªããã°ãªããªã(MUST): Add, Remove
ä»ã®ãµãŒãããã®è¿çãåä¿¡ãããšããšä»ã®ãµãŒããžè¿çãéä¿¡ãããšãã® äž¡æ¹ã«ãããŠãé©åãªå Žåã«ã¯ HTTP ãã£ãã·ã¥æ©æ§ [RFC7234] ã« éµå®ããã¹ãã§ãã(SHOULD)ã
以äžã¯ä»ã®é£åãµãŒããšéä¿¡ããé£åãµãŒãã®ã¿ã«èŠæ±ãããã
ã¢ã¯ãã£ããã£ã¯ããŸãã¿ãŒã²ãã(ããã¯ã¢ã¯ã¿ãŒ)ã® inboxãæ¢ããŠããããããã®inboxã«ã¢ã¯ãã£ããã£ãæçš¿ããããšã§é
éããããé
éããã¿ãŒã²ããã¯ã ActivityStreams audience targeting ããã§ãã¯ããããšã§æ±ºå®ããã; ã€ãŸããã¢ã¯ãã£ããã£ã® to, bto, cc, bcc, audience ãã£ãŒã«ãã§ããã
inbox ã¯ãŸã ã¿ãŒã²ããã¢ã¯ã¿ãŒã®JSON-LD衚çŸãååŸãã ãããã inbox 屿§ãæ¢ãããšã§æ±ºå®ããããå®å
ã Collection ãŸã㯠OrderedCollection ã®å Žåã ãµãŒãã¯ã³ã¬ã¯ã·ã§ã³ã(ãŠãŒã¶ãŒã®èªèšŒæ
å ±ãšå
±ã«)å±éããã³ã¬ã¯ã·ã§ã³ã® ããããã®èŠçŽ ã® inbox ãçºèŠããªããã°ãªããªã(MUST)ããµãŒãã¯ã³ã¬ã¯ã·ã§ã³ã®å±éãå®è¡ããå±€ã®æ°ãå¶éããªããã°ãªããªã(MUST); ãã㯠1 ã§ããã(MAY)ã
ãµãŒãã¯æçµçãªå®å
ãªã¹ãã®éè€ãè§£æ¶ããªããã°ãªãã(MUST)ããµãŒãã¯ãŸããéç¥ããã Activity ã® ã¢ã¯ã¿ãŒ ãšåãã¢ã¯ã¿ãŒããªã¹ãããé€å»ããªããã°ãªããªã(MUST)ãã€ãŸãããŠãŒã¶ãŒã¯èªåã®ã¢ã¯ãã£ããã£ãèªåã«é
éããããšã¯ã§ããªãã
å®å ããªãå Žåã«ã©ããããã¯æªå®çŸ©ã§ããããããå®å ãæå®ãããªãã£ãå Žåã ãªããžã§ã¯ããå®å šã«ãã©ã€ããŒããªç¶æ ã«ãããŠãã¢ã¯ã»ã¹ã³ã³ãããŒã«ã¯ ãã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹ãå¶éããããšãæšå¥šãããããããªããžã§ã¯ããåã«ããããªãã¯ãã³ã¬ã¯ã·ã§ã³ã«éä¿¡ãããå Žåã ãªããžã§ã¯ãã¯èª°ã«ãé éãããªãããã¢ã¯ã¿ãŒã® outbox ã§å ¬ã«é²èЧå¯èœã«ãªãã
(æçš¿ãŠãŒã¶ãŒã®èªèšŒä»ãã®) HTTP POST ãªã¯ãšã¹ãã¯ã ã¢ã¯ãã£ããã£ããªã¯ãšã¹ãã®ããã£ãšã㊠inboxã«è¡ãããããã®ã¢ã¯ãã£ããã£ã¯åä¿¡è
ã«ãã£ãŠ inbox OrderedCollection ã® item ãšããŠè¿œå ããããéé£åãµãŒãã® inbox ãžé
éããããšãã詊ã¿ã¯ 405 Method Not Allowed ã¬ã¹ãã³ã¹ãè¿ãã¹ãã§ãã(SHOULD)ã
é£åãµãŒãããµãŒãããŒãã£ãŒãµãŒããžé éãå®è¡ããå Žåã«ã¯ã é éã¯éåæã«å®è¡ãããã¹ãã§ãã(SHOULD)ã ããããããã¯ãŒã¯ãšã©ãŒã«ãã£ãŠå€±æããå Žåã¯åä¿¡è ãžã®é éã å詊è¡ããã¹ãã§ãã(SHOULD)ã
泚èš: åã origin ã®ã¢ã¯ã¿ãŒéã§ é éããã Activity ã¯ä»»æã®å éšæ©æ§ã䜿ã£ãŠããããHTTP ã䜿ãããšã¯èŠæ±ãããªãã
ãã®ä»æ§ãçè§£ããã®ã«èªãã®ã¯å¿
é ã§ã¯ãªããã ActivityPub ã®ã¿ãŒã²ãããšé
éã®æ©æ§ã¯ Linked Data Notifications 仿§ãš éè€ããŠããŠãäºã€ã®ä»æ§ã¯çžäºã«çµåã§ããããšã¯èšããŠãã䟡å€ããããç¹ã«ãinbox 屿§ã¯ ActivityPub ãš Linked Data Notifications ã§ åãã§ããã®ææžã«èšè¿°ãããŠããã¿ãŒã²ãããšé
éã®æ©æ§ã¯ Linked Data Notifications ã«æ¯ããããŠãããJSON-LD ã³ã³ãã¯ãå ActivityStreams ææžã«å ããŠã Linked Data Notifications ã¯ãActivityPub å®è£
ã§å¿
èŠã§ãªãæ§ã
㪠RDF çŽååã察å¿ããŠãããããããããåºã Linked Data Notifications å®è£
ãšäºææ§ãæãããã ActivityPub å®è£
ã¯ããã®ä»ã® RDF 衚çŸã«å¯Ÿå¿ããæ¹ãããã
ãªããžã§ã¯ãã outbox ã«åä¿¡ãããšã( ã¯ã©ã€ã¢ã³ããããµãŒããžã®éä¿¡ ãš ãµãŒããããµãŒããžã®éä¿¡ ã®äž¡æ¹ã«å¯Ÿå¿ããŠãããµãŒãã®å Žå)ããµãŒã㯠以äžã«ã¿ãŒã²ããããŠé éããªããã°ãªããªã(MUST):
to, bto, cc, bcc, audience ã®ããããã®ãã£ãŒã«ã; ãã®å€ã å人ãactorã«ææãããŠããã³ã¬ã¯ã·ã§ã³ã®å Žåããããã®ãã£ãŒã«ãã¯ããã®ã¢ã¯ãã£ããã£ãoutboxã«æçš¿ãã ã¯ã©ã€ã¢ã³ãã«ãã£ãŠé©åã«å±éãããŠããã
以äžã®ç¯ã¯ãé£åãããã¯ãŒã¯ã§æã åé¡ãåŒãèµ·ããã ããŽãŒã¹ããªãã©ã€ãåé¡ãç·©åããããã®ãã®ã§ããããã®åé¡ãäŸã§ç€ºãã
Alyssa ã¯ãäŒè°ã§ã®è«æã®çºè¡šãäžæããã£ãããšãæçš¿ãã å人ã§ãã Ben ãå«ã圌女ã®ãã©ãã¯ãŒã³ã¬ã¯ã·ã§ã³ã«éããŸãããBen ã¯ç¥çŠããå 容ã Alyssa ã®ã¡ãã»ãŒãžã«è¿ä¿¡ãã å®å ã«åœŒå¥³ã®ãã©ãã¯ãŒã³ã¬ã¯ã·ã§ã³ãå«ããŸãããããããBen 㯠Alyssa ã®ãã©ãã¯ãŒã³ã¬ã¯ã·ã§ã³ã®å 容ã«ã¢ã¯ã»ã¹åºæ¥ãªãã®ã§ã Ben ã®ãµãŒãã¯åœŒã®ã¡ãã»ãŒãžã圌ãã® inbox ã«è»¢éã§ããŸãããæ¬¡ã®æ©æ§ããªãå Žåããã®åŸ Alyssa ã Ben ã«è¿ä¿¡ãããšã 圌女ã®ãã©ãã¯ãŒã¯ãBen ã®è¿ä¿¡ãèŠãããšãªã Alyssa ã Ben ã«è¿ä¿¡ããã®ã èŠãããšã«ãªããŸããããã¯ãšãŠãæ··ä¹±ããŸã!
Activity ã inbox ã«åä¿¡ãããšãã ãµãŒãã¯ããããéä¿¡å
ãé
ä¿¡ã§ããªãå®å
ã«è»¢éããå¿
èŠãããããããè¡ãããã«ããµãŒãã¯æ¬¡ã®å
šãŠãçã®å Žåã«ã®ã¿ã to, cc, audience ã®å€ã«ã¿ãŒã²ããã㊠é
é ããªããã°ãªããªã(MUST):
to, cc, audience ã®å€ã« ãµãŒããææããŠããã³ã¬ã¯ã·ã§ã³ãå«ãŸããŠãããinReplyTo, object, target, tag ã®å€ã ãµãŒããææããŠãããªããžã§ã¯ãã§ããããµãŒãã¯ãèªèº«ãææããŠãããªã³ã¯ããããªããžã§ã¯ããæ¢ãããã«ãããã®å€ã ååž°ããã¹ãã§ãã(SHOULD)ã ååž°ã®äžéãèšå®ããã¹ãã§ãã(SHOULD) (ã€ãŸããã¹ã¬ãããæ·±ããªã£ãæç¹ã§ãåä¿¡ãã©ãã¯ãŒã¯ã åä¿¡è
ã«çŽæ¥é¢ä¿ãªãæŽæ°ãåãåããªããŠãæ°ã«ããªããããããªã)ããµãŒãã¯è»¢éãããå
ã®ãªããžã§ã¯ãã® to, cc, audience ã®å€ã®ã¿ã ã¿ãŒã²ãããã(ãããã®ã¢ãã¬ã¹ãæå³çã«å€æŽããããã¯ã©ã€ã¢ã³ãã«ãã£ãŠ) ãªã³ã¯ããããªããžã§ã¯ããååž°ããŠããéã®æ°ããåä¿¡è
ãæŸããªãããã« ããªãããã°ãªããªã(MUST)ããµãŒãã¯é éã¿ãŒã²ãããå®è£ äŸåã®èŠå(äŸãã° spam ãã£ã«ã¿)ã§ ãã£ã«ã¿ãªã³ã°ããŠããã(MAY)ã
inbox ã« Create ã¢ã¯ãã£ããã£ãåä¿¡ãããšãã«ã¯ã æå€ã«ãã»ãšãã©å¯äœçšã¯ãªã; ãã®ã¢ã¯ãã£ããã£ã¯ã¢ã¯ã¿ãŒã® inbox ã«çŸããã¹ãã§ã ãµãŒãã¯ãããããã®ã¢ã¯ãã£ããã£ãšããã«æ·»ä»ãããŠãããªããžã§ã¯ãã®è¡šçŸã ããŒã«ã«ã«ä¿ç®¡ãããã¯ãã§ãããããããããã¯ãšã«ãã inbox ã«ã¢ã¯ãã£ããã£ãé
éããããšãã« ã»ãšãã©äžè¬çã«åŠçãããããšã§ããã
ãµãŒããããµãŒããžã®éä¿¡ã§ã¯ã Update ã¢ã¯ãã£ããã£ã¯ã åã id ã® object ã®ã³ããŒãã Update ã¢ã¯ãã£ããã£ã®äžã«äŸçµŠãããŠããã³ããŒã§ æŽæ°ããã¹ãã§ãã(SHOULD)ã Update ã¢ã¯ãã£ããã£ã®ã¯ã©ã€ã¢ã³ããããµãŒããžã®æ±ã ãšç°ãªãã ããã¯éšåæŽæ°ã§ã¯ãªããªããžã§ã¯ãã®å®å
šãªçœ®ãæãã§ããã
åä¿¡ãµãŒã㯠Update ããã® object ãä¿®æ£ããæš©éãããããšã 確èªããããšã«æ³šæããªããã°ãªããªã(MUST)ãæå°éãšããŠããã㯠Update ãšãã® object ãåãéä¿¡å
ã§ããããšã確èªããããšã§è¡ãããã
(object ã¯éä¿¡ããã¢ã¯ã¿ãŒ/ãµãŒããææããŠãããšä»®å®ããŠ) ãããåä¿¡ãããšãã®å¯äœçšãšããŠã Delete ã¢ã¯ãã£ããã£ãåä¿¡ãããµãŒã㯠åã id ãæã€ object ã®è¡šçŸãåé€ããã¹ã(SHOULD)ã§ã 衚çŸã Tombstone ãªããžã§ã¯ãã«çœ®ãæããŠãè¯ã(MAY)ã
(ããã¢ã¯ãã£ããã£ãçºä¿¡å ãµãŒããããªã¢ãŒããµãŒãã«è»¢éãããåŸã ãªããžã§ã¯ãã®è¡šçŸããªã¢ãŒãããªã¢ãŒãã§åé€ããããšã 匷å¶ãã æ¹æ³ã¯ãActivityPub ãããã³ã«ã«ã¯ãªããšããããšã«æ³šæããããšã)
ããã inbox ã«åä¿¡ãããšãã®å¯äœçšãšããŠã ãµãŒãã¯ããã® Follow ã object ã«èšå®ãã Accept ãŸã㯠Reject ã¢ã¯ãã£ããã£ãçæãã Follow ãã ã¢ã¯ã¿ãŒ ã«é
éããã¹ãã§ãã(SHOULD)ãAccept ã Reject ã¯èªåçã«çæããŠãè¯ã(MAY)ãã (ããããã¯ãŠãŒã¶ãŒã®ç¢ºèªã®ããã®å€å°ã®é
å»¶ã®åŸ)ãŠãŒã¶ãŒå
¥åã® çµæãšããŠããã(MAY)ããµãŒã㯠Follow ãžã®å¿çãšããŠæç€ºçã« Reject ã éããªããšããéžæãããŠããã(MAY)ããå®è£
è
ã¯ãªã¯ãšã¹ããéä¿¡ãããµãŒãã äžéçãªç¶æ
ã®ãŸãŸã«ãªããããããªãããšã«æ³šæããã¹ãã§ãããäŸãã°ããµãŒãã¯ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãå®ãããã« Reject ã éä¿¡ããªããããããªãã
ãã® Follow ã object ãšããŠåç
§ããŠãã Accept ã åä¿¡ããå ŽåããµãŒã㯠object ã® actor ã® Followers ã³ã¬ã¯ã·ã§ã³ ã« ã¢ã¯ã¿ãŒ ã远å ããã¹ãã§ãã(SHOULD)ãReject ã®å Žåãobject ã® actor ã® Followers ã³ã¬ã¯ã·ã§ã³ ã« actor ã 远å ããŠã¯ãªããªã(MUST NOT)ã
æã
ãFollow 賌èªãæåãããã®ã®ãå°æ¥ã®ããæç¹ã§ é·æéãã©ãã¯ãŒãžã®é
éã倱æããããã«ãªãããšããããå®è£
ã¯ããããã¯ãŒã¯äžã®ã¢ã¯ã¿ãŒãå°éå¯èœã§ããç¶ããä¿èšŒããªãããšã«æ³šæãã ããã«å¿ããŠå®è£
ããã¹ãã§ãããäŸãšããŠãããã¢ã¯ã¿ãŒãžã®é
éã®è©Šã¿ãäŸãã° 6 ã¶æéãã©ãã¯ãŒã« å°éäžèœã§ããç¶ããå Žåãé
éãµãŒãããã®è³Œèªè
ã followers ãã åé€ããã®ã¯åççã§ãããå°éäžèœãªã¢ã¯ã¿ãŒãæ±ãããã®æéãšæ¯ãèãã¯é
éãµãŒãã® è£éã«å§ããããŠããã
ããã inbox ã«åä¿¡ããå Žåã®å¯äœçšã¯ãåä¿¡ãã object ã®åã«ãã£ãŠæ±ºå®ããã(äŸãã° Offer ã®ãããª) ãã®ææžã«èšè¿°ããŠããªãåãåãå
¥ããããšãå¯èœã§ããã
inbox ã«åä¿¡ãã Accept ã® object ãã以ååä¿¡è
ã«ãã£ãŠéããã Follow ã¢ã¯ãã£ããã£ã®å Žåã ãµãŒã㯠åä¿¡è
ã® Following ã³ã¬ã¯ã·ã§ã³n ã« actor ã远å ããã¹ãã§ãã(SHOULD)ã
ããã inbox ã«åä¿¡ããããšã«ããå¯äœçšã¯ã åä¿¡ãã object ã®åã«ãã£ãŠæ±ºå®ããã ãã®ææžã«èšè¿°ãããŠããªãå (äŸãã° Offer)ã æåŠããããšãã§ããã
inbox ã«åä¿¡ãã Reject ã® object ãã以ååä¿¡è
ã«ãã£ãŠéããã Follow ã¢ã¯ãã£ããã£ã®å Žåã ããã¯åãåãåŽã Follow ãªã¯ãšã¹ããæ¿èªããªãã£ãããšã æå³ããããµãŒãã¯åä¿¡è
ã® Following ã³ã¬ã¯ã·ã§ã³ ã« actor ã远å ããŠã¯ãªããªã(MUST)ã
Add ã¢ã¯ãã£ããã£ã inbox ã«åãåã£ããšãã æ¬¡ã®ãããªå Žåãé€ããŠããµãŒã㯠target 屿§ã§æå®ããã ã³ã¬ã¯ã·ã§ã³ã« object ã远å ããã¹ãã§ãã (SHOULD):
target ãåä¿¡ãµãŒããææããŠããããåŸã£ãп޿°ã§ããªãå Žåãobject ã target ã³ã¬ã¯ã·ã§ã³ã« 远å ããããšãèªããããŠããªãå ŽåãRemove ã¢ã¯ãã£ããã£ã inbox ã«åãåã£ããšãã æ¬¡ã®ãããªå Žåãé€ããŠããµãŒã㯠target 屿§ã§æå®ããã ã³ã¬ã¯ã·ã§ã³ãã object ãé€å»ããã¹ãã§ãã (SHOULD):
target ãåä¿¡ãµãŒããææããŠããããåŸã£ãп޿°ã§ããªãå Žåãobject ã target ã³ã¬ã¯ã·ã§ã³ãã åé€ããããšãèªããããŠããªãå Žåãããã inbox ã«åä¿¡ãããšãã®å¯äœçšãšããŠã ãµãŒãã¯ãlikes ã³ã¬ã¯ã·ã§ã³ãããå Žåã¯ã ãã®ã³ã¬ã¯ã·ã§ã³ã«åä¿¡ããã¢ã¯ãã£ããã£ã远å ããããšã§ ãã®ãªããžã§ã¯ãã®ãããã®ã«ãŠã³ããå¢ããã¹ãã§ãã (SHOULD)ã
Announce ã¢ã¯ãã£ããã£ã inbox ã« åãåã£ããšãããµãŒãã¯ãshares ã³ã¬ã¯ã·ã§ã³ãããå Žåã¯ããã®ã³ã¬ã¯ã·ã§ã³ã«åä¿¡ããã¢ã¯ãã£ããã£ã 远å ããããšã§ã ãã®ãªããžã§ã¯ãã®å
±æã®ã«ãŠã³ããå¢ããã¹ãã§ãã (SHOULD)ã
Announce ã¢ã¯ãã£ããã£ã¯äºå®äžä»ã®ãœãŒã·ã£ã«ãããã¯ãŒã¯ã§ã® "sharing", "reposting", "boosting" ãšããŠç¥ãããŠãããã®ã§ãããUndo ã¢ã¯ãã£ããã£ã¯ã以åã®ã¢ã¯ãã£ããã£ã®å¯äœçšã åãæ¶ãããã«äœ¿ããããActivityStreams ææžã® Inverse Activities and "Undo" ãåç
§ã®ããšãUndo ã¢ã¯ãã£ããã£ã®ã¹ã³ãŒããšå¶é㯠ã¯ã©ã€ã¢ã³ããµãŒãéã§ã® Undo ã¢ã¯ãã£ãã㣠ãšåæ§ã§ãããã é£åã³ã³ããã¹ãã«é©çšãããã
ãã®ç¯ã¯éèŠç¯çã§ããã
é£åãããã¯ãŒã¯ã«ãããŠãŠãŒã¶ãŒã®åœéåã®åºç€ãæ§ç¯ããããšã¯éèŠã§ããã ActivityStreams ã¯ã³ã³ãã³ãã®åœéåã®ããã®ããŒã«ãæäŸ ããŠããã å¯èœã§ããã°ããã䜿ãããã¹ãã§ããããããããŠãŒã¶ãŒãæçš¿ããã³ã³ãã³ãã«å¯ŸããŠã©ã® @language 屿§ ã æäŸããããæ±ºå®ããã®ã¯å®è£
äžé£ãããããããªããW3C Internationalization group ã¯ããã€ãã® èšèªæ€åºã®ã¬ã€ã ãæäŸããŠããã
ãã®ç¯ã¯éèŠç¯çã§ããã
äœããã®åœ¢ã®æ€èšŒãªãã«ããµãŒãã¯ã¯ã©ã€ã¢ã³ããæçš¿ããã³ã³ãã³ãã ä¿¡é Œããã¹ãã§ã¯ãªããã é£åãµãŒãã¯ã³ã³ãã³ãã®çºä¿¡æºä»¥å€ã®ãµãŒãããåãåã£ãã³ã³ãã³ãã ä¿¡é Œããã¹ãã§ã¯ãªãã
æ°ããã³ã³ãã³ããããããæçš¿ãããšäž»åŒµããŠããã¢ã¯ã¿ãŒããæ¬åœã« æçš¿ãããŠããããšãšããã®ã¢ã¯ã¿ãŒããã®ãªãœãŒã¹ãæŽæ°ããæš©éã æã£ãŠããããšãã ãµãŒãã¯æ éã«æ€èšŒããã¹ãã§ããã3. ãªããžã§ã¯ã ãš B.1 èªèšŒãšèªå¯ ãåç §ã®ããšã
éçºäžãlocalhost ã§å®è¡ããããã»ã¹ã«å¯ŸããŠãã¹ãããã®ã¯ãã°ãã°æçšã§ããããããã補åçã¯ã©ã€ã¢ã³ãããµãŒãã€ã³ã¹ã¿ã³ã¹ã§ localhost ãžã® ãªã¯ãšã¹ããèš±ãããšã¯å±éºãªããšããããèªèšŒãå¿ èŠãšããªã localhost ã® URI ãžã®ãªã¯ãšã¹ãã¯ãlocalhost ã§ã®ã¿ å©çšå¯èœãšããŠä¿è·ãããŠããããšãæ³å®ãããŠãããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãä¿®æ£ã æå³ããèµ·ããããšãããã
èªäœã® ActivityPub ãµãŒããã¯ã©ã€ã¢ã³ããéçºç®çã®ããã« localhost URI ãžã® ãªã¯ãšã¹ããèš±ãå Žåãããã©ã«ãã§ãªãã®èšå®ãªãã·ã§ã³ã«ããããšã èæ ®ããããšã
http ãš https ã«å ããŠãæ§ã
ãªçš®é¡ã® URI ããããã©ã€ãã©ãªã«ãã£ãŠã¯æ§ã
㪠URI ã¹ããŒã ã§ã®ãã§ãããªã¯ãšã¹ããæ±ãã è³¢ãããããšããŠãfile ã®ãã㪠æ³å®ããŠããªãã¹ããŒã ãåç
§ãããããããªããã¯ã©ã€ã¢ã³ããšãµãŒãã®äœè
ã¯ã©ã€ãã©ãªããªã¯ãšã¹ããã©ã®ããã«æ±ããã æ³šææ·±ããã§ãã¯ããhttp ãš https ã®ãããªã ç¹å®ã®å®å
šãª URI åã®ã¿ã®ãã¯ã€ããªã¹ããäœãã¹ãã§ããã
ãµãŒãã¯ãªããžã§ã¯ãããããã¯ç¹ã«ååž°åç §ãæã€ ActivityStream ãªããžã§ã¯ã㮠解決äžã«ã©ãã ãæ·±ãååž°ãããã®å¶éãèšå®ããã¹ãã§ããããããé©åã«è¡ãããšã«å€±æãããšããµãŒãã¹æåŠã»ãã¥ãªãã£è匱æ§ã èµ·ããããšãããã
ã¹ãã ã¯ãããããããã¯ãŒã¯ã§åé¡ã ããç¹ã«é£åãããã¯ãŒã¯ã§ã¯ããã§ãããActivityPub ã§ã¯ã¹ãã ãšéãããã®ç¹å®ã®æ©æ§ã¯æäŸããªããã ãµãŒãã¯ãããçš®ã®ã¹ãã ãã£ã«ã¿ãéããŠããŒã«ã«ã®ä¿¡é Œã§ããªããŠãŒã¶ãŒãšå šãŠã® ãªã¢ãŒããŠãŒã¶ãŒã®äž¡æ¹ããå ¥åãããå 容ããã£ã«ã¿ãªã³ã°ããããšãå§ããããã
ãµãŒãã¯ããã®ä»ã®é£åãµãŒãããã®ãµãŒãã¹äžèœæ»æã«å¯Ÿããé²åŸ¡ã å®è£ ããã¹ãã§ãããããã¯ãäŸãã°ãããçš®ã®ã¬ãŒãå¶éæ©æ§ã®ãããªãã®ã䜿ãããšã§å®çŸã§ããããµãŒãã¯ç¹ã«ãå¯äœçšãåŒãèµ·ããã¢ã¯ãã£ããã£ã«é¢ãã ãã®ä¿è·ãå®è£ ããããšã«æ³šæããã¹ãã§ããããµãŒãã¯ãäŸãã°ææ°ããã¯ãªãæŠç¥ã䜿ãããšã§ã éä¿¡ããããšã§ãµãŒããéè² è·ã«ããªãããã«æ°ã䜿ãã¹ãã§ãã(SHOULD)ã
ãµãŒã㯠API ã¯ã©ã€ã¢ã³ãéä¿¡ãã¬ãŒãå¶éããã¹ãã§ãããããã¯äºã€ã®ç®çããã:
倧ããããã³ã¬ã¯ã·ã§ã³ã«ãã£ãŠã¯ã©ã€ã¢ã³ããéè² è·ã«ãªãããšãé²ãããã«ã ãµãŒãã¯ã¯ã©ã€ã¢ã³ãã«è¿ãã³ã¬ã¯ã·ã§ã³ããŒãžã®å€§ãããå¶éããããšã« 泚æããã¹ãã§ãããã¯ã©ã€ã¢ã³ãããæªæãããµãŒããæ éãããµãŒããšæ¥ç¶ããå Žåã«åããŠã äŸãã°æéåãããšã©ãŒãçæããããšã§ãã¬ã¹ãã³ã¹ã®ãµã€ãºãå¶éããããšã« åããã¹ãã§ããã
ãã©ãŠã¶(ãŸãã¯ãã®ä»ã®ãªããããã¹ããæå¹ãªã¢ããªã±ãŒã·ã§ã³)ã§ ã¬ã³ããªã³ã°ãããå šãŠã®ã¢ã¯ãã£ããã£ãã£ãŒã«ãã¯ã ã¯ãã¹ãµã€ãã¹ã¯ãªããæ»æãé²ãããã«ãããŒã¯ã¢ãããå«ã ãã£ãŒã«ãã®ãµãã¿ã€ãºã«æ³šæããã¹ãã§ããã
bto ãš bcc ã¯ãã§ã«ã é
éæã«åé€ãããªããã°ãªããªããã ããããµãŒãã¯èªèº«ã®ã¹ãã¬ãŒãžã·ã¹ãã ã®äžã§ãªããžã§ã¯ããã©ã®ããã«è¡šçŸããã èªç±ã«æ±ºå®ã§ãããããããbto ãš bcc ã¯ãªããžã§ã¯ã/ã¢ã¯ãã£ããã£ã® å
ã®äœè
ã®ã¿ã«ãã£ãŠç¥ããã/èŠãããããšãæå³ããŠããã®ã§ã ãµãŒãã¯è¡šç€ºã«ãããŠãããã®å±æ§ãçç¥ããã¹ãã§ããã
ãã®ç¯ã¯éèŠç¯çã§ããã
ãã®ä»æ§ã¯ãweb äžã®é£å空éãæ¢çŽ¢ããå€ãã®ã³ãã¥ããã£ã«ããã äœå¹Žã«ããããå€å€§ãªåªåãšçµéšã«ç±æ¥ãããç¹ã«ããã®ä»æ§ã®å€ãã®éšåã¯ã StatusNet (çŸåšã¯ GNU Social) ãš Pump.io ã«ãã£ãŠéæããã OStatus ãš Pump API ãã æ å ±ãåããŠããããããã®äž¡æ¹ã®æ§æ³ã¯å€ãã®éçºè ã®å€å€§ãªåªåã®ææã§ãããã ãã®äžã§ããEvan Prodromou ã¯ãã®åéã§ã®å€ãããªããªãŒããŒã§ããã 圌ã®å€å€§ãªåªåãªãã«ã¯ãçŸåšã®ç¶æ ã®ãã㪠ActivityPub ã ååšããããšã¯ãªãã£ãã§ãããã
Erin Shepherd ã¯ã Pump API ææžã®ã¢ã€ãã¢ãåããŠããã®ä»æ§ã®åæçãäœæãã; æç« ã¯ã»ãšãã©å®å šã«æžãæããããããã»ãšãã©ã®åºæ¬çãªã¢ã€ãã¢ã¯å ±æãã ActivityStreams 1 ãã ActivityStreams 2 ã«åãæ¿ããã
Jessica Tallon ãš Christine Lemmer-Webber ã¯ã æšæºã W3C Social Working Group ã« ç§»åããæç¹ã§ç·šéè ãåŒãç¶ãã Erin Shepherd ã®ææžããçŸåšã® ActivityPub ã®ç¶æ ãžã®ç§»è¡ã®å€§éšåãè¡ããããSocial Working Group ã®é·ããã£ãŒãããã¯æç¶ãã®äžã ææžã®å€ãã¯æžãæããããåæ§æãããã
ActivityPub 㯠W3C Social Working Group ã® å€ãã®ã¡ã³ããŒã«ããæ³šææ·±ãå©èšã«ãã£ãŠåœ¢äœããããActivityPub ã¯ç¹ã« Amy Guy ã«å€ãã®åãããã; [Social-Web-Protocols] ã§ã®äœæ¥ãéããŠã Social Working Group ã®æ§ã ãªææžã«æž¡ãã¢ã€ãã¢ã ä»ã®èª°ãããå€ãäœçœ®ã¥ãããAmy ã¯ãŸããChristopher Allan Webber ãšå ±ã«ã4 æ¥éã®ã¹ããªã³ãã§ ActivityPub 仿§ã®å€§å¹ ãªãªãã¡ã¯ã¿ãªã³ã°ã®åºç€ãç¯ããããããã®æ¹èšã«ãããæ§ã ãªæ¹è¯ã®äžã§ããActivityPub ã® [LDN] ãšã®é¢ä¿ã® æç¢ºåãšãã¯ã©ã€ã¢ã³ã-ãµãŒãéä¿¡ãšãµãŒãééä¿¡ã®ããæç¢ºãªåé¢ãè¡ããããå®è£ å ±åãã³ãã¬ãŒããåããŸãšãã Benjamin Goering ã«ãç¹ã«æè¬ãããæã ã¯ãŸããçŽ æŽããããã¥ãŒããªã¢ã«ã€ã©ã¹ã (ããã¯ãã®ææžã®ä»ã®éšåãšåãã©ã€ã»ã³ã¹ãé©çšãããŠãã) ãäœæãã mray ã«ãæè¬ããã
ãŸããæ³šææ·±ãã¬ãã¥ãŒãéããŠå€ãã®äººã ã ActivityPub ãå©ãããç¹ã«ãæ¬¡ã®æ¹ã ã«æè¬ãã: Aaron Parecki, AJ Jordan, Benjamin Goering, Caleb Langeslag, Elsa Balderrama, elf Pavlik, Eugen Rochko, Erik Wilde, Jason Robinson, Manu Sporny, Michael Vogel, Mike Macgirvin, nightpool, Puck Meerburg, Sandro Hawke, Sarven Capadisli, Tantek Ãelik, and Yuri Volkov.
ãã®ææžã¯å°çäžã®å šãŠã®äœæ°ã«æ§ãããããªãéã«ã¯éä¿¡ã®èªç±ããã; ç§éã¯ããã®ãŽãŒã«ãšæš©å©ã«åããŠã å°ãããªãããäžéšè²¢ç®ããŠããããšãæåŸ ããã
1.1 Social Web Working Group
ActivityPub ã¯ãSocial Web Working Group ã«ãã£ãŠ çºè¡ãããŠããããã€ãã®é¢é£ãã仿§ã®äžã€ã§ãããä»£æ¿ææ³ãšè£å®ãããããã³ã«ã«é¢å¿ã®ããå®è£ è ã¯ã [Micropub] ãš æŠèŠ³ææž [Social-Web-Protocols] ã調æ»ãããšè¯ãã