ãã®æçš¿ã§ã¯ã宣èšçãªããã°ã©ãã³ã°ã®èŠçŽ ïŒPL / SQLãMS LINQãGraphQLïŒãå«ãããã€ãã®äººæ°ã®ããèšèªãšãã¯ãããžãŒã«ã€ããŠè©±ããããšæããŸããç§ã¯ã宣èšçããã°ã©ãã³ã°ã䜿çšããŠãããã®äžã§ã©ã®ã¿ã¹ã¯ã解決ããããã宣èšçã¢ãããŒããšå¿ é ã¢ãããŒããã©ãã»ã©å¯æ¥ã«çµ¡ã¿åã£ãŠãããããããã©ã®ãããªå©ç¹ããããããããããŠãããããã©ã®ãããªã¢ã€ãã¢ãåŠã¶ããšãã§ããããçè§£ããããšããŸãã
SQLæç¶ãåæ¡åŒµæ©èœ
ãã®é¢é£ä»ããé·ãéæ¥çæšæºã«ãªã£ãŠããåéãã€ãŸãããŒã¿ã¢ã¯ã»ã¹èšèªããå§ããŸãããããããã®äžã§æãæåãªã®ã¯ãSQLèšèªã®æç¶ãåæ¡åŒµã§ããPL / SQLã§ãããã®èšèªã䜿çšãããšãå¿ é ïŒå€æ°ãå¶åŸ¡ã¹ããŒãã¡ã³ãã颿°ããªããžã§ã¯ãïŒãšå®£èšçããã°ã©ãã³ã°ã¹ã¿ã€ã«ïŒSQLåŒïŒã®äž¡æ¹ã䜿çšããŠããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹å ã®ããŒã¿ãåŠçã§ããŸãã SQLã¯ãšãªã䜿çšããŠãå¿ èŠãªããŒã¿ã«å¿ èŠãªããããã£ïŒå¿ èŠãªãã£ãŒã«ããããããååŸããããŒãã«ããããã®çžäºé¢ä¿ãæºæ ããå¿ èŠã®ããå¶çŽãéèšæ¹æ³ãªã©ïŒãèšè¿°ã§ããŸãããŸããããŒã¿ããŒã¹ãµãŒããŒã¯ç¬èªã«ã¯ãšãªå®è¡èšç»ãäœæããæå®ãããæ¡ä»¶ãæºãããã¹ãŠã®å¯èœãªãã£ãŒã«ãã®ã»ãããèŠã€ããŸãã PL / SQLã®æç¶ãéšåã§ã¯ããããã®ã¿ã¹ã¯ãå®è£ ã§ããŸã宣èšåœ¢åŒã§è¡šçŸããã®ã¯å°é£ãŸãã¯äžå¯èœã§ããã¯ãšãªã®çµæãã«ãŒãã§åŠçããä»»æã®èšç®ãå®è¡ãã颿°ãšã¯ã©ã¹ã§ã³ãŒããæ§é åããŸãã
èšèªã®æç¶ãçããã³å®£èšçã³ã³ããŒãã³ãã¯ç·å¯ã«çµ±åãããŠããŸãã PL / SQLã䜿çšãããšã颿°ã宣èšãã颿°å ã§ã¯ãšãªãå®è¡ããŠçµæãè¿ããã¯ãšãªå ã§é¢æ°ã䜿çšããŠãããŒãã«ãã£ãŒã«ãã®å€ãåŒæ°ãšããŠæž¡ãããšãã§ããŸããã«ãŒãœã«ã䜿çšããŠã¯ãšãªã®çµæã«ã¢ã¯ã»ã¹ããååŸãããã¹ãŠã®ã¬ã³ãŒãã匷å¶çã«ã«ãŒãããããšãã§ããŸããã«ãŒãœã«ã䜿çšãããšãããŒãã«ã®å 容ããã现ããå¶åŸ¡ã§ããSQLã®ã¿ã䜿çšãããããã¯ããã«è€éãªããŒã¿åŠçããžãã¯ãå®è£ ã§ããŸããã«ãŒãœã«ãã«ãŒãœã«å€æ°ã«å²ãåœãŠãŠã颿°ãããã·ãŒãžã£ãããã«ã¯ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã«åŒæ°ãšããŠæž¡ãããšãã§ããŸããèŠæ±ã³ãŒãèªäœã¯ãäžé£ã®å¿ é ã³ãã³ãã«ãã£ãŠåçã«çæã§ããŸããããã€ãã®èª¿æŽã䜿çšããŠãããã·ãŒãžã£ãšã¯ãšãªãçµã¿åãããããšã§ãååž°çãªã¯ãšãªãå®è£ ã§ããŸãã PL / SQLã«ã¯ãããŒãã«ãã£ãŒã«ãã®è€åããŒã¿åã宣èšãããããã«ã¡ãœãããå«ããç¶æ¿ãéããŠã¯ã©ã¹ãäœæã§ãããªããžã§ã¯ãæåã®æ©èœããããŸãã
PL / SQLã䜿çšãããšãããŒã¿ããŒã¹ãµãŒããŒåŽã§ããžãã¹ããžãã¯ãå®è£ ã§ããŸããããã«ããã¡ã€ã³ã¢ãã«ã®å®è£ ã¯ããã®èª¬æã«éåžžã«è¿ããªããŸãããã¡ã€ã³ã¢ãã«ã®åºæ¬æŠå¿µã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ã¢ãã«ã«ãããã³ã°ãããŸããæŠå¿µã¯ãããŒãã«ã屿§ãã€ãŸããããã®ãã£ãŒã«ãã«å¯Ÿå¿ããŸãããã£ãŒã«ãå€ã®å¶çŽã¯ãããŒãã«ã®èª¬æã«åã蟌ãããšãã§ããŸãããŸããä»ã®ããŒãã«ãšã®é¢ä¿ã¯ãå€éšããŒã䜿çšããŠèšå®ã§ããŸããåºæ¬æŠå¿µã«åºã¥ããŠæ§ç¯ãããæœè±¡çãªæŠå¿µã¯ããã¥ãŒã«å¯Ÿå¿ããŸãããããã¯ãä»ã®ãã¥ãŒã®æ§ç¯ãªã©ãããŒãã«ãšãšãã«ã¯ãšãªã§äœ¿çšã§ããŸãããã¥ãŒã¯ã¯ãšãªã«åºã¥ããŠæ§ç¯ãããŠãããããSQLã®èœåãšæè»æ§ãæå€§éã«æŽ»çšã§ããŸãããã®æ¹æ³ã§ã¯ãããŒãã«ãšãã¥ãŒãããããªãè€éã§ãã«ãã¬ãã«ã®ãã¡ã€ã³ã¢ãã«ãå®å šã«å®£èšåã§æ§ç¯ã§ããŸãããŸãã宣èšã¹ã¿ã€ã«ã«ããŸãé©åããªããã®ã¯ãã¹ãŠãããã·ãŒãžã£ãšé¢æ°ã䜿çšããŠå®è£ ã§ããŸãã
äž»ãªåé¡ã¯ãPL / SQLã³ãŒããDBãµãŒããŒåŽã§æä»çã«å®è¡ãããããšã§ããããã«ããããã®ãããªãœãªã¥ãŒã·ã§ã³ã®ã¹ã±ãŒãªã³ã°ãå°é£ã«ãªããŸããããã«ãçµæã®ã¢ãã«ã¯ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«å³å¯ã«ãã€ã³ããããä»ã®ãœãŒã¹ããã®ããŒã¿ãã¢ãã«ã«å«ããã®ã¯åé¡ããããŸãã
èšèªçµ±åã¯ãšãª
èšèªçµ±åã¯ãšãªïŒLINQïŒã¯ã.NETãã©ãããã©ãŒã ã®äžè¬çãªã³ã³ããŒãã³ãã§ãããã¡ã€ã³ã®ãªããžã§ã¯ãæåã®èšèªã³ãŒãã«SQLã¯ãšãªåŒãèªç¶ã«å«ããããšãã§ããŸããããŒã¿ããŒã¹ãµãŒããŒåŽã§SQLã«å¿ é ã®ãã©ãã€ã ã远å ããPL / SQLãšã¯å¯Ÿç §çã«ãLINQã¯SQLãã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã«ãããããŸãããã®ãããã§ãLINQã®ã¯ãšãªã䜿çšããŠããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ããã ãã§ãªãããªããžã§ã¯ãã®ã³ã¬ã¯ã·ã§ã³ãXMLããã¥ã¡ã³ããããã³ãã®ä»ã®LINQã¯ãšãªãããããŒã¿ãååŸã§ããŸãã
LINQã¢ãŒããã¯ãã£ã¯éåžžã«æè»æ§ããããã¯ãšãªå®çŸ©ã¯OOPã¢ãã«ãšç·å¯ã«çµ±åãããŠããŸãã LINQã䜿çšãããšãæ°ããããŒã¿ãœãŒã¹ã«ã¢ã¯ã»ã¹ããããã®ç¬èªã®ãããã€ããŒãäœæã§ããŸããã¯ãšãªãå®è¡ããç¬èªã®æ¹æ³ãèšå®ããããšãã°ãã¯ãšãªã®LINQåŒããªãŒãç®çã®ããŒã¿ãœãŒã¹ãžã®ã¯ãšãªã«å€æããããšãã§ããŸããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§å®çŸ©ãããŠããã©ã ãåŒãšé¢æ°ããªã¯ãšã¹ãæ¬æã§äœ¿çšã§ããŸãã確ãã«ãLINQ to SQLã®å Žåãã¯ãšãªã¯ããŒã¿ããŒã¹ãµãŒããŒåŽã§å®è¡ããããããã®é¢æ°ã¯äœ¿çšã§ããŸãããã代ããã«ã¹ãã¢ãããã·ãŒãžã£ã䜿çšã§ããŸãããªã¯ãšã¹ãã¯ç¬¬1ã¬ãã«ã®èšèªã®æ¬è³ªã§ãããéåžžã®ãªããžã§ã¯ããšåãããã«æäœã§ããŸããã³ã³ãã€ã©ã¯ãã¯ãšãªçµæã®ã¿ã€ããèªåçã«æšæž¬ããæç€ºçã«å®£èšãããŠããªãå Žåã§ãé©åãªã¯ã©ã¹ãçæã§ããŸãã
LINQã䜿çšããŠãã¯ãšãªã®ã»ãããšããŠãã¡ã€ã³ã¢ãã«ãæ§ç¯ããŠã¿ãŸããããå ã®ãã¡ã¯ãã¯ãã¢ããªã±ãŒã·ã§ã³åŽã®ãªã¹ããŸãã¯ããŒã¿ããŒã¹åŽã®ããŒãã«ã«é 眮ã§ããæœè±¡çãªæŠå¿µã¯LINQã¯ãšãªãšããŠãã©ãŒãããã§ããŸããLINQã䜿çšãããšãFROMå¥ã§æå®ããããšã«ãããä»ã®ã¯ãšãªã«åºã¥ããŠã¯ãšãªãäœæã§ããŸããããã«ãããæ¢åã®ã³ã³ã»ããã«åºã¥ããŠæ°ããã³ã³ã»ãããæ§ç¯ã§ããŸããSELECTã»ã¯ã·ã§ã³ã®ãã£ãŒã«ãã¯ãã³ã³ã»ããã®å±æ§ã«å¯Ÿå¿ããŸãããŸããWHEREã»ã¯ã·ã§ã³ã«ã¯ãæŠå¿µéã®äŸåé¢ä¿ãå«ãŸããŸãã以åã®åºçç©ããã®è«æ±æžã®äŸã¯æ¬¡ã®ããã«ãªããŸãã
ã¢ã«ãŠã³ããšé¡§å®¢æ å ±ãæã€ãªããžã§ã¯ãããªã¹ãã«é 眮ããŸãã
List<Bill> bills = new List<Bill>() { ... };
List<Client> clients = new List<Client>() { ... };
次ã«ãæªæãã®è«æ±æžãšåµåè ãååŸããããã®ã¯ãšãªãäœæããŸãããã
IEnumerable<Bill> unpaidBillsQuery =
from bill in bills
where bill.AmountToPay > bill.AmountPaid
select bill;
IEnumerable<Client> debtorsQuery =
from bill in unpaidBillsQuery
join client in clients on bill.ClientId equals client.ClientId
select client;
LINQã§å®è£ ããããã¡ã€ã³ã¢ãã«ã¯ãããªãå¥åŠãªåœ¢ããšã£ãŠããŸããè€æ°ã®ããã°ã©ãã³ã°ã¹ã¿ã€ã«ãé¢ä¿ããŠããŸããã¢ãã«ã®ãããã¬ãã«ã«ã¯ãå¿ é ã®ã»ãã³ãã£ã¯ã¹ããããŸããããã¯ããªããžã§ã¯ã倿ã®ãã§ãŒã³ãšããŠè¡šãããšãã§ããã³ã¬ã¯ã·ã§ã³ã®äžã«ãªããžã§ã¯ãã®ã³ã¬ã¯ã·ã§ã³ãæ§ç¯ããŸããã¯ãšãªãªããžã§ã¯ãã¯ãOOPã¯ãŒã«ãã®èŠçŽ ã§ããããããäœæããŠå€æ°ã«å²ãåœãŠãå¿ èŠããããããããžã®åç §ãä»ã®èŠæ±ã«æž¡ãå¿ èŠããããŸããäžéã¬ãã«ã§ã¯ãã¯ãšãªãªããžã§ã¯ãã¯ãã¯ãšãªãå®è¡ããããã®ããã·ãŒãžã£ãå®è£ ããŸããããã¯ãã©ã ãåŒã§æ©èœçã«ã«ã¹ã¿ãã€ãºãããSELECTã»ã¯ã·ã§ã³ã§çµææ§é ã圢æããWHEREå¥ã®ãšã³ããªãé€å€ã§ããŸããå éšã¬ãã«ã¯ãè«ççãªã»ãã³ãã£ã¯ã¹ãæã¡ããªã¬ãŒã·ã§ãã«ä»£æ°ã«åºã¥ãã¯ãšãªå®è¡ããã·ãŒãžã£ã«ãã£ãŠè¡šãããŸãã
LINQã§ã¯ãã¡ã€ã³ã¢ãã«ãèšè¿°ã§ããŸããããSQLæ§æã¯äž»ã«ããŒã¿ã®ãã§ãããšæäœãç®çãšããŠããŸããã¢ããªã³ã°ã«åœ¹ç«ã€ããã€ãã®æ§æãæ¬ ããŠããŸããPL / SQLã§åºæ¬æŠå¿µã®æ§é ãããŒãã«ãšãã¥ãŒã®åœ¢åŒã§éåžžã«æç¢ºã«è¡šçŸãããŠããå ŽåãLINQã§ã¯OOPã³ãŒãã«ã¬ã³ããªã³ã°ãããããšãããããŸãããããã«ãããŒãã«ãšãã¥ãŒã¯ååã§åç §ã§ããŸãããLINQã¯ãšãªã¯å¿ é ã®ã¹ã¿ã€ã«ã§åç §ã§ããŸããããã«ãSQLã¯ãªã¬ãŒã·ã§ãã«ã¢ãã«ã«ãã£ãŠå¶éãããã°ã©ããŸãã¯ããªãŒã®åœ¢åŒã§æ§é ãæäœããå Žåã®æ©èœãå¶éãããŸãã
ãªã¬ãŒã·ã§ãã«ã¢ãã«ãšããžãã¯ããã°ã©ãã³ã°ã®é¡äŒŒç¹
ã¢ãã«ã®SQLãšPrologã®å®è£ ã«ã¯é¡äŒŒç¹ãããããšãããããŸãã SQLã§ã¯ãããŒãã«ãŸãã¯ãã®ä»ã®ãã¥ãŒã«åºã¥ããŠãã¥ãŒãäœæããPrologã§ã¯ãäºå®ãšã«ãŒã«ã«åºã¥ããŠã«ãŒã«ãäœæããŸãã SQLã§ã¯ãããŒãã«ã¯ãã£ãŒã«ãã®ã³ã¬ã¯ã·ã§ã³ã§ãããPrologã®è¿°èªã¯å±æ§ã®ã³ã¬ã¯ã·ã§ã³ã§ãã SQLã§ã¯ãããŒãã«ãã£ãŒã«ãéã®äŸåé¢ä¿ãWHEREå¥ã®åŒãšããŠæå®ããPrologã§ã¯ãè¿°èªãšè¿°èªå±æ§ãçžäºã«ãªã³ã¯ããããŒã«å€æ°ã䜿çšããŠæå®ããŸããã©ã¡ãã®å Žåãããœãªã¥ãŒã·ã§ã³ã®ä»æ§ã宣èšçã«èšå®ããçµã¿èŸŒã¿ã®ã¯ãšãªå®è¡ãšã³ãžã³ãSQLã§èŠã€ãã£ããšã³ããªãŸãã¯Prologã®å€æ°ã®å¯èœãªå€ãè¿ããŸãã
ãã®é¡äŒŒæ§ã¯å¶ç¶ã§ã¯ãããŸããã SQLã®çè«çåºç€-ãªã¬ãŒã·ã§ãã«ä»£æ°ã¯ããžãã¯ããã°ã©ãã³ã°ãšäžŠè¡ããŠéçºãããŸããããåŸã«çè«çãªé¢ä¿ãæããã«ãªããŸããããããã¯å ±éã®æ°åŠçåºç€ãæã£ãŠããŸã-äžæ¬¡è«çããªã¬ãŒã·ã§ãã«ããŒã¿ã¢ãã«ã¯ãããŒã¿ããŒãã«éã®é¢ä¿ãè«çããã°ã©ãã³ã°ãã€ãŸãã¹ããŒãã¡ã³ãéã®é¢ä¿ãæ§ç¯ããããã®ã«ãŒã«ãèšè¿°ããŸããäž¡æ¹ã®çè«ã¯ç°ãªãçšèªã䜿çšããç°ãªãåéã§é©çšããã䞊è¡ããŠéçºãããŸãããããããã¯å ±éã®æ°åŠçåºç€ãæã£ãŠããŸããã
å³å¯ã«èšãã°ããªã¬ãŒã·ã§ãã«èšç®ã¯ã衚圢åŒã®ããŒã¿ãåŠçããããã®1次ããžãã¯ã®é©å¿ã§ãããã®è³ªåã«ã€ããŠã¯ãããã§è©³ãã説æããŸãã..ãã€ãŸãããªã¬ãŒã·ã§ãã«ä»£æ°ã®ä»»æã®åŒïŒä»»æã®SQLã¯ãšãªïŒã1次ããžãã¯ã®åŒã«åå®åŒåããŠãããPrologã«å®è£ ã§ããŸãããããããã®éã¯ãããŸããããªã¬ãŒã·ã§ãã«èšç®ã¯ã1次ããžãã¯ã®ãµãã»ããã§ããããã¯ãäžæ¬¡è«çã§èš±å®¹ãããããã€ãã®çš®é¡ã®ã¹ããŒãã¡ã³ãã«ã€ããŠãé¢ä¿ä»£æ°ã§é¡äŒŒæ§ãèŠã€ããããšãã§ããªãããšãæå³ããŸããããšãã°ãSQLã®ååž°ã¯ãšãªã®æ©èœã¯éåžžã«å¶éãããŠãããé·ç§»é¢ä¿ã®æ§ç¯ãåžžã«å©çšã§ãããšã¯éããŸãããã¿ãŒã²ããã®åé¢ãæåŠãªã©ã®åŠå®ãªã©ã®ããããŒã°æäœã¯ãSQLã§å®è£ ããã®ãã¯ããã«å°é£ã§ãã Prologã®æè»ãªæ§æã«ãããè€éãªãã¹ããããæ§é ãããæè»ã«æäœã§ãããããã®æ§é ã®ãã¿ãŒã³ãããã³ã°æäœããµããŒããããŸããããã«ãããããªãŒãã°ã©ããªã©ã®è€éãªããŒã¿æ§é ãæäœãããšãã«äŸ¿å©ã§ãã
ããããããªãã¯ãã¹ãŠã«ãéãæããªããã°ãªããŸããããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«çµã¿èŸŒãŸããŠããã¯ãšãªå®è¡ã¢ã«ãŽãªãºã ã¯ãPrologã®æšè«ã¢ã«ãŽãªãºã ãããåçŽã§æ±çšæ§ãäœããªã£ãŠããŸããããã«ãããããããæé©åããã¯ããã«é«ãããã©ãŒãã³ã¹ãå®çŸã§ããŸãã Prologã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®æ°çŸäžè¡ãè¿ éã«åŠçããããšãã§ããŸãããããã«ãPrologã®æšè«ã¢ã«ãŽãªãºã ã¯ãããã°ã©ã å®è¡ã®çµäºããŸã£ããä¿èšŒããŸãããäžéšã®ã¹ããŒãã¡ã³ãã®åºåã¯ãç¡éã®ååž°ã«ã€ãªããå¯èœæ§ããããŸãã
ã¡ãªã¿ã«ãããŒã¿ããŒã¹ãšè«çããã°ã©ãã³ã°ã®äº€å·®ç¹ã«ã¯ãæšè«ããŒã¿ããŒã¹ãã«ãŒã«ã®èšèªãããããžã®ã¯ãšãªããŒã¿ãã°ãªã©ã®ãã¯ãããžãŒããããŸããããŒãã«ã®ã¬ã³ãŒãã®ä»£ããã«ãæšè«ããŒã¿ããŒã¹ã¯è«ççãªã¹ã¿ã€ã«ã§å€§éã®äºå®ãšã«ãŒã«ãä¿åããŸããDatalogã¯Prologã®ããã«èŠããŸãããåäžã®ãã¡ã¯ãã§ã¯ãªããã»ããã«çµåããããã¡ã¯ãã®æäœã«éç¹ã眮ããŠããŸããããã«ã倧éã®ããŒã¿ãé«éã«åŠçããããã®æšè«ã¢ã«ãŽãªãºã ãæé©åããããã«ããã®äžã®1次ããžãã¯ã®äžéšã®æ©èœãã«ãããããŸããããããã£ãŠãè«çèšèªã®è¡šçŸåã®äœãæ§æã«ãå©ç¹ããããŸãã
APIã¬ã€ã€ãŒèšè¿°ãžã®å®£èšçã¢ãããŒã
SQLã¯ãã¢ãã«æ§ç¯ãããŒã¿ã¢ã¯ã»ã¹ã¬ã€ã€ãŒã«ãã€ã³ãããŸãããããã宣èšçããã°ã©ãã³ã°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å察åŽãã€ãŸãAPIå±€ã§æŽ»çºã«éçºãããŠããŸãããã®ç¹åŸŽã¯ããªã¯ãšã¹ãã®æ§é ã«é¢ããæ å ±ãããã®APIã䜿çšãããŠãŒã¶ãŒãå©çšã§ããããã«ããå¿ èŠãããããšã§ãããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®æ§é ãæ£åŒã«èª¬æããã®ã¯è¯ã圢ã§ãããããã£ãŠããã®èšè¿°ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããšåæãããããšãã°ãããã«åºã¥ããŠèŠæ±ã¯ã©ã¹ãšå¿çã¯ã©ã¹ãçæããããšãæãŸããŸããæ¬¡ã«ããªã¯ãšã¹ããåŠçããããã®ããžãã¯ãäœæããå¿ èŠããããŸãã
GraphQLã¯ããã®åŸæ¥ã®ã¢ãããŒããã¯ããã«è¶ ããAPIãæ§ç¯ããããã®ãã¬ãŒã ã¯ãŒã¯ã§ãããã¯ãšãªèšèªã ãã§ãªããã¯ãšãªå®è¡ç°å¢ãæäŸããŸããã³ãŒããçæããå¿ èŠã¯ãããŸãããã©ã³ã¿ã€ã ã¯ãšã«ãããªã¯ãšã¹ãã®èª¬æãçè§£ããŸããGraphQLã䜿çšããŠAPIãå®è£ ããã«ã¯ã次ã®ãã®ãå¿ èŠã§ãã
- èŠæ±ãšå¿çã®äžéšã§ããã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ã¿ã€ãïŒãªããžã§ã¯ãïŒãèšè¿°ããŸãã
- èŠæ±ãšå¿çã®æ§é ã説æããŸãã
- ãã£ãŒã«ãã®å€ãååŸããããã«ãªããžã§ã¯ããäœæããããžãã¯ãå®è£ ãã颿°ãå®è£ ããŸãã
ããŒã¿ã¿ã€ãã¯ããªããžã§ã¯ããã£ãŒã«ãã®èª¬æã§ããã¹ã«ã©ãŒåããªã¹ããåæããã¹ããããåãžã®åç §ãªã©ã®åããµããŒããããŠããŸããã¿ã€ããã£ãŒã«ãã«ã¯ä»ã®ã¿ã€ããžã®åç §ãå«ããããšãã§ãããããããŒã¿ã¹ããŒãå šäœãã°ã©ããšããŠè¡šãããšãã§ããŸããèŠæ±ã¯ãAPIããèŠæ±ãããããŒã¿æ§é ã®èª¬æã§ãããªã¯ãšã¹ãã®èª¬æã«ã¯ãå¿ èŠãªãªããžã§ã¯ãããããã®ãã£ãŒã«ããããã³å ¥å屿§ã®ãªã¹ããå«ãŸããŠããŸããåããŒã¿ã¿ã€ããšãã®åãã£ãŒã«ãã¯ããªãŸã«ã颿°ã«é¢é£ä»ããå¿ èŠããããŸããã¿ã€ãïŒãªããžã§ã¯ãïŒãªãŸã«ããŒã¯ãã®ãªããžã§ã¯ããååŸããããã®ã¢ã«ãŽãªãºã ãèšè¿°ãããã£ãŒã«ããªãŸã«ããŒã¯ãªããžã§ã¯ããã£ãŒã«ãå€ãèšè¿°ããŸãããããã¯ãæ©èœèšèªãŸãã¯ãªããžã§ã¯ãæåèšèªã®1ã€ã§æ©èœã衚ããŸãã GraphQLã©ã³ã¿ã€ã ã¯ãèŠæ±ãåä¿¡ããå¿ èŠãªããŒã¿ã¿ã€ããæ±ºå®ãããã¹ãããããªããžã§ã¯ãã®ãã§ãŒã³ã«æ²¿ã£ããã®ãå«ãããããã®ãªãŸã«ããŒãåŒã³åºããŸããå¿çãªããžã§ã¯ããåéããŸãã
GraphQLã¯ã宣èšåããŒã¿ã¹ããŒãèšè¿°ããããããååŸããããã®å¿ é ãŸãã¯æ©èœã¢ã«ãŽãªãºã ãšçµã¿åãããŸããããŒã¿ã¹ããŒãã¯æç€ºçã«èšè¿°ãããŠãããã¢ããªã±ãŒã·ã§ã³ã®äžå¿ã§ããå€ãã®äººããããŒã¿ãœãŒã¹ã¹ããŒããè€è£œããªããããã¡ã€ã³ã¢ãã«ã«æºæ ããããŒã¿ã¹ããŒããäœæããããšããå§ãããŸããããã«ãããGraphQLã¯ãç°çš®ã®ããŒã¿ãœãŒã¹ãçµ±åããããã®éåžžã«äººæ°ã®ãããœãªã¥ãŒã·ã§ã³ã«ãªããŸãã
ãããã£ãŠãGraphQLèšèªã䜿çšãããšããã¡ã€ã³ã¢ãã«ãããªãæç¢ºãªæ¹æ³ã§è¡šçŸãããããä»ã®ã³ãŒããšåºå¥ããŠãã¢ãã«ãšãã®å®è£ ãè¿ã¥ããããšãã§ããŸããæ®å¿µãªãããèšèªã®å®£èšã³ã³ããŒãã³ãã¯ãããŒã¿ã¿ã€ãã®æ§æã®èšè¿°ã®ã¿ã«å¶éãããŠããŸããã¢ãã«ã®èŠçŽ éã®ä»ã®ãã¹ãŠã®é¢ä¿ã¯ããªãŸã«ããŒã䜿çšããŠå®è£ ããå¿ èŠããããŸããäžæ¹ã§ã¯ããªãŸã«ãã䜿çšãããšãéçºè ã¯ãªããžã§ã¯ãã®ããŒã¿ãååŸããä»»æã®æ¹æ³ãšããããã®éã®ä»»æã®é¢ä¿ãç¬ç«ããŠå®è£ ã§ããŸãããã ãããã®äžæ¹ã§ãããšãã°ãããŒã«ããã¬ã³ãŒããžã®ã¢ã¯ã»ã¹ãããè€éãªã¯ãšãªãªãã·ã§ã³ã®å®è£ ã詊ã¿ãå¿ èŠããããŸããäžæ¹ãGraphQLã®ããŒã¿ã¹ããŒãã¯ãAPIã¬ã€ã€ãŒãšããŒã¿ã¢ã¯ã»ã¹ã¬ã€ã€ãŒã®é¢ä¿ãæç¢ºã«ç€ºããŠããŸãããã ããäžæ¹ã§ãããŒã¿ã¹ããŒãããã€ã³ããããäž»èŠãªã¬ã€ã€ãŒã¯APIã¬ã€ã€ãŒã§ããããŒã¿ã¹ããŒãã®å 容ã¯ããã«åãããŠèª¿æŽãããŸãããªã¯ãšã¹ãã®åŠçã«é¢äžããŠããªããšã³ãã£ãã£ã¯å«ãŸããŸãããããŒã¿èšè¿°èšèªGraphQLã®è¡šçŸåã¯ãSQLãPrologãªã©ã®æ¬æ Œçãªå®£èšèšèªããå£ã£ãŠããŸããããã®ãã¬ãŒã ã¯ãŒã¯ã®äººæ°ã¯ã宣èšã¢ãã«èšè¿°ã®ããŒã«ãææ°ã®ããã°ã©ãã³ã°èšèªã®äžéšã§ããå¯èœæ§ãããããã®äžéšã§ããå¿ èŠãããããšã瀺ããŠããŸãã
ãŸãšããŸã
PL / SQLã¯ããã¡ã€ã³ã¢ãã«ãããŒãã«ãšãã¥ãŒã®åœ¢åŒã§èšè¿°ããããšãšããããæäœããããžãã¯ã®äž¡æ¹ã«äŸ¿å©ãªèšèªã§ãã宣èšçããã³æç¶ãçã³ã³ããŒãã³ãã¯ç·å¯ã«çµ±åãããè£å®çã§ããäž»ãªåé¡ã¯ããã®èšèªãããŒã¿ã®ä¿åå Žæãšå¯æ¥ã«é¢é£ããŠãããããŒã¿ããŒã¹ãµãŒããŒåŽã§ã®ã¿å®è¡ã§ããã¯ãšãªå®è¡ããžãã¯ããªã¬ãŒã·ã§ãã«ããŒã¿ã¢ãã«ã«å¶éãããŠããããšã§ãã
ã¢ããªã±ãŒã·ã§ã³åŽã§ã¯ãLINQãGraphQLãªã©ã®ãã¯ãããžãŒã䜿çšããŠãã¢ãã«ã宣èšåœ¢åŒã§èšè¿°ããããšãã§ããŸãã GraphQLããŒã¿ã¹ããŒãã䜿çšãããšããã¡ã€ã³ã¢ãã«ã®æ§é ããã®æŠå¿µã®ãã¹ããæç¢ºãã€éåžžã«æç¢ºã«èª¬æã§ããŸãããŸããã©ã³ã¿ã€ã ã¯å¿ èŠãªãªããžã§ã¯ããèªåçã«åéããããšãã§ããŸããæ®å¿µãªããããã¹ããé€ããæŠå¿µéã®ä»ã®ãã¹ãŠã®é¢ä¿ãšæ¥ç¶ã¯ããªãŸã«ããŒé¢æ°ã®ã¬ã€ã€ãŒã«å®è£ ããå¿ èŠããããŸãã LINQã«ã¯å察ã®é·æãšçæããããŸãã SQLã®æè»ãªæ§æã«ãããæŠå¿µéã®é¢ä¿ãããæè»ã«èšè¿°ã§ããŸããããããèŠæ±ã®å€ã§ã¯ãå®£èšæ§ã¯çµãããèŠæ±ãªããžã§ã¯ãã¯OOPã®äžçã®èŠçŽ ã§ãããããã¯äœæããã倿°ã«å²ãåœãŠãããå¿ é ã®ã¹ã¿ã€ã«ã§äœ¿çšãããå¿ èŠããããŸãã
LINQãšGraphQLã®äž¡æ¹ã®å©ç¹ãçµã¿åãããããšæããŸãããã®ãããGraphQLã®ããã«æŠå¿µã®æ§é ã®èšè¿°ãæç¢ºã«ãªããSQLã®ããã«è«çã«åºã¥ããŠãããã®éã®é¢ä¿ãèšå®ã§ããŸããããŸããæŠå¿µã®å®çŸ©ãã¯ã©ã¹ãšããŠååã§çŽæ¥å©çšã§ããããã«ããããããªããžã§ã¯ããæç€ºçã«äœæãããã倿°ã«å²ãåœãŠãããåç §ãæž¡ãããããå¿ èŠã¯ãããŸã
ãããã¡ã€ã³ã¢ãã«ã®èšè¿°èšèªãéçºããããšããããã®ãããªãœãªã¥ãŒã·ã§ã³ã®èšèšãéå§ããŸãããããããã®ããã«ã¯ãç¥è衚çŸã®æ¢åã®èšèªã®æŠèŠãäœæããå¿ èŠããããŸãããããã£ãŠã次ã®åºçç©ã§ã¯ãããžãã¯ããã°ã©ãã³ã°ãRDFãOWLãããã³ãã¬ãŒã ããžãã¯èšèªã«ã€ããŠèª¬æããããããæ¯èŒããŠãäºæž¬ãããããžãã¹ããžãã¯èšè¿°èšèªã«ãšã£ãŠè峿·±ãæ©èœãèŠã€ããããšæããŸãã
Habréã«é¢ãããã¹ãŠã®åºçç©ã®ãªãªãŒã¹ãåŸ ã¡ãããªã人ã®ããã«ããªã³ã¯ã§å©çšå¯èœãªè±èªã®ç§åŠçãªã¹ã¿ã€ã«ã®å šæããããŸãïŒåæ§é åããŒã¿åŠçã®ããã®ãã€ããªãããªã³ãããžãŒæåããã°ã©ãã³ã°ã
以åã®åºçç©ãžã®ãªã³ã¯ïŒ
ãã«ããã©ãã€ã ããã°ã©ãã³ã°èšèªã®èšèšãããŒã1-ããã¯äœã®ããã§ããïŒ