2024.9.7ïŒAnvilã«ã€ããŠè¿œèšããŸããã
2024.8.6ïŒFastHTMLã«ã€ããŠè¿œèšããŸããã
â»æ¬èšäºã§èšåããŠããReflexã®discordãµãŒããŒå ã«æ¥æ¬èªãã£ã³ãã«ãã€ãã£ãŠããããŸããããããèå³ããã£ã人ããããåå ããŠã¿ãŠãã ããã
ïŒïŒPythonã ãã§Webã¢ããªãã€ããã©ã€ãã©ãªãå¢ããŠãã
æè¿ïŒ2024.05ïŒãPythonçéã§ã¯Pythonã ãã§Webã¢ããªãäœããã©ã€ãã©ãªãå¢ããŠããŸãã詳ããã¯ä»ã®èšäºãåç
§ããŠããããã°ãšæããŸãã
以äžã®èšäºããšãŠãåèã«ãªããŸãããããããšãããããŸãã
ïŒïŒã©ã€ãã©ãªã®åé¡
ããããã©ã€ãã©ãªã倧ãããããŠïŒã€ã®çš®é¡ãããããã«æããŸãã
â ããŒã¿è§£æã®çµæã衚瀺ããããã·ã¥ããŒãã©ã€ãã©ãª
â¡æ±çšçãªWebã¢ããªãã€ããããŒã³ãŒãã©ã€ãã©ãª
â ããã·ã¥ããŒãç³»ã©ã€ãã©ãª
ããšãã°ãäžèšã®èšäºã«ãåºãŠããŸããããããã§ãããªãæ
å ±ã®å€ããStreamlitãDashã¯é
çª1ã®ããã·ã¥ããŒãã©ã€ãã©ãªã«è©²åœãããšæããŸãã
Pandasã®Dataframeãã€ãã£ãŠã衚ãã°ã©ããç°¡åã«ã§ããŸãã
Pythonã䜿ã人ã®ãªãã§ãããŒã¿è§£æãããŠãã人ã«ãšã£ãŠã¯ãWebã¢ããªãäœããšããã®ã¯ã¡ã€ã³ã®ã¿ã¹ã¯ã§ã¯ãªãããµãã¿ã¹ã¯ã«éããŸããã
å¯èŠåãããããäººãšæ
å ±å
±æããããã«Webã¢ããªã¯äŸ¿å©ã§ãããTypeScriptãã€ãã£ãŠããã«ãã®æºåããŠãããã¯ãšã³ãã®APIçšæããŠãšãããŠãããããŒã¿è§£æãšããã¡ã€ã³ã¿ã¹ã¯ã«æ¯éãæ¥ããŸãã
ããã§ãStreamlitãDashãªã©ã®Pythonã ãã§ã³ãŒãã£ã³ã°ã§ããŠãããã³ãã®ãã«ãã®æºåããããã³ã³ããŒãã³ããäœãããç°¡åã«Webã¢ããªãäœããã©ã€ãã©ãªã®ããŒãºãé«ãã®ã ãšæããŸãã
äžèšã®ã©ã€ãã©ãªã¯ãããŒã¿è§£æç³»ã®ããã·ã¥ããŒããäœãã«ã¯äŸ¿å©ãªã®ã§ãããæ¥åç³»ã®Webã¢ããªãã€ãããšãªããšããã«ã¹ã¿ãã€ãºã倧å€ãªéšåããããŸãã
ãŸã çºå±éäžãªã®ã§ããã®ãã¡æ±çšçãªWebã¢ããªã®éçºããŒãºãæºããæ©èœãå®è£
ããããããããŸããããã ãçŸæç¹ïŒ2024.05ïŒã§ã¯ããã®æ©èœã¯äžè¶³ããŠããããã«æããŸãã
â¡æ±çšçãªWebã¢ããªãã€ããããŒã³ãŒãã©ã€ãã©ãª
ããŒã¿è§£æçšã®ããã·ã¥ããŒãã§ã¯ãªããæ¥åç³»ã®Webã¢ããªãã€ããããå Žåã®ã©ã€ãã©ãªãPythonã«ã¯ãããŸããããšãã°ãReflexãFletãæããããŸãã
Reflex
Reflexã¯ãPythonãã€ãã£ãŠReactã©ã€ã¯ãªã³ãŒãã£ã³ã°ã§ç»é¢ãäœæããããšãã§ããŸããããçšåºŠã³ã³ããŒãã³ããäœã£ãŠãããŠããã®ã§ãåŒã³åºãã ãã§ã³ã³ããŒãã³ãã衚瀺ã§ããŸãã
Reactã®è¯ãã¯ãJavaScriptãTypeScriptã®ã³ã³ããã¹ãã§ãã¹ãŠããããããšã«ãããèªç¥ãäœæ¥ã®è² æ
軜æžã ãšæããŸãã
Reflexã¯ãããPythonã§å®çŸããŠãããšæããŸãã
Flet
ããäžã€ã¯Fletããã¡ãã¯Reflexãšã¯è¶£ãéã£ãŠããŠãWebã¢ããªã ãã§ãªããã¹ããã¢ããªãäœããŸãããšããããPythonã§ã³ãŒãã£ã³ã°ããŠFlutterã®ã³ãŒããçæããŠããããã§ãã
Flutterãæè¿ã¯æ§ã ãªãããã¯ã·ã§ã³ã«äœ¿ãããŠããŸããããããPythonã ãã§äœããã®ã¯ããªãé åçã ãšæããŸããç§ã¯ãŸã è§Šã£ãŠããªãã§ããããã®ãã¡è§Šã£ãŠã¿ãããšæããŸãã
ãããã®ã©ã€ãã©ãªã¯ãããã·ã¥ããŒãã©ã€ãã©ãªãšã¯éã£ãŠããŠãæ±çšçãªWebã¢ããªãã€ããããããªèšèšã«ãªã£ãŠããŸãã
ããšãã°ããã°ã€ã³ç»é¢ã®å®è£
ãã¡ãã¥ãŒã®é
眮ãšããWebã¢ããªãã€ãã£ãŠãããšå®è£
ããªããšãããªããã®ãç¬èªã®ã«ã¹ã¿ãã€ãºã§ã¯ãªããã©ã€ãã©ãªã®æ³å®ããèšèšã«å³ããŠã³ãŒãã£ã³ã°ã§ããŸãã
ããã·ã¥ããŒãã©ã€ãã©ãªã§ã¯ãªããWebã¢ããªãäœããããªãReflexãFletã®ãããªæ±çšçãªWebã¢ããªçšã®ããŒã³ãŒãã©ã€ãã©ãªã䜿ãã®ããããšæããŸãã
FastHTML
(2024.8.6远èšïŒFastHTMLãšããReflexãšäŒŒããããªã©ã€ãã©ãªããããŸããèŠãæãããªãã·ã³ãã«ã§ããã
Anvil
ãã©ãã°ã¢ã³ãããããã§ç»é¢ãäœããŠãã¢ã¯ã·ã§ã³ãPythonã§ã³ãŒãã£ã³ã°ããAnvilãšãããµãŒãã¹ããããŸãããã¡ãããªã³ãã¬ãžã®ãããã€ãã§ããããGitã§ã®ãœãŒã¹ç®¡çãã§ããŸãã
â»ãã¡ãã¯ã©ã€ãã©ãªã§ã¯ãªããWebãµãŒãã¹ã
ç·šéç»é¢ã¯ä»¥äžã
ã¢ã¯ã·ã§ã³ã¯Pythonã§ã³ãŒãã£ã³ã°ã
ïŒïŒäœæ ãäžèšèªã ãã§ã¢ããªãäœããã©ã€ãã©ãªãå¢ããŠããã®ãïŒ
æè¿ã¯ãRailsã®HotwireãLaravelã®Livewireãªã©ãè±JavaScript/TypeScriptãè±ããã³ããã«ãæºåãªã©ãWebéçºã®çŸå Žã§å°ããã€èŠãããããã«ãªã£ãŠããŸããã
ãã20幎è¿ãWebéçºããŠããŸããããã«ãã䌎ãWebã®ããã³ãéçºã¯ãæºåãã³ãŒãã£ã³ã°ãçµæ§å€§å€ã ãšæããŸããããã«å ããŠãUIç¹æã®èšèšã®åé¡ããã©ãŠã¶ãžã®å¯Ÿå¿ãªã©ãããããšãŠããçãã§ããæ£çŽãã©ã®é åã§ãããã®ã§ã楜ããããã®ãããã°ã©ããŒã®æ¬é³ã§ã¯ãªãã§ããããïŒ
å°ãªããšãç§ã¯ããæããŠããŸãã
ãããžã®è§£æ±ºæ¹æ³ãšããŠçãŸããã®ããåè¿°ã®HotwireãLivewireãªã©ãããããããã«ãã®æºåã¯ããŠãããŠããŠãäžã€ã®èšèªã ãã§ã³ãŒãã£ã³ã°ã§ããæè¡ã»ããã§ã¯ãªãã§ããããïŒ
ãããŠãæ¬èšäºã§ãšããããPythonã®Webç³»ã©ã€ãã©ãªã¯ãã³ã³ããŒãã³ãã®éçºãŸã§ããŠãããŠããŸããããããŠãŒã¶ãŒã®èŠä»¶å®çŸ©ãšåºæ¬èšèšïŒå€éšèšèšïŒãããããã³ãŒãã£ã³ã°ã«åãããããã¬ãã«ã§ãã
äžèšã§èšåããPythonãRubyãPHPã§è§ŠããWebã¢ããªãç°¡åã«ã€ãããæè¡ã¯ãæçµçã«ãJavaScriptãHTMLãCSSãçæããŠããã®ã§ããã«ããæºåããŠTypeScriptã§éçºããæ¹æ³ãšææç©ã¯å€ãããŸããã
æºåãã³ãŒãã£ã³ã°ã®ä»æ¹ãå€ãã£ãŠããã ãã§ãã
ããšãã°ãStreamlitãReflexã¯ãã³ã³ããŒãã³ãã®å®è£ ã¯ãReactãã€ããããŠããããReflexã¯NextJSãããã³ãã®ãã¬ãŒã ã¯ãŒã¯ãšããŠå©çšããŠããŸãã
ææç©ãåããªããæºåã補é ãæ¥œã«è¶ããããšã¯ãããŸããã
ã¡ãªã¿ã«ãStreamlitãReflexã¯ãReactã§ã®ã«ã¹ã¿ãã€ãºãã§ããŸãã®ã§ããããšãªãã°è€éãªãã®ã¯TypeScriptãJavaScriptã§ã€ããã°ããã§ãã
çµéšçã«ãæ¥åã¢ããªã ãšãããŸã§ã«ã¹ã¿ãã€ãºã§ã€ãããã®ã¯ãªããšæããŸãã
ïŒïŒæ¥åã¢ããªãPythonã®ã©ã€ãã©ãªã§ã€ããã¡ãªãã
RubyãPHPã§ãWebã¢ããªãç°¡åã«ã€ãããæè¡ããããŸãã
ãã ãæ¥åã¢ããªãäœãäžã§Pythonã§äœãã»ããè¯ãç¹ããããŸãã
ããã¯ãPandasãªã©ã®ããŒã¿ãè¡šãæ±ãã©ã€ãã©ãªãExcelãæäœããã©ã€ãã©ãªãå
å®ããŠããããšã§ãã
StreamlitãReflexã¯ãPandasã®DataFrameãã€ããã°ãããç°¡åã«è¡šãäœããŠããŸããŸãã
æ¥åã¢ããªã«ãããŠè¡šã䜿ããªããã®ã¯çç¡ã«çããã§ãããã
ãããŠãæå€ãšã€ããã®ãããã©ããããã®ã§ããããããªãExcelã«è¿ã¥ããŠãããšããèŠæãé«ãã§ãã
StreamlitãReflexã¯ããããããŒãºã«æ¯èŒç容æã«å¯Ÿå¿ã§ããŸãã
ããããããšããPythonã®Webã¢ããªã©ã€ãã©ãªã®æ¹ãæ¥åã¢ããªã«ã¯åããŠãããªãšæããŸãã
ããšãã°ãReflexã¯ä»¥äžã®ã³ãŒãã ãã§CSVãã衚ãã€ããããšãã§ããŸãã
import pandas as pd
nba_data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv")"""
...
rx.data_table(
data = nba_data[["Name", "Height", "Age"]],
pagination= True,
search= True,
sort= True,
)
äžèšã¯ã以äžã®å ¬åŒããåŒçšããŸããã
ããšãReflexã«ã€ããŠã¯ãFastAPIãSQLAlchemyãAlembicãPydanticãªã©ãã©ããã³ã°ããŠãããRouterãORMãMigrationãValidationã®æ©èœãã€ããŠããŸãã
Pythonã®Webã¢ããªã©ã€ãã©ãªã¯ãããªãå¿ èŠãªããšãèžãŸãã€ã€ã³ãŒãã£ã³ã°éãæžãããŠãããã®ã§ãšãŠã䟿å©ã ãªãšããæ°ãããŸãã
è£è¶³ïŒæ¥åã¢ããªãäœãéã®äœéšè«
以åãStreamlitã§æ¥åã¢ããªãäœã£ãŠã¿ãŸããããã®çµæããã°ã€ã³ç»é¢ã®å®è£ ãããŒãã«ã®æ¥æ¬èªå ¥åã§ãããããšã«ã¹ã¿ãã€ãºãå¿ èŠã«ãªããŸããã
ãã¯ãããã·ã¥ããŒãã©ã€ãã©ãªã§ã¯ãªããæ±çšçãªWebã¢ããªã©ã€ãã©ãªã䜿ããªããšãããªããã ãšæããŠãä»ã¯ãReflexãè§Šã£ãŠããŸãã
StreamlitãçŽç²ã«ããŒã¿è§£æçšã®ããã·ã¥ããŒããã€ããã®ã§ããã°åé¡ãªããšæããŸãããšãŠã人æ°ã®ããã©ã€ãã©ãªã§ãããä»åŸããŸããŸãæ©èœãå
å®ããŠãããšæããŸãã
Stremlitã¯ãã®é åã«ãããŠã¯ãããªãæåã§ããŠã³ããŒãæ°ãæã«æ°çŸäžããããŸãã
ããããStreamlitã®æ©èœå å®ãåŸ ãããä»ããå·¥æ°ã®å°ãªãã¢ããªãã€ãããããšèããä»ã¯Reflexã§ã®éçºãããŠããŸãããŸã ã现ãããšããã¯äžæºããããŸãããStreamlitããã¯ããªãã¹ã ãŒãºã«å®è£ ãã§ããŠããŸãã
现ããäžæºã¯Hotreloadãå°ãã ãé ãç¹ãšããã¥ã¡ã³ããæ å ±ãå°ãªãç¹ã§ããããã
ãã ããã®ç¹ã«ã€ããŠã¯ããããŸã§éçºã®æ¯éã«ã¯ãªã£ãŠãªãã§ããReflexã¯ãŸã ã¡ãžã£ãŒããŒãžã§ã³ã§ã¯ãªãã§ãããä»åŸã®çºå±ã®äžã§ãããã¯è§£æ¶ããŠããã®ã§ã¯ãšæåŸ ããŠããŸãã
Githubã®ã¹ã¿ãŒã®æ°ã16Kã§ãStreamlitã®31Kã«ã¯åã³ãŸãããã2022幎ã«ãªãªãŒã¹ããããšãèãããšããªãæ©ãå€ãã®ã¹ã¿ãŒãç²åŸããŠããšæããŸãã
Reflexã¯ã©ã€ãã©ãªãšååã®äŒç€ŸãéçºãããŠããŸãããã®äŒç€Ÿã¯YCombinatorãªã©ã®ãã³ãã£ãŒãã£ãã¿ã«ããã®æè³ãåããŠãããä»åŸã®çºå±ãæåŸ ããŠããŸãã
Today, the company announced a $5 million seed investment.
Webéçºã§å¿ èŠãšãªãããšã¯ã ãããã§ããŠããŸãããŸããã³ãŒãã£ã³ã°éãå°ãªããªããæ¯èŒçããããããã¢ãžã¥ãŒã«æ§æã«ãªãã®ã§ãã¡ã³ããããã«ãã¡ãªãããæããšæããŸãã
ãŸã ãŸã æ¥æ¬èªã®æ å ±ãå°ãªãã®ã§ãç§ã®æ¹ã§ãå°ããã€ç¥èŠãæçš¿ããŠæ¥æ¬ã§ãåºãŸãããã«ãªãã°ãšæããŸãã
è£è¶³2ïŒReflexã«é¢ããèšäº
Reflexã®READMEã«ã€ããŠãæ¥æ¬èªèš³ã远å ãããŸããã
DBãã€ãã£ãã¢ããªãäœãéã«åèã«ããæ å ±ãèšäºã«ããŸããã
Reflexã®ãµãŒããµã€ãã®æåãæ°ã«ãªã£ãã®ã§èšäºã«ããŸããã
Reflexã®READMEãåèš³ããŠäžãã£ãæ¹ã®Reflex ã®ç޹ä»èšäºã§ãã
Reflexã§DBãã€ã°ã¬ãŒã·ã§ã³ãããæ¹æ³ã説æããèšäºã§ãã



