ãã°ããåãç§ãåããŠãããã·ã¢åžå Žã®ããæåãªå
¬éäŒç€Ÿã§ããããã¬ã¹cmsã®äœ¿çšã«ã€ããŠçåãçããŸããã å€ãã®
å®è£
ã®äžã§ã 1ã€ãéžæããå¿
èŠããããŸããã ããã¯ãéžæåºæºãäœæããæ¹æ³ãcmsãåæããæ¹æ³ãããã³ãã®åæã«ãã£ãŠèªåã§æžãå¿
èŠããããšæãããã«ãªã£ãæ¹æ³ã«ã€ããŠã®è©±ã§ãã ã«ããã®äžã®14ã®ãããã¬ã¹cmã®æŠèŠã

ãããã¬ã¹CMSãšã¯äœã§ããïŒ
ãã®çšèªã¯æ°ãããã®ã§ã¯ãããŸããããäœããã®çç±ã§ããã®ãããã¯ã¯ãã·ã¢èªã®ã€ã³ã¿ãŒãããã§ã¯ã»ãšãã©åãäžããããŠããŸããã
ãŠã£ãããã£ã¢ã«ãããšïŒ
ãããã¬ã¹ã³ã³ãã³ã管çã·ã¹ãã ããŸãã¯ãããã¬ã¹CMSã¯ãã³ã³ãã³ããªããžããªãšããŠãŒãããæ§ç¯ãããããã¯ãšã³ãã®ã¿ã®ã³ã³ãã³ã管çã·ã¹ãã ïŒCMSïŒã§ãããããã€ã¹ã«è¡šç€ºããããã«RESTful APIãä»ããŠã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
ãããã¬ã¹ã³ã³ãã³ã管çã·ã¹ãã ããŸãã¯ãããã¬ã¹CMSã¯ããµãŒããŒããŒã¹ã®ã³ã³ãã³ã管çã·ã¹ãã ïŒCMSïŒã§ããããã¯ãæåã¯ã³ã³ãã³ãã®ãªããžããªã§ãããRESTful APIãä»ããŠä»»æã®ããã€ã¹ã«è¡šç€ºããããã®ã³ã³ãã³ããžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
ã€ãŸãããããã¬ã¹cmsã¯æŠå¿µã§ãããcms-okã®ç¹å¥ãªã¿ã€ãã®äžçš®ã§ãããcmsã¯ãçŽç²ãªãã³ã³ãã³ãã®ç®¡çã®ã¿ãæ
åœããŸãã ããã«ãããcmsã§ç®¡çãããããŒã¿ã¬ã€ã€ãŒããã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠå¶åŸ¡ããã衚瀺ã¬ã€ã€ãŒããåé¢ã§ããŸãã ã³ã³ãã³ãã¯ãéåžžã¯JSON圢åŒã®ãŠãããŒãµã«åœ¢åŒã§é
ä¿¡ãããŸããããã«ãããWebãµã€ããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãããã³ã€ã³ã¿ãŒãããã«æ¥ç¶ãããããã€ã¹ãåæã«ç®¡çã§ããŸãã
ãã®ãããªæŠå¿µã®é·æãšçæã®è©³çްã«ã€ããŠã¯ããã®
èšäº ããŸãã¯
ãã® èšäº ããŸãã¯
ãŠã£ãããã£ã¢ã®èšäºãåç
§ããŠãã ãã ã
ã³ã³ããã¹ãã«æ²¡é ãã
æ€çŽ¢åºæºã決å®ããã©ã®ãããã¬ã¹cmsãä»ã®cmsãããåªããŠããããçè§£ããã«ã¯ã質åã«çããªããã°ãªããŸããã§ããã ã©ã®ç¹å®ã®ã¿ã¹ã¯ãã©ã®ããã«è§£æ±ºããå¿
èŠããããŸããïŒ
çŸåšã®äžé£ã®æèãå®èšŒããããã«ãå
žåçãªåé¡ãæãä»ãããããã¬ã¹cmsã®1ã€ã䜿çšããŠããã解決ããŸããã ãããŠå®éã«ã¯ãã¹ãŠããããã«ç°ãªã£ãŠããŸãããããã®ãããªç©èªã®åœ¢åŒã¯æ¬è³ªãç°¡æœã«åæ ããé ã®ãªãcmsã®ãããã¯ãããããæããã«ããŠããŸãã
ã ãããã¿ã¹ã¯ãéçºã«æ¥ããšæ³åããŠã¿ãŸãããã ãã®ãµã€ãã§ã¯ããŠãŒã¶ãŒãæ ç»ã®ã¬ãã¥ãŒãèªãããã®æ°ããã»ã¯ã·ã§ã³ãå®è£
ããå¿
èŠããããŸãã
æ¡ä»¶ã¯æ¬¡ã®ãšããã§ãã
- çŸæç¹ã§ã¯ãæ ç»ã®ååããã¹ã¿ãŒãç£ç£ã®ååãããã³ã¬ãã¥ãŒã®ããã¹ãã®ã¿ã衚瀺ããå¿
èŠããããŸãããå°æ¥çã«ã¯æ§é ãããè€éã«ãªããæéã俳åªãªã©ã«é¢ããæ
å ±ã衚瀺ãããŸãã
- æè¡çèæ¯ã®ãªã人ãã³ã³ãã³ããããŒãžã£ãŒã¯ãã¬ãã¥ãŒã远å ããã³å€æŽããå¿
èŠããããŸãããã®ãããéçºãªãœãŒã¹ã¯é¢äžãã¹ãã§ã¯ãããŸããã
- ãã®æ©èœã¯ç¡å¹ã«ããå¿
èŠããããŸãã æ©èœåãæ¿ããå®è£
ããå¿
èŠããããŸãã
- ã³ã³ãã³ããå
¬éããåã«ãã³ã³ãã³ããããŒãžã£ãŒã¯ããã¹ãç°å¢ã§ç·šéãã©ã®ããã«èŠãããã確èªã§ããå¿
èŠããããŸãã
ãããã¯ãå
éšé¡§å®¢ããã®èŠä»¶ã§ãã éçºåŽã«ã¯ãå®è£
ã«é¢ããç¬èªã®æè¡çããžã§ã³ããããŸãã
- 顧客ã¯èãæãŠãªãããã«ããå¿
èŠããããŸãã ã³ã³ãã³ããããŒãžã£ãŒã¯ãããšã圌ãæãã ãšããŠããäœãå£ããŠã¯ãããŸããã éçºè
ãæ³å®ãããã®ã®ã¿ãç·šéããå¿
èŠããããŸãã
- ããŒãžã§ã³ã管çããäœããçºçããå Žåã«ããŒã«ããã¯ã§ããå¿
èŠããããŸãã
- å°æ¥ã©ã®ãããªæ©èœã远å ããããã¯ããããŸãããã€ãŸããã»ã¯ã·ã§ã³ã®è€éåã倿Žã¯ç°¡åãªã¯ãã§ãã
- ã»ãã¥ãªãã£åŽïŒã·ã¹ãã ã¯ãå¥åŠãªã¯ã©ãŠãã§ã¯ãªãããµãŒããŒäžã«ããå¿
èŠããããŸãã ãªã³ãã¬ãã¹ã§å±éã§ããå¿
èŠããããŸãã
ãŸããã¿ã¹ã¯ã¯æç¢ºã§ãã æ±ºå®ã«ç§»ããŸãã
Any JSON CMSã䜿çšã
ãŸã ãããã¯ããããã¬ã¹cmsã®1ã€ã§ãã çŸæç¹ã§ã¯ãäžèšã®ãã¹ãŠã®èŠä»¶ãæºãããŠããããã§ã¯ãããŸããã ããšãã°ãã³ã³ãã³ããããŒãžã£ãŒã¯ããã¹ãç°å¢ã§ç·šéãã©ã®ããã«èŠãããã確èªã§ããŸããã ãã ãããã¹ãŠã®é·æãšçæã¯åŸã§è¡šç€ºãããŸãã ä»ãç§ã¯ãããããããã¬ã¹cmsãæ±ãå
žåçãªã·ããªãªããæãããããšããŠããŸãã
æåã«è¡ãããšã¯ãã¢ãã«ãèšè¿°ããããšã§ãã ã¢ãã«ã¯è³ªåã«çããŸããã³ã³ãã³ããšã³ãã£ãã£ã¯ã©ã®ããã«èŠããŸããïŒ åœŒå¥³ã®æ§é ã¯äœã§ããïŒ æ¬è³ªçã«ãããã¯cmsãšã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³éã®çžäºäœçšã®ãããã³ã«ã§ãã ç§ãã¡ã®å Žå-æ ç»ã®ã¬ãã¥ãŒ-ãªããžã§ã¯ãã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- 3ã€ã®å¿
é ããããã£ïŒæ ç»ã®ã¿ã€ãã«ãæ ç»ã®ãã¹ã¿ãŒãã¬ãã¥ãŒããã¹ãã
- 1ã€ã®ãªãã·ã§ã³ããããã£ïŒãªããžã§ã¯ããdirectorãã«ã¯ã2ã€ã®å¿
é ããããã£åãšå§ãå«ãŸããŸãã
JSONã¹ããŒããšããŠãæŠèŠã¢ãã«ã¯æ¬¡ã®ããã«ãªããŸãã
{ type: 'object', required: ['movieName', 'moviePoster', 'reviewText'], additionalProperties: false, properties: { movieName: { type: 'string', minLength: 1, maxLength: 300, }, moviePoster: { type: 'string', description: 'URL to file', }, movieProducer: { type: 'object', required: ['name', 'surname'], additionalProperties: false, properties: { name: { type: 'string', maxLength: 100, minLength: 1 }, surname: { type: 'string', maxLength: 100, minLength: 1 }, }, }, reviewText: { type: 'string', minLength: 1, maxLength: 3000, }, }, }
ãŸããæ©èœã®åãæ¿ããå®è£
ããå¿
èŠããããŸããJSONã¹ããŒãã®åœ¢åŒã®ã¢ãã«ã¯æ¬¡ã®ããã«ãªããŸãã
{ type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, }
ã¢ãã«ã®å€èгãçè§£ããããä»»æã®JSON CMSã§ã¢ãã«ãäœæã§ããŸãã


ç§ã¯ããã«ã³ã³ãã³ããšã³ãã£ãã£ãã€ãŸã ã¢ãã«ã«åºã¥ããã³ã³ãã³ãèªäœã 1ã€ã®ãããŒã¬ãã¥ãŒãšæ©èœåãæ¿ããšã³ãã£ãã£ã


ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ãcmsãšçµ±åããã«ã¯ãAPIããŒãå¿
èŠã§ãã 察å¿ããã»ã¯ã·ã§ã³cmsã§çæããŸãã

ããã§ãã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã§ã®æ©èœã®å®è£
ãšcmsãšã®çµ±åã®æºåããã¹ãŠæŽããŸããã ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯äœã§ãæ§ããŸãã-Webãµã€ããŸãã¯ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããããã¯ãã®äž¡æ¹ã§ãäœã§ãæžãããŠããŸãã äŸãšããŠãReactã®SPA Webãµã€ãã«æ©èœãå®è£
ããŸãã å®éãCMSããæ¢ç¥ã®åºå®æ§é ã䜿çšããŠããŒã¿ãååŸããåžæã©ããã«è¡šç€ºããŸãã
import React, { Component } from 'react' import { Accordion, AccordionItem, AccordionItemTitle, AccordionItemBody, } from 'react-accessible-accordion' import 'react-accessible-accordion/dist/fancy-example.css' const apiUrl = 'https://api.anyjsoncms.com'
ããã ãã§ã ã³ã³ãã³ããããŒãžã£ãŒã¯ã¬ãã¥ãŒãç°¡åã«ç®¡çã§ããããã«ãªããæ©èœã®åãæ¿ãã䜿çšããŠæ©èœãæå¹ãŸãã¯ç¡å¹ã«ããããšãã§ããŸãã
æ ç»ã®ã¬ãã¥ãŒã衚瀺ããã®ã¯ç°¡åãªäŸã§ãã詳现ã«drãããååã瀺ãããã ãã«æå³çã«åŒçšããŸããã å®éã«ã¯ãæ©èœã¯1æ¡ä»¥äžè€éã«ãªãå ŽåããããŸãã ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã補åã«ã¿ãã°ãè€éãªãŠã£ãžã§ãããã©ã³ãã£ã³ã°ããŒãžããã©ãŒã ãžã§ãã¬ãŒã¿ãŒãæçš¿ãªã©ããããŸãããŸãããã®äŸã§ã¯ãcmsã¯æ
å ±ã®ã¿ãé
åžããŸãããã»ãšãã©ã®ãããã¬ã¹cmsã¯CRUD APIãæäŸããŸããäžè¬çã«ãšã³ãã£ãã£ãæäœããŸãã äžè¬ã«ããããã¬ã¹cmsã®ã¢ã€ãã¢ã¯ãå¶åŸ¡ãä»»æã®cmsã«ããŸãå¿
èŠã«å¿ããŠè»¢éããããã«ãä»»æã®è€éãªãããã³ã«ãå®è£
ããèªç±ãšå©äŸ¿æ§ãæ£ç¢ºã«æäŸããããšã§ãã
éžæåºæºãšåæãããã¬ã¹CMS
ãããã¬ã¹cmsã䜿çšããŠã©ã®ã¿ã¹ã¯ã解決ãããããããŠãã®æ¹æ³ãçè§£ããåŸãåºæºãéžæããã·ã¹ãã ã®èª¿æ»ãéå§ããŸããã headlesscms.orgã«ãããšãçŸåš54 cmã§ãã ãããã®ãã¹ãŠãåæããã®ã¯ããªãæéããããããã»ã¹ãªã®ã§ãæã人æ°ãããæ³šç®ããã14ã®ã·ã¹ãã ãåãäžããŸããïŒJSON CMSãContentfulãStrapiãGraphCMSãSquidexãButter CMSãCloud CMSãockpitãCosmic JSãDirectusãKentico CloudãNetlify CMS ãããªãºããã¯ããŽãŒã¹ãã
çµæã¯
ããŒãã«ã®åœ¢ã§å匷ããã®ã«ãã䟿å©ã§ãã ããããããã§è€è£œããŸãã
JSON CMS
å
å®ãã
ã¹ãã©ã
GraphCMS
ã¹ã¯ã€ããã¯ã¹
ãã¿ãŒcms
ã¯ã©ãŠãCMS
ã³ãã¯ããã
å®å®ã®JS
Directus
Kentico Cloud
Netlify CMS
Prismic
Ghost
çµè«
æŠããŠããããã¬ã¹cmsãããäž»ã«2ã€ã®ããšãæåŸ
ããŠããŸããïŒã¢ãã«ãäœæããèªç±ããããã³ã«ãå®è£
ã§ãããããã§ããã¹ãŠã®å€æŽãééçã«ç®¡çã§ããããã«åæ§ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ãgitã§ããŸãããããŠãã¡ãã£ãšãã倱æãç§ãåŸ
ã£ãŠããŸããããããã®ã·ã¹ãã ã®ã»ãšãã©ã§äœæ¥ã§ããŸãããç§ã«ã¯äžå¿«ãªå€ãã®äžå©ãªç¹ããããŸãããã¡ãããããã¯ã·ã¹ãã ãæªãããšãæå³ããã®ã§ã¯ãªããã·ã¹ãã ãç§ã®æåŸ
ãæºãããŠããªãããšãæå³ããã ãã§ãããç§ã®æåŸ
ãç§ã®åé¡ã§ããç§ã¯ãããã衚æããŸãïŒæ®å¿µãªããšã«ãç§ããã®å
¬éäŒç€Ÿã§åããŠãããšãããããã®ã·ã¹ãã ãæ¡çšããããšã¯ã§ããŸããã§ãããCloud CMSã¯ç§ãã¡ã®ããŒãºã«æãé©ããŠããŸãããããã®äŸ¡æ Œã¯ãããã§ãããããã«
ãã®ããããã®åæã«ãããç§ã¯èªåã®é ã®ãªãcmãæžãå¿
èŠããããšèããããã«ãªããŸãããããªãã¯ãã§ã«åœŒå¥³ãèŠãŸãã;圌女ã®äŸã§ã¯ãåé¡ã®è§£æ±ºçã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããããŸãããAny JSON CMSãšåŒã°ããŸããæŽæ°ïŒã©ã®JSON CMSããªãŒãã³ãœãŒã¹ãœãªã¥ãŒã·ã§ã³ã«ãªããŸãããgithubãªããžããªã¯ãã¡ãã§ãããã®äž»ãªç®æšã¯ãä»»æã®è€éãªã¢ãã«ãèªç±ã«äœæããgitã®ãããªã·ã¹ãã ã䜿çšããŠãã¹ãŠã®å€æŽãå¶åŸ¡ããããšã§ããå®è£
ããããã¹ãŠã®ãã®ããã¯çšé ããã®ã§ããã§ã«ã¡ã€ã³ã®ãã¡ãã»ãŒãžãããããŸãã