ããã«ã¡ã¯ã
æ®æ®µã¯åèšãæ¥åã·ã¹ãã ã®éçºãããŠãããšã³ãžãã¢ã§ãã
å®åã®äžã§ ãCSVãSQLã«å€æãããã ããªã®ã«ãæ¯åæäœæ¥ã§é¢åã ãªâŠã
ãšããå Žé¢ãå€ãã
ãæ¬²ããããŒã«ããªããã°èªåã§äœãã°ãããããªããïŒã
ãšæãç«ã£ãŠ MVP ãäœããŸããã
ä»åã®èšäºã§ã¯ïŒ
⢠ãªãäœã£ããïŒèª²é¡ïŒ
⢠å
¬éããããŒã«
⢠æè¡æ§æïŒLaravel + RenderïŒ
⢠MVPã§å·¥å€«ãããã€ã³ã
⢠ãããã€ã§è©°ãŸããããç¹
⢠ä»åŸè¿œå äºå®ã®æ©èœ
ããŸãšããŠããŸãã
å人éçºã§ãµã¯ããšå
¬éããã人ã®åèã«ãªãã°å¬ããã§ãã
ð¯ äœã£ãããŒã«ïŒCSV â SQL èªå倿ïŒKitHUB ToolsïŒ
KitHUB Tools ãšããååã§å
¬éããŠããŸãã
ïŒååã®ç±æ¥ã¯ âéçºè
ã®ããã®éå
·ç®±â çãªæå³ã§ãïŒ
⌠æ©èœïŒMVPçïŒ
- CSVãã¡ã€ã«ãã¢ããããŒã
- INSERT æãèªåçæ
- è¡æ°ïŒã«ã©ã æ°ã®äžéãã§ãã¯
- åæšæž¬ïŒint, float, stringãªã©ïŒ
- SQL ã®ã³ããŒãã¿ã³
- SQLã®ãã¡ã€ã«ããŠã³ããŒã
- UIã¯å®å šèªäœïŒTailwind颚ã®ã·ã³ãã«ç·ããŒãïŒ
MVPãªã®ã§è»œãã§ãããå®åã§ã¯åå䜿ããã¬ãã«ã§ãã
ð æè¡æ§æïŒå šéšç¡æïŒ
ä»åã®æ§æã¯ä»¥äžã®ãšããïŒ
| é ç® | æè¡ |
|---|---|
| èšèª | PHP 8 + Laravel |
| UI | Blade + èªäœCSS |
| DB | SQLiteïŒãã¡ã€ã«ããŒã¹ïŒ |
| ãã¹ãã£ã³ã° | RenderïŒFreeãã©ã³ïŒ |
| èšæž¬ | Google Analytics |
| ã³ãŒã管ç | GitHub Private |
𧪠ãªãå®è£ ãããïŒå®åã®èª²é¡ïŒ
æ¥åã§ãããã課é¡ïŒ
- äžæããŒã¿ã DB ã«å ¥ããåã« SQLåããã
- CSV ãåãåã£ãŠãINSERT ã«ããŠããšèšããã
- ããŒãã«ã®ã«ã©ã æ°ãå€ããŠæäœæ¥ãèŸã
- UTF-8 / SJIS / æ°å€åå€å®ãå°å³ã«é¢å
- 倧ããCSV㯠Excel ã§éããªã
- èšæSQLãäœããã³ã«æ¯åããŒã«æ¢ãããå§ãŸã
ãçµå±æ¯ååãäœæ¥ãã£ãŠããªïŒã
ãšæ°ä»ããã®ããã£ããã§ãã
ð§© MVPã§æèãããã€ã³ã
â â âãšããããåãæå°æ§æâã«çµã£ã
Laravel + Blade + SQLite ã®æå°æ§æã§ã¹ã¿ãŒãã
ãŠãŒã¶ãŒç»é²ããã°ã€ã³ã¯ç¡ãã
â â¡ CSV㯠file_get_contents ã§ã¯ãªãã¹ããªãŒã åŠç
倧ãããã¡ã€ã«ã§ãèœã¡ãªãããã«ã以äžã®ããã«ã¹ããªãŒã ã§1è¡ãã€èªãæ¹åŒã«ã
$handle = fopen($filePath, 'r');
while (($row = fgetcsv($handle)) !== false) {
// 1è¡ãã€INSERTã«å€æ
}
â ⢠ã«ã©ã æ°ã»è¡æ°ã»ãã€ãæ°ã®äžéãã§ãã¯
Render ã®ç¡æãµãŒããŒã ãš CPU ã匱ãã®ã§ã
æªæã®ãã巚倧CSVã¢ããããŒããé¿ããããã®å¶éãå
¥ããŸããã
â ⣠SPAã«ããªãïŒã·ã³ãã«ã§å£ããªãæ§æïŒ
MVPã§ã¯ã
⢠Blade
⢠èªäœCSS
⢠ãã¬ãŒã³JavaScript
ã ãã§UIãæ§ç¯ã
åæUIã§æ©ã¿ãããªãããã«ããŸããã
ð³ Render ã§ Laravel ãåãããšãã®æ³šæç¹
å人éçºè ããŸãåŒã£ãããã®ãããã
â â SQLite ã®ãã¹ã«æ³šæ
Render ã®ç°å¢ã§ã¯ /var/www/html/database ã®ãã㪠絶察ãã¹ ãå¿ èŠã
DB_CONNECTION=sqlite
DB_DATABASE=/var/www/html/database/database.sqlite
äœæå¿ãããšãããããšã©ãŒãåºãŸãïŒ
Database file does not exist
â â¡ã¹ãªãŒãã¯ããããMVPãªãåå
Render Free 㯠15åã¢ã¯ã»ã¹ãªã â ã¹ãªãŒã ã§ããïŒ
⢠起åæã«ãã¢ããªã±ãŒã·ã§ã³ããŒãã£ã³ã°ãç»é¢ãåºã
⢠æ°ç§ã®é
å»¶ã¯ãã
⢠ã§ãåæMVPã§ã¯åé¡ãªã
æ¬çªéçšãããšãã«ææã«åãæ¿ããã°OKã
ð UI ã®ãã ãããã€ã³ãïŒç·ããŒãïŒ
ããŒã«ã£ãœãç¡éªšãªUIãé¿ãããã£ãã®ã§ã
ãç·ç³»ã§çµ±äžããæããããããã«ãã¶ã€ã³ããæ¡çšããŸããã
:root {
--accent: #089949;
--accent-hover: #077d3c;
}
ãããŒã§æ¿ãç·ã«ãªãããã«èª¿æŽããŠããŸãã
ð§ ä»åŸè¿œå äºå®ã®æ©èœ
å人éçºãªã®ã§ãæ¹å欲ã¯ç¡éã«ãããŸãã
ð© äºå®ããŠããæ©èœ
⢠ãã©ã³ã¶ã¯ã·ã§ã³åïŒã³ããã/ããŒã«ããã¯æ©èœ
⢠ãã¹ãããŒã¿èªåçæïŒDDL â FactoryïŒ
⢠CSV差忝èŒïŒæåŸ
倿€èšŒïŒ
⢠DBå·®å â Googleã¹ãã¬ããã·ãŒãåºå
â¢ é¢æ°ã®åŒã³å
è§£æïŒã³ãŒã«ã°ã©ãåïŒ
ã©ããå®åã§å°ã£ãçµéšããçãŸããŠããŸãã
ð å ¬éããŠã¿ãŠã®ææ³
æ£çŽãªãšãããRender ã«ããã〠â å
¬éãŸã§ãæ©ãããŠé©ããŸããã
⢠ãµãŒããŒæ§ç¯äžèŠ
⢠docker-composeäžèŠ
⢠SSLãèªå
⢠Freeãã©ã³ã§ãåå軜ã
⢠SQLiteãåãã
⢠Laravelãåãã
⢠èªäœCSSã§ããã¬ã€ã«è¡šç€ºã§ãã
ãäœãããåã«å ¬éããããšãã MVP éçºã®è¯ããæ¹ããŠå®æããŸããã
ð æåŸã«
å人éçºã¯å®ç§ãç®æããšæ°žé ã«åºããªãã®ã§ã
ãŸãã¯åããã®ãå
¬éããŠãã£ãŒãããã¯ããããã®ãè¯ããšæã£ãŠããŸãã
ä»åã®èšäºããå人éçºãå§ããã人ã
Laravel à Render ã§äœãåãããã人ã®åèã«ãªãã°å¹žãã§ãã
ã質åã»æ¹åæ¡ãããã°æ°è»œã«ã³ã¡ã³ããã ããïŒ