
ã1ãã€ãã®ãºã¬ã§å³æ»ãæåã®éºç£ãåºå®é·ããŒã¿ã競銬ããã¯KD3ãèªäœããŒãµãŒã§ããäŒããå€!Alma Core Proéçºèš #2
ã©ãããã¢ã«ãã³ã¢ã§ãïŒ
æ¬æ¥ã¯å·¥å Žã®èªååæ©æ¢°ãã·ãŒã±ã³ãµãŒïŒPLCã»å¶åŸ¡ç€ïŒã®èšèšã«åãåã£ãŠããããã ã®çŸåœ¹ãšã³ãžãã¢ã§ãã
ååã®ç¬¬1åã§ã¯ãããªãExcelã§ããµãŒããŒåDBã§ããªãSQLiteãªã®ãïŒããšããããŒã¿ããŒã¹éžå®ã®ãã ãããã話ãããŸããã
ããããã®ãã¹ããããã©ããŒãããã ããæ¬åœã«ããããšãããããŸãïŒ
ããŠããSQLiteã§å š29ããŒãã«ã®åŒ·åºãªããŒã¿ããŒã¹ãäœããïŒããšæ±ºæããç§ã§ãããæåããéœåãã綺éºãªããŒãã«ãçšæãããŠããããããããŸããã
ãŸãã¯æµãç¥ãããšããå§ãŸãâŠâŠïŒ
錻æ¯èãã競銬ããã¯ã®çããŒã¿ïŒç«¶éЬéOnLine / KD3圢åŒïŒãããŠã³ããŒãããŠããã®ã§ããâŠâŠã
ããã§ç§ãåŸ ã£ãŠããã®ã¯ãæ©æ¢°ãšã³ãžãã¢äººçã§ãææãã®è³é£ã
ãç®ãããããããªãæ°åã®çŸ åããšãæ°ãé ããªããããªãèšèšå°çãã§ããïŒç¬ïŒã
ä»åã¯ãæåãå¹³æåæã®éºç£ãšãèšãããåºå®é·ããŒã¿ãã®æŽç€Œãšãæå€§ã®é£æã ã£ãSQLå®çŸ©æžã»èªäœããŒãµãŒæ§ç¯ãŸã§ã®æ³¥èãæ Œéåããå±ãããŸãïŒ
1. è§£åããŠãè§£åããŠãçµãããªãããããªã§ãŒã·ã«ãã®çœ
æå ã«ããã®ã¯ã競銬ããã¯ïŒç«¶éЬéOnLineïŒããããŠã³ããŒãããŠããããŒã¿ãã¡ã€ã«ã
æåã¯æ®éã«ã.zipã圢åŒã§èœã¡ãŠããŸããã
ããã£ãæ®éã«ZIPãã¡ã€ã«ããããããªãPythonã®æšæºæ©èœã§ãµã¯ããšæ±ãããªã
ãšããã®æã®ç§ã¯å®å šã«æ²¹æããŠããŸããã
ãã£ããZIPãè§£åããŠã¿ããšâŠâŠäžããåºãŠãããã¡ã€ã«ãèŠãŠãæããç»é¢ã«ããã³ããå ¥ããŸãã
ããã«äžŠãã§ããã®ã¯ãå¹³æåæã®åç³ã®ãããªæ¡åŒµåâŠâŠã.lzhãã
ãããŸããªãïŒ ãªãã§ZIPã®äžã«å ¥ã£ãšãããïŒ çããã¿ãïŒïŒç¬ïŒã
PCã®åã§äžäººããã³ãã«èŠç¬ããã€ã€ãããã«å°çšã¢ãŒã«ã€ãã䜿ã£ãŠãã® .lzh ãè§£åããŸãã
ãããšãäžããã€ãã«æ¬äžžãšãªãæ¡åŒµåâŠâŠã.kd3ãã®ãã¡ã€ã«ãã¡ãå§¿ãçŸããŸããã
ã.zipããããããã.lzhããåºãŠããŠããããããããã.kd3ããåºãŠããã
ãŸãã§ãã·ã¢ã®ãããªã§ãŒã·ã«äººåœ¢ã§ãã
ãããããã©ããã£ãšæ¬äžžã«ãã©ãçããããäžã¯CSVããïŒ ã¿ãåºåãããïŒã
ããã¯ã¯ã¯ã¯ããªãããåºãŠãã .kd3 ãã¡ã€ã«ãããã¹ããšãã£ã¿ã§éããç¬éâŠâŠã
ç»é¢ãã£ã±ãã«åºãã£ãå æ¯ã«ãæèãå®å šã«åæ¢ããŸããã
0520260208111124001000010101ã»ïœœã»ïœ¶ã»ïœœmã»ïœœã»ïœœEã»ïœœã»ïœœ@ã»ïœœã»ïœœã»ïœœã»ïœœ00580132433501010498+02
0520260208111124001000020102ã»ïœœhã»ïœœEã»ïœœfã»ïœœã»ïœœã»ïœœ[ã»ïœœXã»ïœœ@ã»ïœœ@ã»ïœœã»ïœœã»ïœœL00580132533202020506-04
0520260208111124001000030203ã»ïœœã»ïœœã»ïœœxã»ïœœã»ïœœã»ïœœeã»ïœœBã»ïœœAã»ïœœCã»ïœœã»ïœœã»ïœœã»ïœœ00560132633805040472000
âŠâŠã
ãããããããããããªããããããŒãŒãŒããïŒïŒïŒã
ã«ã³ããã¿ãããåºåãæåãäžåèŠåœãããïŒ
ç»é¢ãåãå°œããè¬ã®æååã®çŸ åãšã容赊ãªãæååãã®åµã
ããã©ããããã©ãã§æ¹è¡ãããŠããã®ãããæªããã
ãããããã©ããã£ãŠããŒã¿ããŒã¹ã«æµã蟌ãã ãããã®âŠâŠïŒã
ææ°æã ãšéãããšãã£ã¿ã®åã§ãç§ã®èŠçã¯å®å šã«çã£çœã«ãªããŸããã
2. æå€§ã®é£æïŒãæ¥æ¬èªã«ã©ã âè±èªç©çåãã®å€ç¬ãªèšèš
WebAPIãCSVã«æ £ãã人ãªãããã«ã³ãã§åºåã£ãŠ split(',') 1çºã§çµããïŒããšæããããªãã§ããã
ãããªèŠªåãªäžçãããã«ã¯1ããªãååšããŸããã§ããã
ãã® .kd3 ãã¡ã€ã«ã®æ£äœã¯ãã«ã³ãã®ãããªåºåãæåãäžå䜿ãããã1è¡ã®äœãã€ãç®ããäœãã€ãç®ãã©ã®é ç®ãããæ±ºãæã¡ããããåºå®é·ïŒFixed-widthïŒãã©ãŒããããã ã£ãã®ã§ãã
ã€ãŸãã仿§æžïŒèšèšå³ïŒããªããã°1æåãããšãè§£èªã§ããŸããã
ãšãããã競銬éOnLineã®ãµã€ãããããŸãäžèŠªåã§ãèå¿ã®ããŒã¿ä»æ§æžãã©ãã«ããã®ãããåãããïŒ ãµã€ãã®å¥¥åºãéãããåã£ãŠããããã仿§æžãæ¢ãåºããŸããã
ãããã仿§æžãéããŠãããä»åã®éçºã§äžçªã®é£æã§ããã
ããŒãã«åãã kol_den1ïŒåºéŠ¬è¡šïŒã kol_sei1ïŒæçžŸïŒã®ããã«è±èªè¡šèšãªã®ã§ããããã®äžã«ã¶ãäžãã£ãŠããèšå€§ãªæ°ã®ããŒã¿é ç®ã¯ããã¹ãŠãæ¥æ¬èªãã§æžãããŠããã®ã§ãïŒ
ããã§ãå°ãããŒã¿ããŒã¹ãããã£ãæ¹ãªãããæããããããŸããã
ãåãSQLiteã£ãŠæ¥æ¬èªã®ã«ã©ã åã§ãã®ãŸãŸããŒãã«äœããããšã¡ãããïŒã
ã仿§æžéãæ¥æ¬èªã®ãŸãŸäœãã°ã©ã¯ããšæãã§ïŒ ç¥ãããã©ïŒãïŒç¬ïŒãšã
ãã¡ãªãã§ãã
æ©æ¢°ãšã³ãžãã¢ãšããŠãããã ãã¯çµ¶å¯Ÿã«åŠ¥åã§ããŸããã§ããã
ããŒã¿ããŒã¹ã®ç©çã«ã©ã åã«æ¥æ¬èªïŒãã«ããã€ãæåïŒã䜿ããšãåŸã§PythonããSQLã¯ãšãªãçµããšãã«å°çãèŠãŸãã
ã³ãŒããæžããã³ã«åè§ã»å šè§ãåãæ¿ããã¹ãã¬ã¹ããã£ããçŽã蟌ããå šè§ã¹ããŒã¹ãã«ããè¬ã®ã·ã³ã¿ãã¯ã¹ãšã©ãŒãããã«ã¯èšå·ãå«ãé ç®åã«ãããã°ã®æž©åºâŠâŠã
æ©æ¢°èšèšã§èšãã°ãããªèŠæ Œã®å³é¢ã®äžã«ã€ã³ãèŠæ Œã®ããžãæ··ãããããªãã®ã§ããåŸå·¥çšã®ã¡ã³ããã³ã¹æ§ãææªã«ãªããŸãã
ãDBå éšã®éªšæ ŒïŒç©çã«ã©ã åïŒã¯ããã°ãèµ·ããªãå ç¢ãªãåè§è±æ°ãã§çµ±äžãããæ¥æ¬èªã©ãã«ãå¿ èŠãªããSQLã® AS "銬å" ã§åŸãã貌ãã°ããïŒã
ããè ¹ãæ¬ã£ãç§ã¯ãæãŠããªãäœæ¥ã«çªå ¥ããŸããã
å š29ããŒãã«ã»äœçŸé ç®ã«ãåã¶ãæ¥æ¬èªã®é ç®åããã1ã€ãã€æå³ã®éããè±èªã®ã«ã©ã åãã«ç¿»èš³ã»åœåããã
仿§æžãšçšãã£ãããªããããéå§ã¢ãã¬ã¹ïŒäœãã€ãç®ããïŒããšããªãã»ããïŒäœãã€ãé·ãïŒãã1é ç®ãã€æŸãåºãã
ããããSQLã®ããŒãã«å®çŸ©æžïŒCREATE TABLEæïŒããšãPythonã®åãåºãå®çŸ©ããžåæã«èœãšã蟌ãã§ããã
å·¥å Žã®å¶åŸ¡ç€ã§èšãã°ãäœåæ¬ãããç¡å°ã®é ç·ã³ãŒãã1æ¬ãã€ãã¹ã¿ãŒã§åœãã£ãŠãè±èªã®ã©ãã«ã貌ãçŽããªããåè·¯å³ãäžããåŒãçŽããããªäœæ¥ã§ãã
掟æããªããŠäžåãªãããã ã²ãããå°å³ã§ãäžçªããã©ãèšèšäœæ¥ã§ããã
3. ææã®ã1ãã€ããºã¬ãå°çïŒå ¬å·®Â±0ã®ç²Ÿå¯å å·¥ïŒ
ãããããã®ã¢ãã¬ã¹ãšãªãã»ããã®èšç®ã«ã¯ãæãããçœ ãæœãã§ããŸããã
ãå šè§æ¥æ¬èªïŒ2ãã€ãïŒShift_JIS / CP932ïŒãšåè§è±æ°ïŒ1ãã€ãïŒã®æ··åšãã§ãã
ããã仿§æžã®ãªãã»ããèšç®ããã€ãæ°ã®è§£éããéäžã§ããã£ã1ãã€ããã§ããã¹ãããã©ããªããïŒ
ãã®è¡ã®åŸãã«ç¶ãå šã«ã©ã ããæšªã«1ãã¹ãã€éªåŽ©ã®ããã«ãºã¬ãŠãããŸãïŒç¬ïŒã
èŠåŽããŠäœã£ãå®çŸ©æžã§ãã¹ãå®è¡ããç»é¢ã«åºåãããããŒã¿ãèŠããšããæããæ·±å€ã®éšå±ã§å«ã³ãŸããã
éŠ¬åæ¬ïŒãã€ã¯ã€ããïŒããã¯ã¹ããç»é¢å€ãžèžçºïŒ
èµ°ç Žã¿ã€ã æ¬ïŒããã¯ã¹ãïŒãªãã銬åã®ã±ããäŸµå ¥ïŒ
çé æ¬ïŒã58.5kgãïŒçé ã«æ€éãä¹±å ¥ïŒ
æ€éæ¬ïŒã1:32.4ãïŒæ€éãèµ°ç Žã¿ã€ã ã«åããæªå¥çŸè±¡ïŒ
ãå šéšãºã¬ãšãããªããããããïŒïŒïŒãïŒç¬ïŒ
ãããåãã®ããã«å šããŒã¿ã壿» ããŠããæ§ã¯ããŸãã«ççªãäºæ ã
éããŒãã®ååå å·¥ã§åç©ã®åç¹ã0.01mmãºã¬ãŠãåŸå·¥çšã®å šããžç©Žãäžè¯åã«ãªã£ããšããšå šãåã坿°ãèçãèµ°ããŸããã
ãããéããããïŒã
ãå ¬å·®Â±0ã®ç²Ÿå¯éšååãåºããããïŒã
æ·±å€ã«é ãæ±ããªããããã€ããªãã³ãç»é¢ãšä»æ§æžã亀äºã«çšã¿ã€ããã¢ãã¬ã¹ãšãªãã»ããã1ãã€ãåäœã§ä¿®æ£ãç¶ããŸããã
4. æ³¥èãããŒã¹åŠçããå šèªåãšã³ãžã³ããžå°ã蟌ãã
ããã«Pythonã®å®è£ ã§ããæ®éã®ããã¹ããšããŠã¹ã©ã€ã¹ããããšãããšå šè§ã»åè§ã®æ··åšç®æã§æåæ°ãçãããæ±ºãŸãã® UnicodeDecodeError ã§å³æ»ããŸãã
åºå®é·ããŒã¿ãçããªãåãåºãããã®éåã¯ããäžæŠãã€ããªïŒbytesïŒã®ãŸãŸåãæ¢ããæ£ç¢ºãªã¢ãã¬ã¹ãšãªãã»ããã§åãåºããŠããåŸè¿œãã§ãã³ãŒãããããšãã§ããã
Python
# äžæŠãã€ããªïŒbytesïŒãšããŠéããæ£ç¢ºãªã¢ãã¬ã¹ã»ãªãã»ããã§åãåºããŠãããã³ãŒããã
# â»äžèšã¯æŠå¿µã瀺ããµã³ãã«æ§é ã§ã
with open("SAMPLE.KD3", "rb") as f:
for line in f:
# 1. ã¢ãã¬ã¹ãšãªãã»ããïŒãã€ãåäœïŒã§å³å¯ã«ã¹ã©ã€ã¹ïŒå
¬å·®Â±0ïŒ
col1_bytes = line[start1:end1]
col2_bytes = line[start2:end2]
# 2. åŸè¿œãã§æååïŒCP932ïŒã«ãã³ãŒãããè±èªã«ã©ã ãžæ ŒçŽ
col1 = col1_bytes.decode('cp932', errors='replace').strip()
col2 = col2_bytes.decode('cp932', errors='replace').strip()
èšå€§ãªæ¥æ¬èªé ç®ããã¹ãŠè±èªã«ã©ã ã«å®çŸ©ãçŽããå š29ããŒãã«ã®SQLå®çŸ©æžãšã¢ãã¬ã¹ã»ãªãã»ããã®èŸæžã宿ããããŸã§ãã©ãã ãã®é±æ«ã溶ããããåãããŸããã
æ£çŽã«èšããŸãã
競銬ããã¯ããŒã¿ïŒKD3圢åŒïŒã¯ãæ®éã®ç«¶éЬãã¡ã³ãå人éçºè ã鱿«ã«æãåºãããã¢ã«ã³ã¬ãã«ã§ãïŒç¬ïŒã
äºéã«å§çž®ãããZIPãšLZHãè§£åããäžèŠªåãªä»æ§æžãæ¢ãåºããäœçŸãã®æ¥æ¬èªé ç®ãè±èªã«çŽããŠ1ãã€ãåäœã®èšç®ããããªããŠãæéãšæ°åã®ç¡é§é£ãã§ãã
ããããç§ãéçºããŠãããAlma Core Proãã§ã¯ããã®ãããªã§ãŒã·ã«ã®ãããªå§çž®ãã¡ã€ã«ã®è§£åãããKD3ã®1ãã€ãåäœã®ãã€ããªåãåºããæåã³ãŒã倿ããããŠè±èªç©çåã§èšèšãããSQLiteãžã®é«éã€ã³ããŒããŸã§ãããå®å šèªåã®ããã¯ã°ã©ãŠã³ãåŠçããšããŠè£åŽã«äžžããšå°ã蟌ããããšã«æåããŸããã
ãŠãŒã¶ãŒã䜿ãæã¯ãããããã仿§æžãããã€ããªã®ç¥èããé¢åãªExcelã®é¢æ°ãäžåäžèŠã
ãã ãã¿ã³ãããããšæŒãã ãã§ããã®åãç©ã®ãããªçããŒã¿ããæ°ç§åŸã«ã¯çŸããæŽåãããåã€ããã®æŠåšããšããŠæå ã®ããŒã¿ããŒã¹ã«æ ŒçŽãããŸãã
åããŠãã®èªäœã€ã³ããŒããšã³ãžã³ããšã©ãŒãŒãã§å®èµ°ããSQLiteã®ããŒãã«ãžçŸããããŒã¿ãäžæ°ã«æµã蟌ãã ç¬éã¯ãå³é¢éãã®å¯žæ³ã§ãã¿ãªã𿩿¢°éšåãåãäžãã£ããšãã®ãããªããšã³ãžãã¢å¥å©ã«å°œããç¬éã§ããã
5. 次åäºåïŒããŒã¹ã§ããŠãããŸã çµãããªã
æå·ã®ãããªKD3ã®ãã€ããªããŒã¿ããã€ãã«é äžãªSQLiteã®ããŒãã«ãšããŠçãŸãå€ãããŸããã
ã競銬ããã¯ããŒã¿ããåããïŒã
ãããã§æåŒ·ã®èªäœåæç°å¢ã®å®æãïŒã
æ·±å€2æãåå©ã確信ããŠèªäœSQLã¯ãšãªãå©ããç§ã
âŠâŠããããç»é¢ã«è¿ã£ãŠããçµæãèŠãŠãåã³ç§ã®åãããã¿ããšæ¢ãŸããŸãã
ãâŠâŠãã£ããïŒ ãã£ããããªããïŒïŒæ·±å€äºæã®ããããªãã³ã·ã§ã³ïŒã
ãæ±äº¬ç«¶éŠ¬å ŽïŒ11RïŒãéžãã ã¯ããã®ã«ããªãã§æ°æœç«¶éŠ¬å ŽïŒ11RïŒãåŒã£åŒµãããŠãããâŠâŠïŒã
ããŒã¹ã®å£ãè¶ããå ã«åŸ ã£ãŠããã®ã¯ãJRAæšæºãšã¯åŸ®åŠã«é£ãéããç¬èªã³ãŒãäœç³»ã®æ·±ã沌ãã§ããã
次åã
ãAlma Core Proéçºèš NO.3ãæ±äº¬11Rãæ°æœã«åããïŒïŒç«¶éЬããã¯KD3ãç¬èªã³ãŒãã®æ²Œããšãã¹ã¿çµ±åïŒmst_venueïŒã®æŠãã
ããŒã¿ã¯èªãããã ããæå³ãç¹ãããªãã
æ©æ¢°ãšã³ãžãã¢ã¯ããã®ãã³ãŒãäœç³»ã®ãºã¬ããããã«ããŠæ£èŠåããå®å šèªåçµåãããã®ãïŒ
ã©ãããæ¥œãã¿ã«ïŒ
â æåŸãŸã§èªãã§ããã ãããã³ãã«ããããšãããããŸããïŒ
ã1ãã€ããºã¬ã®ççªãäºæ ãç¬ã£ãïŒãããããªã§ãŒã·ã«è§£åããã¡ããã¡ãå ±æããããšæã£ãŠããã ãããããã²ç»é¢äžã®ãã¹ãïŒããŒãããŒã¯ïŒããããã©ããŒããããããšæŒããŠããã ãããšãéçºã®æé«ã®ã¬ãœãªã³ã«ãªããŸãïŒ
âïž åã®èšäºã¯ãã¡ã
ð ã第1åïŒ30äžéЬåžãéããçŸåœ¹ãšã³ãžãã¢ãã競銬å°çšSQLiteããŒã¿ããŒã¹ããŒãããåãåºããå·å¿µã
ð ãå šè©±ã€ããèªã¿ãèªäœç«¶éЬãœããéçºèšãã¬ãžã³
ð [Alma Core Pro / MDI Pro éçºãã¬ãžã³ãéã]
⩠次ã®ã話ã¯ãã¡ã
ð ã第3åïŒæ±äº¬11Rãæ°æœã«åããïŒïŒç¬èªã³ãŒãã®æ²Œãšãã¹ã¿çµ±åã
ð€ ãã¡ãã®èªäœWebå°èª¬ãããããŠã©ããïŒ
ð [ã転çãããã€ãŒãã³ã»ãã¹ã¯ã倧統é ã ã£ãä»¶ïŒç¬ïŒã第1話ãž]
ð [æ¬æ Œã¯ã©ã€ã SFãµã¹ãã³ã¹ãã¢ããã¯ã·ã§ã³ã»ãããã³ã«ã第1話ãž]