Micropub-ja
Micropub ã¯ããªãŒãã³ãª Web æšæºïŒW3C å§åïŒã§ãããèªèº«ã®ãã¡ã€ã³ã®ãããªãŠã§ããµã€ãäžã§æçš¿ã®äœæãç·šéãåé€ãè¡ãããã® API ã§ããæ°å€ãã®ãµãŒãããŒãã£è£œã¯ã©ã€ã¢ã³ããCMSããœãŒã·ã£ã«ãªãŒããŒã«ãã£ãŠãµããŒããããŠããŸãã
- ææ°ã®å ¬éããŒãžã§ã³: https://www.w3.org/TR/micropub/
- ææ°ã®ãã©ãã: https://micropub.spec.indieweb.org/
ãªã
ãŠãŒã¶ãŒãšã㊠Micropub ã¢ããªã䜿çšããæå€§ã®çç±ã¯ããŠãŒã¶ãŒã«ããéžææš©ã«ãããŸããå ¬éã«äœ¿çšããã Micropub ã¢ããªã±ãŒã·ã§ã³ãšããããšã¯å¥ã«ã䜿çšããã Micropub 察å¿ãµãŒãã¹ãŸãã¯ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ãèªåã§éžæããããšãã§ããŸãã
éçºè ãšããŠã¯ã以äžãå«ãæ°å€ãã®çç±ããããŸãïŒ
- ãã¹ãã¹ã€ãŒãã ã¯ã©ã€ã¢ã³ãããã³ãµãŒããŒã®å®å šãªãã¹ãã¹ã€ãŒãïŒ https://micropub.rocks/
- 倿§ãªãããã¯ãŒã¯å¹æã ããªãã®å®è£ ãçžäºéçšã§ããã¯ã©ã€ã¢ã³ãããµãŒããŒãããã§ã«å€æ§ã«ååšããŠããŸãã
- ãŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãšã»ãã¥ãªãã£ã ãã¹ã¯ãŒãå ±æïŒãã°ãã°å¹³æïŒã«äŸåãã MetaWeblog ã AtomPub ã®äœ¿çšããOAuth ããŒã¹ã® Micropub ã«çœ®ãæããããšãã§ããŸãã
ã¯ã©ã€ã¢ã³ã
èªèº«ã®ãµã€ãã§ èšäºãçã ããŒããã³ã¡ã³ããããããåçãã€ãã³ãããã®ä»ã®çš®é¡ã® æçš¿ ãè¡ã£ããç·šéãããããããã«ãMicropub ããµããŒãããå¹ åºãã¢ããªïŒWebãiPhoneãAndroidïŒãååšããŸãã
Micropub çµç±ã§å ¬éãè¡ããµã€ããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã®ãªã¹ããããã³å®è£ ç¶æ³ã瀺ã衚ã«ã€ããŠã¯ãã¡ã€ã³èšäºã® Micropub ã¯ã©ã€ã¢ã³ã ãåç §ããŠãã ããã
ãµãŒããŒ
Micropub ãšã³ããã€ã³ãã®äŸã¯ Micropub/Servers ã«ãªã¹ããããŠããŸãã
ãã®ããŒãžã®æ®ãã®éšåã§ã¯ãMicropub ã®é«åºŠã«æè¡çãªè©³çްã«ã€ããŠèª¬æããŠãããçŸåšã¯éçºè åãã«æžãããŠããŸãã
èæ¯
Micropub ã®èªåœïŒVocabularyïŒã¯ãMicroformats ã®èªåœããçŽæ¥æŽŸçããŠããŸããMicropub ã¯ãHTTP POST ãšããŠéä¿¡å¯èœãª Microformats ã®ã·ãªã¢ã«åãšãªãããšãæå³ããŠããŸããæ°ãã Micropub èªåœãéçºããæ¹æ³ã¯ãMicroformats ã®è¡šçŸã確èªããããããéæ¹åã«ãã©ãããšã§ãã
æ§æ
Microformats ã HTML ããã¥ã¡ã³ããããŒã¿æ§é ã«ããŒã¹ããããã®æ¯èŒçå°ããªã«ãŒã«ã»ãããæã£ãŠããã®ãšåæ§ã«ãMicropub 㯠HTTP POST ããã³ GET ãªã¯ãšã¹ãã Micropub ã³ãã³ããšããŠè§£éããããã®å°ããªã«ãŒã«ã»ãããå®çŸ©ããŠããŸããMicroformats ã h-entry ã®ãããªãªããžã§ã¯ãã®æ°ããããããã£ãå°å ¥ããããã«ããŒã¹ã«ãŒã«ã倿Žããå¿ èŠããªãã®ãšåæ§ã«ãMicropub ãåç»ã®æçš¿ãšãããããã®æçš¿ãªã©ãç°ãªãæçš¿ã¿ã€ãã«å¯Ÿå¿ãããªã¯ãšã¹ããè§£éããããã«ããŒã¹ã«ãŒã«ã倿Žããå¿ èŠã¯ãããŸããã
Micropub ã®æ§æã¯ãHTTP POST ããã³ GET ãªã¯ãšã¹ãããµãŒããŒãå®è¡å¯èœãªæçšãªã¢ã¯ã·ã§ã³ã«è§£éããæ¹æ³ãèšè¿°ããŠããŸãã
å®å šãªä»æ§æžã¯ https://www.w3.org/TR/micropub/ ã§èªãããšãã§ããŸãã
æŠèŠ
æçš¿ãäœæããããã®ãã¹ãŠã® Micropub ãªã¯ãšã¹ãã¯ããã©ãŒã ãšã³ã³ãŒãïŒform-encodedïŒ[1]ããã«ãããŒãã»ãã©ãŒã ããŒã¿ïŒmultipart form-dataïŒ[2]ããŸã㯠JSON ãšã³ã³ãŒãããã HTTP ãªã¯ãšã¹ããšããŠéä¿¡ãããŸããã¬ã¹ãã³ã¹ã«ã¯éåžžã¬ã¹ãã³ã¹ããã£ã¯å«ãŸãããå¿ èŠãªæ å ±ïŒäœæãããæçš¿ã® URL ãªã©ïŒã¯ HTTP ããããŒã«ç€ºãããŸããã¬ã¹ãã³ã¹ããã£ãå¿ èŠãªå Žåã¯ãHTTP Accept[3] ããããŒã«å¿ããŠããã©ãŒã ãšã³ã³ãŒããŸã㯠JSON[4] ã®ããããã§è¿ãããŸãã
å®è£ æ¹æ³
ãšã³ããã€ã³ããçºèŠããŠããã«å ¬éã§ããã¯ã©ã€ã¢ã³ããããã³ãªã¯ãšã¹ãã«å¿ããŠæçš¿ã®äœæ/æŽæ°/åé€ãè¡ããšã³ããã€ã³ãããµããŒããããµãŒããŒã®äž¡æ¹ã«ãããŠãMicropub API ãå®è£ ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ãã¹ãã¹ã€ãŒããé²ããŠãMicropub ã®å®è£ ã¬ããŒããæåºããŸãããïŒ
- ããããéå§ïŒ https://micropub.rocks/
ãšã³ããã€ã³ãã®çºèŠ
IndieAuth ã䜿çšããŠèªèº«ã®ãã¡ã€ã³åãšããŠèªèšŒãè¡ãããšã§ãAPI ã¯ã©ã€ã¢ã³ããèšå®ã§ããå¿ èŠããããŸãããµã€ã³ã€ã³ããåŸãèªèº«ã®ãã¡ã€ã³ã¯ãã¯ã©ã€ã¢ã³ããæ°ããæçš¿ãäœæããããã«äœ¿çšãã API ãšã³ããã€ã³ããæå®ããæ¹æ³ãå¿ èŠãšããŸãã
ããŒã ããŒãžã® HTML head å ã« <link> ã¿ã°ã远å ããããHTTP Link ããããŒãéä¿¡ããŸãã
HTTP ããããŒ
Link: <https://example.com/micropub>; rel="micropub"
HTML Head
<link rel="micropub" href="https://example.com/micropub">
èªèšŒ
Micropub ãªã¯ãšã¹ãã¯ãOAuth Bearer Token RFC ã«èšè¿°ãããŠããããã«ãHTTP ããããŒãŸãã¯ãã©ãŒã ãšã³ã³ãŒããããããã£ãã©ã¡ãŒã¿ã®ããããã«ãã¢ã©ãŒããŒã¯ã³ïŒBearer TokenïŒãå«ããããšã§èªèšŒãããŸãã
èªå¯ã¯ãOAuth 2.0 ã®äžã«æ§ç¯ããã IndieAuth ãããã³ã«ãä»ããŠåŠçãããã¹ãã§ãã詳现ã«ã€ããŠã¯ obtaining-an-access-token ãåç §ããŠãã ããããŠãŒã¶ãŒã® Micropub ãšã³ããã€ã³ãã«æçš¿ãããã¢ããªã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ãååŸããããã«ãŠãŒã¶ãŒããèªå¯ãåŸãå¿ èŠããããŸãã
HTTP ããããŒ
Authorization: Bearer XXXXXXXX
ãã©ãŒã ãšã³ã³ãŒããããããã£ãã©ã¡ãŒã¿
access_token=XXXXXXXXX
ã¹ã³ãŒã
ã¯ã©ã€ã¢ã³ãã¯èªå¯ãªã¯ãšã¹ãäžã«1ã€ä»¥äžã®ã¹ã³ãŒããèŠæ±ããããšãã§ããŸããããã¯ãèªå¯ãªã¯ãšã¹ãã®äžã§ã¹ããŒã¹åºåãã®ã¹ã³ãŒãåã®ãªã¹ããæž¡ããšãããæšæºç㪠OAuth 2.0 ã®ææ³ã«åŸã£ãŠè¡ãããŸãã
èªå¯ãµãŒããŒã¯ãèªå¯ãµãŒããŒããã®ã¹ã³ãŒããèªèããŠãããã©ããã«ãããããããªã¯ãšã¹ãã®äžéšã§ãããã¹ãŠã®ã¹ã³ãŒãããŠãŒã¶ãŒã«ç€ºãå¿ èŠããããŸãããŸããèªå¯ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ããèŠæ±ããã¹ã³ãŒãããŠãŒã¶ãŒã远å ãŸãã¯åé€ã§ããããã«ããŠãæ§ããŸããã
äŸãã°ãã»ãšãã©ã® Micropub ãµãŒããŒã¯ãæçš¿ãäœæããããã«ã¯ã©ã€ã¢ã³ãã "create" ã¹ã³ãŒããååŸããããšãèŠæ±ããŸããïŒã¬ã¬ã·ãŒãª "post" ã¹ã³ãŒãã¯ã以åã¯äœæãšæŽæ°ã®äž¡æ¹ãç¶²çŸ ããŠããŸãããïŒããããäžéšã®ãµãŒããŒã§ã¯ã"delete" ã "create:video" ãªã©ããããã现ããªã¹ã³ãŒãã®ãªã¯ãšã¹ããèŠæ±ããå ŽåããããŸãã詳现ããã³çŸåšäœ¿çšãããŠãããã¹ãŠã®ã¹ã³ãŒãå€ã®ãªã¹ãã«ã€ããŠã¯ãscope ãåç §ããŠãã ããã
æ€èšŒ
Micropub ã¯ã©ã€ã¢ã³ãã¯ããŠãŒã¶ãŒã® ããŒã¯ã³ãšã³ããã€ã³ã ã«åãåãããããšã§ãã¢ã¯ã»ã¹ããŒã¯ã³ããŸã æå¹ã§ããããšïŒããã³ãã®ä»ã®è©³çްïŒã確èªã§ããŸãã
課é¡ïŒ
- ããã¯ãäŸãã°ãŠãŒã¶ãŒã®ãµã€ããžã®ã¢ã¯ã»ã¹æš©ãåé€ãããããã«ããµãŒããŒãããŒã¯ã³ãåãå
¥ããªãããšã決å®ããå Žåãã«ããŒããŠããŸããã
- Micropub ãšã³ããã€ã³ããå°æ¥çã«ããŒã¯ã³ãæåŠããäºå®ãããå Žåã¯ãããŒã¯ã³ãšã³ããã€ã³ãããã®ããŒã¯ã³ãæåŠããããã«ããå¿ èŠããããŸããããŒã¯ã³ãšã³ããã€ã³ããš Micropub ãšã³ããã€ã³ããåããœãããŠã§ã¢ã®äžéšã§ããã·ã¹ãã ã§ã¯ãããã¯å®è£ ã®è©³çްã§ããããŒã¯ã³ãšã³ããã€ã³ããš Micropub ãšã³ããã€ã³ããç°ãªãã·ã¹ãã ã«ããå Žåã¯ãMicropub ãšã³ããã€ã³ããããŒã¯ã³ãšã³ããã€ã³ãã§ããŒã¯ã³ãæéåãã«ããããã®ã¡ã«ããºã ãå¿ èŠã§ããããã¯ããŒã¯ã³å€±å¹ïŒtoken revocationïŒãšããŠç¥ãããŠãããOAuth 2 åãã«æžãäžããããŠããŸãïŒ https://tools.ietf.org/html/rfc7009
ãã©ãŒã ãšã³ã³ãŒãããã Microformats 衚çŸ
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äœæãã·ã³ãã«ã«ããããã«ããã¹ãŠã® Micropub ãšã³ããã€ã³ãã¯æšæºã®ãã©ãŒã ãšã³ã³ãŒã圢åŒãåŠçããå¿ èŠããããŸããæãåºæ¬çãªã¬ãã«ã§ã¯ãHTML ãã©ãŒã ãäœæãããã©ãŒã ã® action ãèªèº«ã®ãšã³ããã€ã³ãã«èšå®ããŠãèªèº«ã®ãµã€ããžã®æçš¿ã«äœ¿çšã§ããã¯ãã§ãã
ãªããžã§ã¯ãäœæã®äŸ
äžè¬ç㪠æçš¿ã¿ã€ã ã®äœææ¹æ³ã§ãã
äœæããããªããžã§ã¯ãã®æå®
äœæããããªããžã§ã¯ããæå®ããã«ã¯ã"h"ïŒãã㯠Microformats ãªããžã§ã¯ãã®ããããã£åã«ã¯ãªãåŸãŸããïŒãšããååã®ããããã£ã䜿çšãããã®åŸã« Microformats ãªããžã§ã¯ãã®ååãç¶ããŸããäŸïŒ
- h=entry
- h=card
- h=event
- h=cite
h-entry
æ°ãã h-entry ãäœæãããªã¯ãšã¹ãã«ã¯ã以äžã®ããããã£ãå«ãŸããå ŽåããããŸãïŒ
- name
- summary
- content
- published
- updated
- category = tag1, tag2, tag3 (é
åæ§æãšããŠéä¿¡ïŒ
&category[]=tag1&category[]=tag2) - location
- Geo URI ãšããŠãäŸïŒ
geo:45.51533714,-122.646538633- GeoURI ã§ã¯ãå Žæã®åç§°ãå«ããããã«äœ¿çšã§ãã 远å ãã©ã¡ãŒã¿ ãèš±å¯ãããŠããŸãïŒ
geo:1,2;name=Somewhere
- GeoURI ã§ã¯ãå Žæã®åç§°ãå«ããããã«äœ¿çšã§ãã 远å ãã©ã¡ãŒã¿ ãèš±å¯ãããŠããŸãïŒ
- h-card ãå«ã URL ãšããŠã
- ç§ã® Micropub ã¯ã©ã€ã¢ã³ãã«ã¯çŸåšã緯床çµåºŠå€ã§ç¹å®ã®å ŽæãããŒã¯ããããã®å°å³ãšãå®éã®å Žæåãå ¥åããããã®ããã¹ãå ¥åããããŸãããã®ãããç§ã®ã¯ã©ã€ã¢ã³ã㯠"&location=1.23,%40-4.56:An%40Address" ãšãã圢åŒã®ãªã¯ãšã¹ããéä¿¡ããŠããŸãã Jonnybarnes.net 07:57, 10 June 2014 (PDT)
- Geo URI ãšããŠãäŸïŒ
- in-reply-to
- like-of
- repost-of
- syndication
- ãã®ãšã³ããªããã§ã«ååšããŠããå Žæãæã1ã€ä»¥äžã® URL ãæž¡ããŸãã PESOS ã®å®è£ ã«äœ¿çšã§ããŸãã
- mp-syndicate-to = https://myfavoritesocialnetwork.example/aaronpk, https://archive.org/ ãªã©ã
- ãã®ããããã£ã¯ããªããžã§ã¯ããèšè¿°ããã®ã§ã¯ãªããµãŒããŒã«ã³ãã³ããäžãããã®ã§ãããããä»ã®ããããã£ãšã¯ãããã«ç°ãªãã"mp-" ãšãããã¬ãã£ãã¯ã¹ãä»ããããŠããŸãã
æ°ããããŒã
ã¿ã°ãä»ããmyfavoritesocialnetwork ã«ã·ã³ãžã±ãŒã·ã§ã³ïŒè»¢èŒïŒãè¡ããæ°ãã ããŒã ã®æçš¿ïŒ
- content
- category
- mp-syndicate-to
- published (ä»»æãååšããªãå Žåã¯ããã©ã«ãã§ãçŸåšãã«ãªããŸãããªãã©ã€ã³ã§æžããŠåŸã§åæããå Žåã«äŸ¿å©ã§ã)
POST /micropub HTTP/1.1 Host: aaronparecki.com Content-type: application/x-www-form-urlencoded h=entry &content=The+%40Jawbone+UP%2C+my+favorite+of+the+%23quantifiedself+trackers%2C+finally+released+their+official+API%21+http%3A%2F%2Fjawbone.com%2Fup%2Fdeveloper%2F &category[]=jawbone&category[]=quantifiedself&category[]=api &mp-syndicate-to=https://myfavoritesocialnetwork.example/aaronpk
æå°éã®äŸ
POST /micropub HTTP/1.1 Host: example.com Content-type: application/x-www-form-urlencoded Authorization: Bearer XXXXXXX h=entry &content=Hello+World
curl https://example.com/micropub -d h=entry -d "content=Hello World" -H "Authorization: Bearer XXXXXXX"
æ°ããè¿ä¿¡
æ°ãã è¿ä¿¡ ã®æçš¿ãmyfavoritesocialnetwork ãžã®ã·ã³ãžã±ãŒã·ã§ã³ïŒ
- content
- in-reply-to
- mp-syndicate-to
- published
POST /post/new HTTP/1.1 Host: aaronparecki.com Content-type: application/x-www-form-urlencoded h=entry &content=%40BarnabyWalters+My+favorite+for+that+use+case+is+Redis.+It%27s+easy+to+set+up+and+use%2C+I+often+use+it+to+move+data+between+apps+written+in+different+languages+too. &in-reply-to=http://waterpigs.co.uk/notes/4S0LMw/ &mp-syndicate-to=https://myfavoritesocialnetwork.example/aaronpk
æ°ãããªãã¹ã
æ°ãã ãªãã¹ã ãæçš¿ãã远å ã®ã¿ã°ãä»äžããŸãã
- repost-of
- category
POST /micropub HTTP/1.1 Host: aaronparecki.com Content-type: application/x-www-form-urlencoded h=entry &repost-of=http://waterpigs.co.uk/notes/4S0LMw/ &category=realtime
æ°ããèšäº
æ°ãã èšäº ã®æçš¿
- content
- name
- category
- published
POST /micropub HTTP/1.1 Host: aaronparecki.com Content-type: application/x-www-form-urlencoded h=entry &content=Now+that+I%27ve+been+%5Bhttp%3A%2F%2Faaronparecki.com%2Fevents+creating+a+list+of+events%5D+on+my+site+using+%5Bhttp%3A%2F%2Findiewebcamp.com%2Fp3k+p3k%5D%2C+it+would+be+great+if+I+could+get+a+more+calendar-like+view+of+that+list.+%0A%0ASince+I+live+in+Google+Calendar+every+day+anyway%2C+it+would+be+great+to+use+that+interface+to+browse+my+%23indieweb+events+as+well%21+Since+my+events+page+is+marked+up+with+%5Bhttp%3A%2F%2Fmicroformats.org%2Fwiki%2Fh-event+h-event+microformats%5D%2C+all+it+would+take+is+to+write+an+h-event+to+iCal+converter+script+to+generate+an+iCal+feed+from+my+list+of+events.+Then+I+could+just+subscribe+to+the+iCal+feed+from+within+Google+Calendar.%0A%0A%23%23%23+Bonus%3A+read%2Fwrite+access+to+indieweb+events+via+Google+Calendar%0A%0AEven+better+would+be+to+use+Google+Calendar+to+also+create+events+on+my+site.+Unfortunately+Google+Calendar+doesn%27t+support+CalDAV%2C+so+we+can%27t+do+it+that+way.+%28Of+course+I+could+use+Apple%27s+iCal+to+publish+directly%2C+but+that+also+means+I%27d+have+to+write+some+code+tot+speak+CalDAV%29.+%0A%0AInstead%2C+I+can+create+a+%22write-only%22+calendar+in+Google+Calendar%2C+and+have+p3k+subscribe+to+it.+Any+new+events+in+that+feed+would+be+moved+over+to+the+internal+events+page+and+deleted+from+the+Google+Calendar. &name=Itching%3A+h-event+to+iCal+converter &category[]=indieweb&category[]=hevent&category[]=events&category[]=calendar&category[]=p3k
æ°ããããã¯ããŒã¯
ååãåŒçšãããã³ã¿ã°ãå«ããæ°ãã ããã¯ããŒã¯ ã®æçš¿ã
- bookmark-of
- name
- content
- category
POST /micropub HTTP/1.1 Host: aaronparecki.com Content-type: application/x-www-form-urlencoded h=entry &bookmark-of=https%3A%2F%2Fplus.google.com%2F%2BKartikPrabhu%2Fposts%2FUzKErSbfmHq &name=To+everyone+who+is+complaining+about+Popular+Science+shutting+down+comments... &content=%22Why+is+there+this+expectation+that+every+website+should+be+a+forum%3F+No+website+has+any+obligation+to+provide+a+space+for+your+rants.+Use+your+own+space+on+the+web+to+do+that.%22 &category[]=indieweb&category[]=comments
ãã¡ã€ã«ã®è¿œå
Micropub ãªã¯ãšã¹ãã«ãã¡ã€ã«ãå«ãŸããå Žåããªã¯ãšã¹ãå
šäœã¯ multipart/form-data ãšã³ã³ãŒãã£ã³ã°ã§éä¿¡ããããã¡ã€ã«ã¯ã³ã³ãã³ãã¿ã€ãã«å¿ã㊠"audio"ã"video"ããŸã㯠"photo" ã®ããããã§åœåãããŸãããªã¯ãšã¹ãã«ã¯ããããã®ãã¡ã€ã«ã1ã€ä»¥äžå«ããããšãã§ããŸãã
OwnYourGram ããããªãæçš¿ããããã« Micropub ãªã¯ãšã¹ããè¡ãéããããªã®ãµã ãã€ã«ãã¬ãã¥ãŒã§ããåçãéä¿¡ãããŸãã
PHP ã§ã¯ããããã®ãã¡ã€ã«ã¯ $_FILES é
åã䜿çšããŠã¢ã¯ã»ã¹å¯èœã§ãïŒ
$_FILES['video']
$_FILES['photo']
$_FILES['audio']
åç §ïŒ Micropub-brainstorming#Uploading_files_in_separate_requests
ãªãããªã¯ãšã¹ãããã£ã JSON ãšã³ã³ãŒããããŠããå Žåããã¡ã€ã«ãã¢ããããŒãããå®çšçãªæ¹æ³ã¯ãããŸããããã®å Žå㯠ã¡ãã£ã¢ãšã³ããã€ã³ã ã䜿çšããå¿ èŠããããŸãã
curl ã®äŸïŒ
$ curl -H 'Authorization: Bearer abc'\ -F 'h=entry'\ -F 'content=an image!'\ -F 'photo=@/home/cweiske/Bilder/openid-id.bogo.png'\ 'http://known.bogo/micropub/endpoint'
h-event
æ°ãã h-event ãäœæãããªã¯ãšã¹ãã«ã¯ã以äžã®ããããã£ãå«ãŸããå ŽåããããŸãïŒ
æ°ããã€ãã³ãã®æçš¿
- name
- summary
- description
- start
- end
- duration
- category
- location
POST /micropub HTTP/1.1 Host: aaronparecki.com Content-type: application/x-www-form-urlencoded h=event &name=IndieWeb Dinner at 21st Amendment &description=In SF Monday evening? Join @caseorganic and I for an #indieweb dinner at 6pm! (Sorry for the short notice!) &start=2013-09-30T18:00:00-07:00 &category=indieweb &location=http://21st-amendment.com/
h-cite
æ°ãã h-cite ãäœæãããªã¯ãšã¹ãã«ã¯ã以äžã®ããããã£ãå«ãŸããå ŽåããããŸãïŒ
ïŒä»¥äžã®ãªã¹ã㯠microformats.org/wiki/h-cite ããã®åŒçšã§ãïŒ
- name
- published - äœåã®åºçæ¥ïŒh-cite ãäœæãããæ¥ä»ã§ã¯ãããŸããïŒ
- author - h-card ã® URL
- url - åŒçšãããäœåã«ã¢ã¯ã»ã¹ããããã® URL
- content - äœåèªäœã®ã³ã³ãã³ããŸãã¯éšåçãªã³ã³ãã³ãïŒäœåã®åŒçšã¹ãããããå«ãå Žåãªã©ïŒ
å ¥ãåã«ãªã£ã Microformats ãªããžã§ã¯ã
å¯èœãªéããå ¥ãåã«ãªã£ã Microformats ãªããžã§ã¯ãïŒNested Microformats ObjectsïŒã¯é¿ããã¹ãã§ããããè¯ãä»£æ¿æ¡ã¯ããªããžã§ã¯ãããã® URL ã§åç §ããããšã§ããæãäžè¬çãªäŸã¯ãå Žæãžã®ãã§ãã¯ã€ã³ãåçãžã®äººç©ã»å Žæã®ã¿ã°ä»ããªã©ãäŒå ŽïŒvenueïŒã® h-card ãå«ããå Žåã§ãããããã®ã±ãŒã¹ã§ã¯ãå¿ èŠã«å¿ããŠãªããžã§ã¯ããå ã«äœæããäžã§ãURL ã§ãªããžã§ã¯ããåç §ããæ¹ãé©åã§ãã
緯床ãšçµåºŠãæã€ h-geo ããããã£ã®ãããªåçŽãªå€ã®å Žåã¯ãåã« geo:37.786971,-122.399677 ã®ãã㪠Geo URI ã䜿çšããŠãã ããã
ãã®ææ³ã«ã¯ãäœæãããåãªããžã§ã¯ããç¬èªã® URL ãæã€ïŒåããŒã¿ãç¬èªã®ãªã³ã¯ãæã€ïŒããšãä¿èšŒã§ãããšããå©ç¹ããããŸããããã«ããããµãŒããŒåŽã§åãšã³ãã£ãã£ãåå¥ã«åŠçããæ©äŒãåŸãããŸããäŸãã°ãæ¢åã®äŒå Žã®è€è£œãäœæããã®ã§ã¯ãªãããã§ã«äœæãããŠããäŒå Žãžã®ãªã³ã¯ãè¿ããå¿ èŠã«å¿ããŠæ°ããåä¿¡ããããŒã¿ãå ã«ããŒãžãããšãã£ãåŠçãå¯èœã«ãªããŸãã
ããè€éãªãªããžã§ã¯ãã®å Žåã¯ããŸãã¿ãŒã²ãããµã€ãäžã«ãªããžã§ã¯ããäœæããŠç¬èªã® URL ãæããããã®åŸã«ã¡ã€ã³ã®ãªã¯ãšã¹ãã§ãã®ãªããžã§ã¯ãã® URL ãåç §ããæ¹ãè¯ãã§ãããã
äŸãã°ããã§ãã¯ã€ã³æçš¿ãäœæããå Žåã2ã€ã® POST ãªã¯ãšã¹ããå¿ èŠã«ãªããŸãïŒ
ãŸããh-card ããã¹ãããŠäŒå ŽãäœæããŸãïŒ
POST /micropub h=card &name=Ford+Food+and+Drink &url=http://www.fordfoodanddrink.com/ &street-address=2505 SE 11th Ave &locality=Portland ®ion=OR &postal-code=97214 &geo=geo:45.5048473,-122.6549551 &tel=(503) 236-3023
ã¬ã¹ãã³ã¹ïŒ
HTTP/1.1 201 Created Location: http://example.com/venue/10
次ã«ããã§ãã¯ã€ã³æçš¿ãäœæããŸãïŒ
POST /micropub h=entry &location=http://example.com/venue/10 &name=Working on Micropub &category=indieweb
ã¬ã¹ãã³ã¹ïŒ
HTTP/1.1 201 Created Location: http://example.com/entry/1001
- ãã®ææ³ã«ã¯ãäœæãããåãªããžã§ã¯ããç¬èªã® URL ãæã€ïŒåããŒã¿ãç¬èªã®ãªã³ã¯ãæã€ïŒããšãä¿èšŒã§ãããšããå©ç¹ããããŸãã
- ãŸãããµãŒããŒåŽã§åãšã³ãã£ãã£ãåå¥ã«åŠçããæ©äŒãåŸãããŸããäŸãã°ãæ¢åã®äŒå Žã®è€è£œãäœæããã®ã§ã¯ãªãããã§ã«äœæãããŠããäŒå Žãžã®ãªã³ã¯ãè¿ããå¿ èŠã«å¿ããŠæ°ããåä¿¡ããããŒã¿ãå ã«ããŒãžãããšãã£ãåŠçãå¯èœã«ãªããŸãã
Micropub ãªã¯ãšã¹ãã®åŠç
ãã®å®è£ ã¬ã€ãã®è§£èª¬ã§ã¯ã以äžã®ãšã©ãŒã¬ã¹ãã³ã¹ã®ç¥èšã䜿çšããŠããŸãïŒ
- ãunauthorized ãè¿ãããšã¯ãHTTP 401 ã¬ã¹ãã³ã¹ãè¿ãããšãæå³ããŸãããªãã·ã§ã³ã§ããã¡ãã§å®çŸ©ãããŠãã JSON ãšã³ã³ãŒãããã unauthorized ãšã©ãŒãã€ããŒããå«ããŸãã
- ãforbidden ãè¿ãããšã¯ãHTTP 403 ã¬ã¹ãã³ã¹ãè¿ãããšãæå³ããŸãããªãã·ã§ã³ã§ããã¡ãã§å®çŸ©ãããŠãã JSON ãšã³ã³ãŒãããã forbidden ãšã©ãŒãã€ããŒããå«ããŸãã
- ãinvalid_request ãè¿ãããšã¯ãHTTP 400 ã¬ã¹ãã³ã¹ãè¿ãããšãæå³ããŸãããªãã·ã§ã³ã§ããã¡ãã§å®çŸ©ãããŠãã JSON ãšã³ã³ãŒãããã invalid_request ãšã©ãŒãã€ããŒããå«ããŸãã
- ãinsufficient_scope ãè¿ãããšã¯ãHTTP 403 ã¬ã¹ãã³ã¹ãè¿ãããšãæå³ããŸãããªãã·ã§ã³ã§ããã¡ãã§å®çŸ©ãããŠãã JSON ãšã³ã³ãŒãããã insufficient_scope ãšã©ãŒãã€ããŒããå«ããŸãã
Micropub ãšã³ããã€ã³ããžã® HTTP ãªã¯ãšã¹ããåŠçããã«ã¯ïŒ
- èªèšŒããŒã¯ã³ïŒauth tokenïŒãæ¢ããŸãã
- ãªã¯ãšã¹ãã«
Authorization: BearerããããŒãããå Žåãauth_token ã«Bearer以éã®æååã®å€ãèšå®ããç©ºçœæåãåãé€ããŸãã - ããã§ãªãå Žåãã¡ãœããã POST ã§ããããã©ãŒã ãšã³ã³ãŒãããããªã¯ãšã¹ãããã£ã®è§£ææžã¿ã³ã³ãã³ãã« auth_token ããŒãå«ãŸããŠããã°ãauth_token ã«ãã®ããŒã«é¢é£ä»ããããå€ãèšå®ããŸãã
- ãªã¯ãšã¹ãã«
- auth_token ãèŠã€ãããªãå Žåã¯ãunauthorized ãè¿ããŸãã
- auth_token ãèŠã€ãã£ãå Žåã¯ããã®æ€èšŒã詊ã¿ãŸãã詳现㯠Micropub ã®ç¯å²å€ã§ãã®ã§ã詳现ã«ã€ããŠã¯ IndieAuth ãåç
§ããŠãã ããã
- auth_token ãç¡å¹ãªå Žåã¯ãforbidden ãè¿ããŸãã
- ããã§ãªãå Žåã¯ãåŸã§åç §ã§ããããã« auth_token ã«é¢é£ä»ãããããŠãŒã¶ãŒæ å ±ãä¿åããŸãã
- Micropub æ¡åŒµæ©èœããµããŒãããŠããå Žåã¯ããªã¯ãšã¹ããæ¡åŒµæ©èœãªã¯ãšã¹ãã§ãããã©ãããæ€åºããé©åã«åŠçããŸãã
- ãªã¯ãšã¹ãã GET ãªã¯ãšã¹ãã§ããå Žåã¯ãã¯ãšãªæååãããŒã¹ã㊠query_params ãšããŸãã
- query_params ã« q ããŒãå«ãŸããŠããå Žåã¯ãããã q ã®äžã«æ ŒçŽããŸãã
- ãã
q == "config"ã§ããã°ããã¡ãã§å®çŸ©ãããŠããæå¹ãª JSON ãšã³ã³ãŒããããèšå®ã¬ã¹ãã³ã¹ãè¿ããŸãã - ããã§ã¯ãªãããã
q == "source"ã§ããã°ãquery_params ã«urlããŒãããã確èªããŸãã- url ããŒãååšããªãå ŽåããŸã㯠query_params.url ã§ç¹å®ãããã³ã³ãã³ããååšããªãå Žåã¯ãinvalid_request ãè¿ããŸãã
- query_params.url ã§ç¹å®ãããã³ã³ãã³ãã¯ååšããããçŸåšã® auth_token ã«ãããé²èЧããã¹ã³ãŒããä»äžãããŠããªãå Žåã¯ãinsufficient_scope ãè¿ããŸãã
- source_properties ãšããååã®ç©ºã®ãªã¹ããäœæããŸãã
- query_params ã«
propertiesããŒãå«ãŸããŠããå Žåã¯ãquery_params.properties ã®äžã®é¢é£ä»ããããå€ã source_properties ã«è¿œå ããŸãã - ããã§ãªãå Žåãquery_params ã«
properties[]ããŒã«é¢é£ä»ãããã1ã€ä»¥äžã®å€ãå«ãŸããŠããå Žåã¯ãåå€ã source_properties ã«è¿œå ããŸãã
- query_params ã«
- url ãš source_properties ã®å€ã«åºã¥ããŠãæå¹ãª ãœãŒã¹ã³ã³ãã³ãïŒSource ContentïŒ ã¬ã¹ãã³ã¹ãäœæããŠè¿ããŸãã
- ããã§ã¯ãªãããã
q == "syndicate-to"ã§ããã°ãæå¹ãª JSON ãšã³ã³ãŒãããã ã·ã³ãžã±ãŒã·ã§ã³ã¿ãŒã²ããïŒSyndication TargetïŒ ã¬ã¹ãã³ã¹ãè¿ããŸãã - ãããŸã§å°éããå Žåããã®ãªã¯ãšã¹ãã¯äžæãª GET ãªã¯ãšã¹ãã§ããinvalid_request ãè¿ããŸãã
- ãã
- query_params ã« q ããŒãå«ãŸããŠããå Žåã¯ãããã q ã®äžã«æ ŒçŽããŸãã
- ããã§ã¯ãªãããªã¯ãšã¹ãã POST ãªã¯ãšã¹ãã§ããå ŽåïŒ
- ãªã¯ãšã¹ãã«
Content-type: application/jsonããããŒãããå Žåã¯ããªã¯ãšã¹ãããã£ã JSON ãšããŠããŒã¹ãããã®çµæã request_body ã«å²ãåœãŠãŸããããŒã¹ãšã©ãŒã®å Žå㯠invalid_request ãè¿ããŸãã - ããã§ã¯ãªãããªã¯ãšã¹ãã«
Content-type: x-www-form-urlencodedãããå Žåã¯ããªã¯ãšã¹ãããã£ãããŒã¹ãããã®çµæã request_body ã«å²ãåœãŠãŸããããŒã¹ãšã©ãŒã®å Žå㯠invalid_request ãè¿ããŸãã - ããã§ã¯ãªãããªã¯ãšã¹ãã«
Content-type: multipart/form-dataãããå Žåã¯ããªã¯ãšã¹ãããã£ãããŒã¹ããŸãããã©ãŒã éšåã request_body ã«ããã¡ã€ã«éšåã request_files ã«å²ãåœãŠãŸãã - ããã§ãªãå Žåããªã¯ãšã¹ãã¯ãµããŒããããŠããªã圢åŒã§ããinvalid_request ãè¿ããŸãã
- request_body ã« action ããŒãå«ãŸããŠããå ŽåïŒ
- ãã
request_body.action == "delete"ã§ããã°ïŒ- ãšã³ããã€ã³ããåé€ããµããŒãããŠããªãå Žåã¯ãinvalid_response ãè¿ããŸãã
- request_body ã«
urlããŒãããã確èªããŸããããŒããªãå ŽåããŸã㯠request_body.url ãåé€å¯èœãªã³ã³ãã³ããç¹å®ããŠããªãå Žåã¯ãinvalid_request ãè¿ããŸãã - access_token ã«ãrequest_body.url ã§ç¹å®ãããã³ã³ãã³ããåé€ããããã«å¿ èŠãªã¹ã³ãŒããããã確èªããŸãããªãå Žåã¯ãinsufficient_scope ãè¿ããŸãã
- request_body.url ã§ç¹å®ãããã³ã³ãã³ããåé€ããŸãã空㮠HTTP 204 ã¬ã¹ãã³ã¹ãè¿ããŸãã
- ããã§ã¯ãªãããã
request_body.action == "undelete"ã§ããã°ïŒ- ãšã³ããã€ã³ããåé€åãæ¶ãïŒundeleteïŒããµããŒãããŠããªãå Žåã¯ãinvalid_response ãè¿ããŸãã
- request_body ã«
urlããŒãããã確èªããŸããããŒããªãå ŽåããŸã㯠request_body.url ãåé€åãæ¶ãå¯èœãªã³ã³ãã³ããç¹å®ããŠããªãå Žåã¯ãinvalid_request ãè¿ããŸãã - access_token ã«ãrequest_body.url ã§ç¹å®ãããã³ã³ãã³ãã®åé€ãåãæ¶ãããã«å¿ èŠãªã¹ã³ãŒããããã確èªããŸãããªãå Žåã¯ãinsufficient_scope ãè¿ããŸãã
- request_body.url ã§ç¹å®ãããã³ã³ãã³ãã®åé€ãåãæ¶ããŸãã
- åé€åãæ¶ããæåããã³ã³ãã³ãã® URL ã倿Žãããªãã£ãå Žåã¯ã空㮠HTTP 204 ã¬ã¹ãã³ã¹ãè¿ããŸãã
- ããã§ã¯ãªããåé€åãæ¶ããæåãããã³ã³ãã³ãã® URL ã倿Žãããå Žåã¯ãã³ã³ãã³ãã®æ°ãã URL ãæã
Location:ããããŒãå«ã HTTP 201 ã¬ã¹ãã³ã¹ãè¿ããŸãã
- ããã§ã¯ãªãããã
request_body.action == "update"ã§ããã°ïŒ- ãšã³ããã€ã³ããæŽæ°ããµããŒãããŠããªãå Žåã¯ãinvalid_response ãè¿ããŸãã
- request_body ã«
urlããŒãããã確èªããŸããããŒããªãå ŽåããŸã㯠request_body.url ãæŽæ°å¯èœãªã³ã³ãã³ããç¹å®ããŠããªãå Žåã¯ãinvalid_request ãè¿ããŸãã - access_token ã«ãrequest_body.url ã§ç¹å®ãããã³ã³ãã³ããæŽæ°ããããã«å¿ èŠãªã¹ã³ãŒããããã確èªããŸãããªãå Žåã¯ãinsufficient_scope ãè¿ããŸãã
- 仿§ã«åŸã£ãŠ æŽæ°ïŒUpdateïŒ ãªã¯ãšã¹ããåŠçããŸãã
- æŽæ°ãæåããã³ã³ãã³ãã® URL ã倿Žãããªãã£ãå Žåã¯ã空㮠HTTP 204 ã¬ã¹ãã³ã¹ãè¿ããŸãã
- ããã§ã¯ãªããæŽæ°ãæåãããã³ã³ãã³ãã® URL ã倿Žãããå Žåã¯ãã³ã³ãã³ãã®æ°ãã URL ãæã
Location:ããããŒãå«ã HTTP 201 ã¬ã¹ãã³ã¹ãè¿ããŸãã
- ãããŸã§å°éããå Žåãäžæãª action ãæäŸãããŠããŸããinvalid_response ãè¿ããŸãã
- ãã
- ããã§ãªãå ŽåïŒããŒã¹ãããããã£ã«
actionããŒããªã POST ãªã¯ãšã¹ãã®å ŽåïŒããã®ãªã¯ãšã¹ãã¯ äœæïŒcreateïŒ ãªã¯ãšã¹ãã§ãããšã¿ãªããŸãã - access_token ã«æ°ããã³ã³ãã³ããäœæããããã«å¿ èŠãªã¹ã³ãŒããããã確èªããŸãããªãå Žåã¯ãinsufficient_scope ãè¿ããŸãã
- ãªã¯ãšã¹ãã® content-type ã
application/json以å€ã§ãã£ãå Žåã¯ã以äžã®ããã«ãã©ãŒã ãšã³ã³ãŒãããããã©ã¡ãŒã¿ãæšæºç㪠mf2 æ§é ã«æ£èŠåããŸãïŒ- normalized_body ã
{'type': ['h-entry'], 'properties': {}}ãšããŸãã - request_body å
ã®å keyãvalue ã®ãã¢ã«å¯ŸããŠïŒ
- ãã
key == "h"ã§ããã°ãnormalized_body.type ã«[value]ãèšå®ããŸãã - ããã§ã¯ãªããkey ã
"[]"ã§çµããå Žåã¯ãnormalized_body.properties[key] ã«ããã® key ã«é¢é£ä»ãããããã¹ãŠã®å€ã®ãªã¹ããå²ãåœãŠãŸãã - ããã§ãªãå Žåã¯ãnormalized_body.properties[key] ã« value ãå²ãåœãŠãŸãã
- ãã
- request_body = normalized_body ãšããŸãã
- normalized_body ã
- request_body ãš request_files ã䜿çšããŠã仿§ã«åŸã£ãŠ äœæïŒCreateïŒ ãªã¯ãšã¹ããåŠçããŸãã
- ãªã¯ãšã¹ããæåããå Žåã¯ãäœæãããã³ã³ãã³ãã® URL ãå«ã
Location:ããããŒãšããªãã·ã§ã³ã§Link rel=syndicationããã³/ãŸãã¯rel=shortlinkããããŒãå«ã HTTP 201 ã¬ã¹ãã³ã¹ãè¿ããŸãã
- ãªã¯ãšã¹ããæåããå Žåã¯ãäœæãããã³ã³ãã³ãã® URL ãå«ã
- ãªã¯ãšã¹ãã«
- ãããŸã§å°éããå Žåããªã¯ãšã¹ããåŠçã§ããŸããã§ãããinvalid_request ãè¿ããŸãã
éçºè åãã®è¿œå ããŒã
- è¿ä¿¡ã³ã³ããã¹ã㯠Micropub ãµãŒããŒã«ãã£ãŠæäŸãããããšãæåŸ
ãããŠãã [5][6]ãæçš¿å
šäœãå«ãŸããŸãã
- éšåã³ã³ããã¹ãïŒpart-contextïŒè¿ä¿¡ãªã©ã®ãã¬ã€ã³ã¹ããŒãã³ã°ïŒ IndieWeb ã®å€ãã®äººã ã¯ãèªåãäœã«å¯ŸããŠè¿ä¿¡ããããããŸãã¯ãªãã¹ãããã®ããæç¢ºã«ããããç¹ã«æ³šç®ããããããããã«ãå ã®æçš¿ã®äžéšãåŒçšããŸãã
ã©ã€ãã©ãª
ã¯ã©ã€ã¢ã³ãã¢ããªåŽã§ã® Micropub ãµããŒããããã³ãµãŒããŒåŽã® API ãšã³ããã€ã³ãåŽã§ã®ãµããŒãã«äœ¿çšããããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªãšå®è£ ïŒ
- p3k-micropub: p3k ã§äœ¿çšãããŠãã PHP ã©ã€ãã©ãª
- taproot/micropub-adapter: æ¢åã®ã¢ããªã« Micropub æ©èœã远å ããããæ°ããã¢ããªãçŽ æ©ãéçºãããããããã«èšèšããã PHP ã©ã€ãã©ãª
- wordpress-micropub: ãµãŒããŒãšã³ããã€ã³ãçšã® WordPress ãã©ã°ã€ã³
- flask-micropub: ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã« IndieAuth èªèšŒãš Micropub èªå¯ãç°¡åã«è¿œå ã§ããããã«ãã Flask (Python) ãã©ã°ã€ã³
- micropub-express:
Pelle Wessman ã«ãã£ãŠäœæãããvoxpelli.com ã® Micropub ãšã³ããã€ã³ãã§äœ¿çšãããŠãã Node.js ãµãŒããŒã©ã€ãã©ãª - micropub-helper: grant.codes ã«ãã£ãŠäœæã»äœ¿çšãããŠãã Node.js ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãª
- IndieWeb for Drupal 8:
Kristof De Jaeger ã«ãã£ãŠæžããããMicropub ãµãŒããŒãšã³ããã€ã³ãã®èšå®ããµããŒãããã¢ãžã¥ãŒã« - blotpub Node.js: Micropub ãªã¯ãšã¹ããåãåããã·ã³ãã«ãª Blot æçš¿ãäœæããŠèšå®æžã¿ã® Dropbox ãã©ã«ãã«ä¿åãããšã³ããã€ã³ããããã«ãããMicropub ã¯ã©ã€ã¢ã³ããéã㊠Blot ããã°ãæŽæ°ã§ããããã«ãªããŸãã
課é¡
仿§æžå ã®çŸåšã®æ©èœã«é¢ãã課é¡ãè°è«ã«ã€ããŠã¯ãGitHub ãªããžã㪠ã䜿çšããŠãã ããã
éå»ã®èª²é¡ãè°è«ããã¬ã€ã³ã¹ããŒãã³ã°ã¯ãæ§ GitHub ãªããžã㪠ããã³ Micropub-brainstorming ã§ç¢ºèªã§ããŸãã
æ¡åŒµæ©èœ
ã³ã¢ãšãªã Micropub 仿§ã«åºã¥ããæ°æ©èœãæ©èœã®è¿œå ã«ã€ããŠã¯ãMicropub-extensions ããŒãžãåç §ããŠæ°ãã Micropub æ¡åŒµãææ¡ããŠãã ããã
ã»ãã·ã§ã³
2026幎:
2020幎:
2019幎:
2018幎:
2017幎:
2014幎:
é¢é£é ç®
- ææ°ã®ãšãã£ã¿ãŒãºãã©ãã
- Micropub-brainstorming
- Micropub-extensions
- æçš¿ - h-entry
- ã€ãã³ã - h-event
- ã¢ã¯ã»ã¹ããŒã¯ã³ã®ååŸ
- ããŒã¯ã³ãšã³ããã€ã³ã
- Micropub ãšã³ããã€ã³ã
- access_token
- 段éçãªèªå¯
- Micropub ã¡ãã£ã¢ãšã³ããã€ã³ã
- ããã°æçš¿: 2024-09-14
Manton Reece: å
±éã®æçš¿ API ã«åã㊠âŠäžèšã®æšæºãçšããŠé²ãã¹ãããããå¯èœãªéãæ€èšããçµæã仿¥ããã«å©çšå¯èœã§ãè€æ°ã®ããã°ãã©ãããã©ãŒã ã§äœå¹Žãå®è£ ãããŠããå®å šãªãœãªã¥ãŒã·ã§ã³ã¯ãå®ã®ãšãã1ã€ãããããŸããããã㯠Micropub + Microsub ã§ãã
- ãã¬ã€ã³ã¹ããŒãã³ã°ïŒ 誀åè±åä¿®æ£ãåã蟌ãã 1.0.1 ãªãªãŒã¹ïŒæ°æ©èœãªãïŒãšã人æ°ã® Micropub æ¡åŒµæ©èœããå°ãªããšã MarsEdit ããã£ãŒãããã¯ã§èŠæ±ãããã®ãçµã¿èŸŒãã 1.1 ã¢ããããŒãã®äž¡æ¹ãæ€èšããŠãã ããã