GraphQLãªãŸã«ããŒã®ä»çµã¿ â ã¯ãšãªãããŒã¿ã«ãªããŸã§
GraphQLã£ãŠã欲ããããŒã¿ã ãåãããã£ãŠèããã©ãè£åŽã§ã¯ã©ããã£ãŠããŒã¿ãéããŠãã®ïŒ
ããã§æŽ»èºããã®ãããªãŸã«ããŒãã ããGraphQLã®ã¹ããŒãã«ã¯ããŒã¿ã®åãå®çŸ©ãããã ãã©ãåãã£ãŒã«ãã«å¯ŸããŠããã®ãã£ãŒã«ãã®ããŒã¿ã¯ãããã£ãŠåã£ãŠããŠãããšãã颿°ãçŽã¥ãããã ãããããªãŸã«ããŒã ãã
ãã£ãŒã«ãããšã«é¢æ°ãããã®ïŒ ãã¡ããã¡ãããããæžãããšã«ãªãããâŠ
å®éã«ã¯ãã¹ãŠã®ãã£ãŒã«ãã«æžãå¿ èŠã¯ãªããã芪ãªããžã§ã¯ãã®ããããã£åãšãã£ãŒã«ãåãäžèŽããŠããã°ãããã©ã«ããªãŸã«ããŒãèªåã§å€ãè¿ããŠããããã ãæç€ºçã«æžãã®ã¯ãããŒã¿ããŒã¹ã«åãåããããå€éšAPIãåŒãã ãããå¿ èŠããããã£ãŒã«ãã ãã ãã
ã¹ããŒããã¡ãŒã¹ãã£ãŠããèšèãèããããšããããã©ãããã£ãŠäœãªã®ïŒ
ãŸãGraphQLã®ã¹ããŒãå®çŸ©èšèªïŒSDLïŒã§åãæžããŠãããã«åãããŠãªãŸã«ããŒãå®è£ ããã¢ãããŒãã ãããèšèšå³ãå ã«æããŠãããããé 管工äºããããã€ã¡ãŒãžã ããéã«ã³ãŒããã¡ãŒã¹ãã¯ãTypeScriptãªã©ã®ã³ãŒãããã¹ããŒããèªåçæããæ¹æ³ã§ãåå®å šæ§ãé«ãã¡ãªããããããã
ãªãŸã«ããŒãã§ãŒã³ã£ãŠäœãªã®ïŒ
GraphQLã®ã¯ãšãªã¯ããªãŒæ§é ã ãããããšãã°ããŠãŒã¶ãŒ â ãã®æçš¿äžèЧ â åæçš¿ã®ã³ã¡ã³ããã¿ããã«ã芪ãã£ãŒã«ãã®ãªãŸã«ããŒãè¿ããçµæããåãã£ãŒã«ãã®ãªãŸã«ããŒã«æž¡ãããŠãããã«ãã®åãžâŠãšé£éããŠãããããããªãŸã«ããŒãã§ãŒã³ã ãã
ã«ãŒãã®ãªãŸã«ããŒã¯Queryã»Mutationã»Subscriptionã®3ã€ããããã ããïŒ
N+1åé¡ã£ãŠèããããšãããã©ããªãŸã«ããŒãšé¢ä¿ããã®ïŒ
倧ããã ãïŒ ããšãã°ãŠãŒã¶ãŒ10人ãååŸããŠãåãŠãŒã¶ãŒã®æå±ããŒã ããªãŸã«ããŒã§åãå ŽåãçŽ æŽã«æžããšããŒã ã®ååŸã10åèµ°ãããããN+1åé¡ã ãã解決çãDataLoaderãã¿ãŒã³ã§ãåãã€ãã³ãã«ãŒãå ã®ãªã¯ãšã¹ãããŸãšããŠ1åã®ãããã¯ãšãªã«ããŠããããã ã
ãªãŸã«ããŒã®äžã§ãšã©ãŒãèµ·ãããã©ããªãã®ïŒ
GraphQLã®é¢çœããšããã¯ããšã©ãŒãèµ·ããŠãã¬ã¹ãã³ã¹å šäœã倱æã«ãªããªãããšã ãããšã©ãŒãçºçãããã£ãŒã«ãã ãnullã«ãªã£ãŠãerrorsãã£ãŒã«ãã«ãšã©ãŒæ å ±ãå ¥ããæ£åžžã«åããä»ã®ãã£ãŒã«ãã¯ã¡ãããšè¿ããããã ãREST APIã®ãå šéšæåãå šéšå€±æãããšã¯éãã¢ãããŒãã ãã
ãªãŸã«ããŒã®äžã§èªèšŒãšãããŒã¿ããŒã¹æ¥ç¶ã£ãŠã©ãæ±ãã®ïŒ
contextãšããä»çµã¿ããããããªã¯ãšã¹ãããšã«èªèšŒæ å ±ãDBæ¥ç¶ããŒã«ãªã©ãè©°ã蟌ãã ãªããžã§ã¯ããäœã£ãŠããã¹ãŠã®ãªãŸã«ããŒã®ç¬¬3åŒæ°ãšããŠæž¡ããã ãããã§ã©ã®ãªãŸã«ããŒããã§ãå ±éãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ãããã
ãªãŸã«ããŒã£ãŠé çªã«å®è¡ãããã®ïŒ ãããšã䞊åãªã®ïŒ
ããããã£ãŒããªãã€ã³ãã ããQueryã®åãéå±€ã®ãã£ãŒã«ãã¯äžŠåã«å®è¡ã§ãããã ãã§ãMutationã ãã¯äŸå€ã§ãã¹ããŒãã«æžãããé çªã§çŽåå®è¡ããããããŒã¿ã®æŽåæ§ãä¿ã€ããã ããã ããMutationã®ãã£ãŒã«ãé åºã¯èšèšäžãšãŠãéèŠãªãã ãã
Apollo Federationã ãšãªãŸã«ããŒã¯ã©ããªãã®ïŒ
Federationã§ã¯è€æ°ã®ãµãã°ã©ãïŒãã€ã¯ããµãŒãã¹ïŒãããããèªåã®æ åœããåã®ãªãŸã«ããŒãæã€ãã ãã²ãŒããŠã§ã€ãã¯ãšãªãåæããŠãã©ã®ãµãã°ã©ãã«ã©ã®éšåãåãåããããèšç»ãç«ãŠããåãµãã°ã©ãã¯__resolveReferenceãšããç¹æ®ãªãŸã«ããŒã§ãä»ãµãŒãã¹ããåç §ãããåã®ããŒã¿ãè¿ããã忣ã·ã¹ãã ã§ããªãŸã«ããŒã®ä»çµã¿ãäžè²«ããŠããã®ããGraphQLã®åŒ·ã¿ã ãã