gRPCãšRESTã®éã â ãååãèªãããšãåŠçãåŒã¶ãããæ¯ã¹ã
ååãèªãå¥çŽãã2ã€ã®åœ¢ã§æ¯ã¹ã
ãŸãã¯åããåååãšå€æ®µããé Œãã§ã¿ã
é販ã®ååã«ãŒãã«ããã°ã«ããã»1200åãã衚瀺ããããšããŸããããŒã¿ãå¥ãµãŒãã¹ã«ãããšããããåãã®å¥çŽãã©ãäœãããæ¯ã¹ãŸãã以äžã¯èšèšãèªãäŸã§ãæ¥ç¶ã§ããå ¬éAPIã§ã¯ãããŸããã
| æ¹åŒ | é Œã¿æ¹ã®äŸ | å¿çã§ç¥ãããããš |
|---|---|---|
| RESTã®èãæ¹ã«æ²¿ãHTTP API | GET /products/42 | ååã®è¡šçŸïŒäŸïŒnameãšpriceYenïŒ |
| gRPCã®Unary | GetProduct ã« id = 42 ãæž¡ã | å®çŸ©ããProductã¡ãã»ãŒãž |
åãååã衚瀺ã§ããŠããURLãHTTPã®æå³ãäžå¿ã«å¥çŽããã®ããåä»ãã®ã¡ãœãããšã¡ãã»ãŒãžãäžå¿ã«å¥çŽããã®ããéããŸããURLãšGETã ãã§RESTã®ãã¹ãŠã®å¶çŽãæºããããã§ã¯ãããŸããã
gRPCã®å®çŸ©ã®æå°äŸã§ãããã£ãŒã«ãçªå·ã¯çšéãæã€ã®ã§ãããšããèŠãç®ã®ããã«æ¯ãçŽããŸããã
syntax = "proto3";
package shop;
service Catalog {
rpc GetProduct (ProductRequest) returns (Product);
}
message ProductRequest {
int32 id = 1;
}
message Product {
string name = 1;
int32 price_yen = 2;
}
ãã®å®çŸ©ããã³ãŒããçæãããµãŒããŒåŽã®åŠçã»èµ·åãšã¯ã©ã€ã¢ã³ãåŽã®åŒã³åºããå¥ã«å®è£ ããŸããå®çŸ©ã ãã§ååDBãçšæãããããã§ã¯ãããŸããã
éžã¶åã«ã3ã€ã確èªãã
- 誰ãåŒã¶ãïŒãã©ãŠã¶ãå€éšã®å€æ§ãªå©çšè ãªããHTTP APIã®æ±ãæ¹ãåããã確èªãgRPC-Webã䜿ããªãéåžžã®gRPCãšã¯å¥ã«ããããã·ãšå¯Ÿå¿ã¢ãŒããèŠãã
- éä¿¡ã®åœ¢ã¯äœãïŒ1èŠæ±ã»1å¿çããè€æ°ã¡ãã»ãŒãžãéãããgRPCã¯4çš®é¡ãå®çŸ©ã§ããããHTTP APIã§ãé£ç¶éä¿¡ããèšèšã¯å¯èœã
- éçšã§ãããïŒãã°ãæéãèªèšŒããããã·ãã³ãŒãçæã倿޿ã®äºææ§ã確èªãããHTTP/2ããã€ããªåœ¢åŒã ãã§éãã®åæã¯æ±ºãŸããªãã
ååã1ä»¶èªãAPIã§ãæ±ããããã»ãšã©ãŒæã®èŠãæ¹ãæ¯èŒãããšããããå§ãããšå€æãããããªããŸããå éšéä¿¡çšãšå ¬éçšã§æ¹åŒãåããããšãã§ããŸãã
æéãšAPI倿Žã§ç¢ºèªããããš
ãªãã¬ã¯ã·ã§ã³ã«ããAPIå®çŸ©ã®ååŸã«ã¯ããµãŒããŒåŽã§ã®æå¹åãå¿ èŠã§ããæéãäžæµRPCãžäŒããæ©èœã¯ãJavaãGoã§ã¯æ¢å®ã§å¯Ÿå¿ããC++ã§ã¯æç€ºçãªæå¹åãå¿ èŠãªã©ãèšèªã«ãã£ãŠç°ãªããŸããã¯ã©ã€ã¢ã³ãåŽã®æéèšå®ã確èªããŸãã
proto3ã®æ°ãããã£ãŒã«ã远å ã¯ããã€ããªé信圢åŒã®äºææ§ãä¿ã€å€æŽã§ãããã ããæ¢å®å€ãã¢ããªã®åŠçãæ£ããåããã¯å¥ã«ç¢ºèªããŸããåé€ãããã£ãŒã«ãçªå·ã¯åå©çšãããJSONãžå€æããå Žåã¯å¥ã®äºææ§ã«ãŒã«ã«ã泚æããŸãã
HTTPã®åºæ¬ãªãHTTPã®ä»çµã¿ãååŸé ç®ã®èšèšãæ¯ã¹ããªãRESTãšGraphQLãžã
åèè³æ
2026幎10æ9æ¥ç¢ºèªã
- Fielding â REST â RESTã®èšèšå¶çŽ
- gRPC â Core concepts â å®çŸ©ãš4çš®é¡ã®RPC
- gRPC â Deadlines â æéèšå®ãšäŒææ¡ä»¶
- gRPC â Reflection â æç€ºçãªæå¹å
- gRPC-Web â README â ãããã·ãšå¯Ÿå¿ããã¹ããªãŒãã³ã°
- Protobuf â proto3 â å®çŸ©ãšãã£ãŒã«ãçªå·ã»äºææ§