ã¯ããã«
ãFlaskã¯ã2010å¹´4æ1æ¥ã«Armin Ronacheræ°ãã¨ã¤ããªã«ãã¼ã«ã®ãã¿ã¨ãã¦ãªãªã¼ã¹ããããããPythonæ好家ã®éã§äººæ°ã«ãªã£ãPython製Webãã¤ã¯ããã¬ã¼ã ã¯ã¼ã¯ã§ãã2018å¹´ã«ã¯Pythonéçºè 調æ»ã§æã人æ°ã®ããWebãã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦æ票ããããã¾ã§ãé«ã人æ°ãããã¾ãã
ãæ¬æ¸ã¯ãFlaskã«ããå®è·µçãªWebã¢ããªã±ã¼ã·ã§ã³ï¼ä»¥ä¸ãã¢ããªï¼ã®ä½æãéãã¦ãèªåã§ã¢ããªãä½æã§ããããã«ãªããã¨ãç®çã¨ãã¦ãã¾ãã
ãã¾ãã¯æå°ã®ã¢ããªã®ä½æããå§ããåãåãããã©ã¼ã ããã¼ã¿ãã¼ã¹ã使ã£ãã¢ããªãèªè¨¼æ©è½ã¨ã段éçã«ä½æããªãããFlaskã«ããã¢ããªéçºã®åºç¤ãå¦ã³ã¾ããç¶ãã¦ãç»åãã¼ã¿ï¼åçï¼ããç©ä½ãå¤å¥ããç©ä½æ¤ç¥ã¢ããªãä½æããªããå®è·µçãªã¢ããªã®ä½ãæ¹ãå¦ãã ãã¨ããã®æ©è½ãWeb APIåããæ¹æ³ã«ã¤ãã¦è§£èª¬ãã¾ãã
ãFlaskã¯ããã¤ã¯ããã¬ã¼ã ã¯ã¼ã¯ã®1ã¤ã§ãããããä»ã®Webãã¬ã¼ã ã¯ã¼ã¯ããããã¬ã¼ã ã¯ã¼ã¯èªä½ã®ä»æ§ã«ç¸ããããã¨ãªããã¢ããªéçºãå¯è½ã§ãã
ãã¾ããããããããã¬ã¼ã ã¯ã¼ã¯å ã§å®è£ ããã¦ããæ©è½ãå°ãªããããèªåã§èãã¦å®è£ ããä½ç½ãèªç±åº¦ããããã¢ããªéçºãå¦ã¶ã®ã«é©ããWebãã¬ã¼ã ã¯ã¼ã¯ã§ãã
ããã¸ãã¹ã®å ´é¢ã§ã¯ãå®è¨¼å®é¨ãããããã®ã¢ãã¯ããã¢ç¨ãããã¯ãã®éçºã®ãããªå°è¦æ¨¡ããã¸ã§ã¯ãã«ããã¦ããã¤ã¯ããã¬ã¼ã ã¯ã¼ã¯ã§ããFlaskãã¡ããã©ãããã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦ããæ¡ç¨ããã¾ãã
ãããã«Flaskã¯ãæ©æ¢°å¦ç¿ã®ãããªãã¼ã¿ãæ´»ç¨ãããããã¯ããéçºããéã«ãããæ¡ç¨ããã¾ããæ©æ¢°å¦ç¿ã®å®è£ ã³ã¼ãããããã¯ãã«çµã¿è¾¼ãã ããWeb APIã¨ãã¦æ±ç¨åãã¦ãµã¼ãã¹æä¾ãããã¨ãããã¾ãã
ãä¸æ¹ã§ããã¼ã¿ãæ´»ç¨ãããããã¯ãéçºã®æ´å²ã¯æµ ããã©ã®ããã«æ©æ¢°å¦ç¿ããããã¯ãã«çµã¿è¾¼ã¿ãã¢ããªã¨ãã¦æä¾ã§ãããã«ã¤ãã¦ã®ç¥è¦ãå°ãªãããã«æãã¾ãã
ããããã£ãçµç·¯ãããæ¬æ¸ã§ã¯æ©æ¢°å¦ç¿ã®æåãããããããææ¸ãæåèªèãããåæã³ã¼ããé¡æã«ãã¦ãã©ã®ããã«æ©æ¢°å¦ç¿ãã¢ããªã«çµã¿è¾¼ãã§ãããã«ã¤ãã¦ã詳ãã解説ãã¾ãã
ãããããFlaskã使ã£ã¦ã¢ããªãéçºããããæ©æ¢°å¦ç¿ãã¢ããªã«çµã¿è¾¼ã¿ããã¨èãã¦ããçããã«ã¨ã£ã¦ãæ¬æ¸ããã®è¶³ãããã¨ãªãã°å¹¸ãã§ãã
Flaskã®è¨è¨ææ³
ãFlaskã¯ãPython製ã®ãã¤ã¯ãWebãã¬ã¼ã ã¯ã¼ã¯ã§ãããã¤ã¯ãWebãã¬ã¼ã ã¯ã¼ã¯ã¨ã¯ãä½ã§ããããï¼ãããã¯ãã³ã¢ã¨ãªãæ©è½ãä¿ã¡ã¤ã¤ãæ¡å¼µæ§ãæã£ã¦ãããã¬ã¼ã ã¯ã¼ã¯ããæå³ãã¦ãããæ©è½ãä¸è¶³ãã¦ããããã§ã¯ããã¾ããã
ãFlaskã¯ãããã©ã«ãã§ã¯ãã¼ã¿ãã¼ã¹æ©è½ãå«ã¾ããªããªã©ãæå°éã®æ©è½ã®ã¿ãæä¾ãããã¬ã¼ã ã¯ã¼ã¯ã§ããããã«ãããæä½éã®è¦ç´ã¯ããã¾ãããã¢ããªã®æ§æãèªç±ã«æ±ºãããã¨ãã§ãã¾ãã
ããã®ããã«ãFlaskã¯ã·ã³ãã«ãªãã¬ã¼ã ã¯ã¼ã¯ã§ããããã¼ã¿ãã¼ã¹æ©è½ãã¯ãããå¤ãã®æ¡å¼µæ©è½ããµãã¼ããã¦ããããããã®æ¡å¼µæ©è½ã¯Flaskèªä½ã«å®è£ ããã¦ãããã®ããã«ç°¡åã«å©ç¨ã§ãã¾ãã
ãå¿ è¦ã«å¿ãã¦æ§ã ãªæ¡å¼µæ©è½ã追å ãããã¨ã§ãå°è¦æ¨¡ãã大è¦æ¨¡ãªWebã¢ããªéçºã¾ã§ãå¤æ§ãªã±ã¼ã¹ã§å©ç¨ã§ããããã«è¨è¨ããã¦ãã¾ãã
ãªãFlaskã使ãã®ã
ããªããã¾Flaskã使ãã®ããèãã¦ã¿ã¾ãã2000å¹´ï½2010年代åã°é ã¾ã§ã®Webéçºã§ã¯ãéçºã«å¿ è¦ãªã»ã¼ãã¹ã¦ã®æ©è½ããããããã«ã¹ã¿ãã¯ãã¬ã¼ã ã¯ã¼ã¯ã人æ°ã§ãããããå©ç¨ããã®ãå½ããåã§ããã
ãããããæ代ã¨ã¨ãã«ãã¤ã¯ããµã¼ãã¹åãé²ã¿ãããã³ãã¨ã³ãã®æè¡ãæ¥éã«çºå±ãããã¨ã§ããµã¼ãã¼ãµã¤ãã¯APIãè¿ããããã³ãã¨ã³ãã¯JavaScriptãTypeScriptã§å®è£ ããã®ã主æµã¨ãªã£ã¦ãã¾ãããããã¦ããµã¼ãã¼ãµã¤ãã§ãããã«ã¹ã¿ãã¯ã§ã¯ãªããFlaskã®ãããªã³ã³ãã¯ãã§å¦ç¿ã³ã¹ããä½ããããã«å©ç¨ã§ãããã¬ã¼ã ã¯ã¼ã¯ãæ±ããããããã«ãªãã¾ããã
ããã®ããããã¾Flaskã¯ãPythonã«ããWebéçºã«ããã¦ããããããã¨ãå®ç¾ããããã®è¯ãé¸æè¢ã«ãªã£ã¦ãã¾ãã
Python製Webãã¬ã¼ã ã¯ã¼ã¯ã®æ¯è¼
ãFlask以å¤ã«ããå¤ãã®Python製Webãã¬ã¼ã ã¯ã¼ã¯ãããã¾ãããã®ãããæ°è¦éçºããã¸ã§ã¯ãã®éã«ããã¬ã¼ã ã¯ã¼ã¯ã®é¸å®ã«è¿·ããã¨ãããã¾ãã
ãç¹ã«Flaskã¨ããæ¯è¼ãããã®ããDjangoãBottleãFastAPIã§ãããããPythonã§å©ç¨ã§ããWebãã¬ã¼ã ã¯ã¼ã¯ã«ã¤ãã¦ç°¡åã«è¦ã¦ã¿ã¾ãããï¼è¡¨0.1ï¼ã

Django
ãDjangoã¯ãPython製Webãã¬ã¼ã ã¯ã¼ã¯ã®ä¸ã§ããæãæåãªãã¬ã¼ã ã¯ã¼ã¯ã§ãã
ãä¸è¦æ¨¡ä»¥ä¸ã®Webã¢ããªã®æ§ç¯ã«ãã使ç¨ããã¾ããéçºã«å¿ è¦ãªå¤ãã®æ©è½ãå®è£ ããã¦ããããã«ã¹ã¿ãã¯ãã¬ã¼ã ã¯ã¼ã¯ã¨å¼ã°ãã¾ãã
ãDjangoãã¤ã³ã¹ãã¼ã«ããã¨ã主ã«æ¬¡ã®ãããªæ©è½ãå©ç¨ã§ãã¾ãã
- ã¦ã¼ã¶ã¼èªè¨¼
- O/Rãããã¼
- URLãã£ã¹ãããã£
- Djangoã¢ãã«ã¤ã³ã¹ã¿ã³ã¹ã®ã·ãªã¢ã«åæ©æ§
- çµã¿è¾¼ã¿ãµã¼ãã¼
- HTMLãã©ã¼ã æ¤è¨¼ã·ã¹ãã
- ãã£ãã·ã¥ãã¬ã¼ã ã¯ã¼ã¯
- 管çç»é¢
- å¤è¨èªåæ©æ§
- ãã³ãã¬ã¼ãã¨ã³ã¸ã³æ©è½æ¡å¼µæ©æ§
ãã¾ããDjango REST frameworkï¼DRFï¼ã追å ã§ã¤ã³ã¹ãã¼ã«ãããã¨ã§ãWebã¢ããªã ãã§ãªããREST APIï¼RESTfull APIï¼ãç°¡åã«ä½ãã¾ãã
Bottle
ãBottleã¯ãPythonã§Webã¢ããªãä½æããããã®ãã¬ã¼ã ã¯ã¼ã¯ã®ä¸ã§ã¯ãæãã·ã³ãã«ãªãã¬ã¼ã ã¯ã¼ã¯ã§ãã
ããbottle.pyãã¨ãã1ã¤ã®ãã¡ã¤ã«ã ãã§æ§æããã¦ãã¾ããã¾ããPythonæ¨æºã©ã¤ãã©ãªä»¥å¤ã«ä¾åé¢ä¿ããªãä½ãã«ãªã£ã¦ãã¾ãã
ãFlaskåæ§ããã¤ã¯ãWebãã¬ã¼ã ã¯ã¼ã¯ã®1ã¤ã§ãããFlaskããããã·ã³ãã«ããéããã軽éãã¨ããç¹å¾´ãããã¾ã
ãä¸æ¹ã§ãå¿ è¦æä½éã®æ©è½ãããªããå°ãªãè¡æ°ã®ã³ã¼ãã§æ¬¡ã®ãããªæ©è½ãå©ç¨ã§ããããã«ä½ããã¦ãã¾ãã
- ã«ã¼ãã£ã³ã°
- ãã³ãã¬ã¼ã
- çµã¿è¾¼ã¿ãµã¼ãã¼
ãå¤æ©è½ãªã¢ããªãä½æããã«ã¯ãã¢ã¸ã¥ã¼ã«ãåå²ãã¦ç®¡çããããã§ããBlueprintãå©ç¨ã§ããFlaskã®ã»ããåãã¦ãã¾ãã
ãBottleã¯ãToDoã¢ããªãªã©ãã¡ãã£ã¨ããã¢ããªãä½ãã®ã«åãã¦ãããã¬ã¼ã ã¯ã¼ã¯ã§ãã
FastAPI
ãWeb APIãéçºããã¨ãã«ãFastAPIã¯Flaskã¨æ¯è¼ããããã¨ãããããã¾ãã
ãFastAPIã¯ãéåæå¦çãå®è£ ããããããã«ä½ãããPython製Webãã¬ã¼ã ã¯ã¼ã¯ã§ãããã¨ã¦ãéãã¹ãã¼ãã§ãªã¯ã¨ã¹ããå¦çã§ãã¾ãããã®ä»ã«ãã次ã®ãããªç¹å¾´ãããã¾ãã
- OpenAPIã«åºã¥ãã¦ãèªåçã«JSON Schemaã¢ãã«ãçæ
- Pythonã®ASGIãã¬ã¼ã ã¯ã¼ã¯ã§ããUvicornã«ãããã¤ããã©ã¼ãã³ã¹å
- Pydanticãå©ç¨ãã¦ãã¢ãã«ã®åãããªãã¼ã·ã§ã³ï¼æ¤è¨¼ï¼ã®å®ç¾©ãå¯è½
- APIãå®ç¾©ããã¨ãSwagger UIãRedocã«ããããã¥ã¡ã³ãã®èªåçæãå¯è½
- GraphQLãWebSocketã«ã対å¿
ãWeb APIãéçºããããã§ãæ¬æ¥ãªãèªåã§è¨è¨ãã¦ã¼ãããæºåããªããã°ãªããªãæ©è½ããäºåã«FastAPIã®ãã¬ã¼ã ã¯ã¼ã¯ã®ä¸ã«çµã¿è¾¼ã¾ãã¦ãã¾ãã
ãã¾ããFastAPIã¯ããã¨ãã¨Starletteã¨ãããã¬ã¼ã ã¯ã¼ã¯ããã¨ã«ãã¦æ¸ããã¦ãããå¤ãã®æ©è½ãç¶æ¿ãã¦ãã¾ããã¡ãã£ã¨ããAPIãéçºããã®ã«é©ãããã¬ã¼ã ã¯ã¼ã¯ã§ãã
ã以ä¸ãFlaskã¨ããæ¯è¼ãããDjangoãBottleãFastAPIã®æ¦è¦ãè¦ã¦ãã¾ãããæå¾ã«Flaskã®ç¹å¾´ãã¾ã¨ãã¦ããã¾ãã
- æ¨æºã§æä¾ããæ©è½ã¯æå°éã§ãå¦ç¿ã³ã¹ããä½ãï¼åå¿è ãããã«ä½¿ããï¼
- ãã¼ã¿ãã¼ã¹æ©è½ãªã©æ§ã ãªæ¡å¼µæ©è½ããµãã¼ããã¦ãããå°è¦æ¨¡Webã¢ããªããWeb APIã¾ã§éçºå¯è½
ãæ¬æ¸ã§ã¯ã主ã«Flaskã«ããWebã¢ããªã®éçºæ¹æ³ã«ã¤ãã¦è§£èª¬ãã¦ããã¾ãã次ç¯ããFlaskã®ç°å¢æ§ç¯ã«ã¤ãã¦è§£èª¬ãã¦ããã¾ãã

Python Flaskã«ããWebã¢ããªéçºå
¥é
ç©ä½æ¤ç¥ã¢ããª&æ©æ¢°å¦ç¿APIã®ä½ãæ¹
èè
ï¼ä½è¤æåºãå¹³ç°å²ä¹
ç£ä¿®ï¼å¯ºç°å¦
çºå£²æ¥ï¼2022å¹´1æ24æ¥ï¼æï¼
å®ä¾¡ï¼3,740åï¼æ¬ä½3,400åï¼ç¨10%ï¼
Pythonã®ãã¬ã¼ã ã¯ã¼ã¯ãFlaskãã«ããWebã¢ããªéçºã®å ¥éæ¸ã§ããã¾ãã¯ãæå°ã®ã¢ããªã®ä½æããå§ããåãåãããã©ã¼ã ããã¼ã¿ãã¼ã¹ã使ã£ãã¢ããªãèªè¨¼æ©è½ã¨æ®µéçã«ä½æããªãããFlaskã«ããã¢ããªéçºã®åºç¤ãç¿å¾ãã¾ãã