
ãå·¥å Žã®æäœç€ãç§»æ€ãããçºèµ°åã«ãã³ãã³å ããããã¯LIVEã¢ãã¿ãŒãš16鲿°URLããã¯ïŒAlma MDI Proéçºèš #8
ã©ãããã¢ã«ãã³ã¢ã§ãïŒ
æ®æ®µã¯å·¥å Žã®èªååæ©æ¢°ãã·ãŒã±ã³ãµãŒïŒPLCã»å¶åŸ¡ç€ïŒã®èšèšã«åãåã£ãŠãããçŸåœ¹ã®æ©æ¢°ãšã³ãžãã¢ã§ãã
ååã®ç¬¬7åïŒNO.7ïŒã§ã¯ãJRAå ¬åŒããŒã¿ã«ååšããªããå銬åå¥ããã³ã©ããããééé äœãšçå·®ããç©çéåæ¹çšåŒã§éç®ãã49äžé åã®èµ°ç Žãã°ã埩å ããçæ°ã®ã¢ã«ãŽãªãºã ããå±ãããŸããã
ããšã³ãžãã¢ã®å·å¿µãæãããããããŸã§éç®ããŠDBã«å ¥ãããããïŒããšç±ãåé¿ãããã ããæ¬åœã«ããããšãããããŸãïŒ
âŠâŠããŠã
ååã®ã©ã¹ãã§ã次åã¯ã©ããé©å床ã¹ã³ã¢ãªã³ã°ãžïŒããšäºåãåºããŠãããã§ããâŠâŠåèšæ€åãããŠãã ããïŒç¬ïŒïŒ
ãšããã®ããã©ãã ãããŒã¿ããŒã¹ïŒAlma Core ProïŒã®äžã«49äžé åã®åå¥ã©ãããå š29ããŒãã«ã®ç²Ÿå¯ãªããŒã¿ãè©°ãŸã£ãŠããããšãåœæã®ç§ã鱿«ã®ç«¶éЬã«åãåã£ãŠããå§¿ã¯ããã§ããã
PS C:\KeibaDB> python query_race.py --date 20261101 --venue 04 --race 11
âŠâŠãããçºèµ°3ååã®ç·è¿«ããçŸå Žã§ãé»ãç»é¢ïŒCUIïŒã«ã³ãã³ãã«ã¿ã«ã¿å©ããŠãããããŒãŒãŒããïŒç¬ïŒïŒïŒ
ç· ãåããã«ã鳎ãé¿ãäžãåŒæ°ïŒãã©ã¡ãŒã¿ïŒãæã¡ééããŠãšã©ãŒãåããããªããºã®æªã¿ãèŠã€ããåã«ã²ãŒããéããŠææ²âŠâŠã
å·¥å Žã®è£œé ã©ã€ã³ã«äŸãããªããã©ã€ã³ã§èŠå ±ãã¶ãŒã鳎ãé¿ããŠããç·æ¥äºæ ã«ãçŸå Žã®äœæ¥å¡ãå¶åŸ¡ç€ã®å¥¥ã§ããŒãPCéããŠCèšèªãã³ã³ãã€ã«ããŠãããããªããã§ãã
ãããªãªãã¬ãŒã¿ãŒãçŸå Žã«ãã£ããå³åº§ã«å·¥å ·ç®±é£ãã§ããŸããïŒ
ãçŸå Žã«å¿ èŠãªã®ã¯ãå°é£ããã³ãã³ãå ¥åããªããçŽæã§ãããšç¶æ³ã俯ç°ã§ããŠãæå ã²ãšã€ã§ç¬æã«æŠæ³ãææ¡ã§ãããèªåå°çšã®æäœç€ïŒHMIã»èšåšç€ïŒããïŒã
ããçæããç§ã¯ãè§£æãšã³ãžã³ã®åã«ããŸãã¯ãã¹ãŠã®åžä»€å¡ãšãªãããã³ããšã³ããAlma MDI Proãã®ã³ãã¯ãããïŒéå¬äžèЧã»åºéŠ¬è¡šã¬ãŒã¹éžæç»é¢ïŒããŒãããåãåºãããšã«ããã®ã§ãã
ä»åã¯ãPythonæšæºã®GUIããŒã«ããããTkinterããæ¥µéãŸã§äœ¿ãåããWindowsãã€ãã£ãã®çéæäœç€ãçµã¿äžãããŸã§ã®æ³¥èãéçºãã©ãããå±ãããŸãïŒ
1. ãªãWebã§ã¯ãªããTkinterã®èªäœMDIããªã®ãïŒ
ããŸã©ãGUIã¢ããªãäœããªããReactãFlutterã䜿ã£ãŠã¢ãã³ãªWebã¢ããªé¢šã«ä»äžããã®ãäž»æµãããããŸããã
ãããã鱿«ã«åœéã匵ãçŸåœ¹ãšã³ãžãã¢ãšããŠã®ç§ã®çµè«ã¯ããWebããŒã¹ã¯100%ãã·ãã§ããã
â ãã©ãŠã¶ã®ãèªã¿èŸŒã¿äžïŒã«ã¯ã€ãïŒãã¯å®æŠã§åœåã
ç· ãåãçŽåã®ç«¶éŠ¬å ŽãPATæç¥šã®çŸå Žã«ãããŠãéä¿¡é å»¶ïŒã¬ã€ãã³ã·ïŒããã©ãŠã¶ã®åèªã¿èŸŒã¿åŸ ã¡ã§ç»é¢ãäžç¬çœããªãã©ã°ã¯ãèŽåœå·ä»¥å€ã®äœç©ã§ããããŸããã
OSäžã§çŽæ¥ãã¯ã»ã«ãæç»ããCPUãšããŒã«ã«ã¡ã¢ãªã®ãã¯ãŒã100%䜿ãåããã€ãã£ãã¢ããªã§ãªããã°ããã®æ®ºæ°ç«ã£ãçŽåãªããºã®æ³¢ã¯ä¹ãããªããªãã®ã§ãã
â¡ ç»é¢ãæ£ããããªããMDIïŒãã«ãããã¥ã¡ã³ãïŒããžã®åå·çãªãã ãã
競銬ã®åæãããŠãããšãåºéŠ¬è¡šãèŠãªãããå¥ã®ã¬ãŒã¹ã®çµæãæ¯ãè¿ããåæã«æ°ã«ãªã£ã銬ã®ã競走銬ã«ã«ããããè¡çµ±è¡šããéããããªããŸãã
ãããéåžžã®ãŠã£ã³ããŠã§äœããšãã¿ã¹ã¯ããŒããŠã£ã³ããŠã ããã«ãªããç»é¢ã®è£ã«é ããŠè¿·åã«ãªãããŠã£ã³ããŠè¿·åäºä»¶ããå€çºããŸãã

Python
# alma_viewer.py ããïŒTkinterã§ãŒãããçµãã ãèªäœMDIãŠã£ã³ããŠã
class MDIWindow(tk.Frame):
def __init__(self, parent, win_key, title="Window", width=900, height=700, x=50, y=50, on_close=None):
super().__init__(parent, bd=2, relief=tk.SOLID, highlightbackground="#0052CC", bg="#0052CC")
# ç¬èªã®ãªãµã€ãºã°ãªããïŒæ±è¥¿ååã»åé
ïŒããã¬ãŒã äžã«æåå®è£
ïŒ
self._create_resize_grips()
ãã²ãšã€ã®èŠªãŠã£ã³ããŠïŒã¯ãŒã¯ã¹ããŒã¹ïŒã®äžã§ãåãŠã£ã³ããŠãã¿ãã®ããã«æŽç¶ãšéããèªç±ã«ç§»åã»æ¡å€§ã»æå°åã§ããæ§é ã«ãããã
ããèããç§ã¯ããªããšTkinterã®Frameãé§äœ¿ããŠãã¿ã€ãã«ããŒã®ãã©ãã°ç§»åããåé ã®ããŠã¹ãªãµã€ãºã°ãªããïŒdo_resizeïŒãæå°åã»æå€§åããžãã¯ãŸã§ãMDIã®ãŠã£ã³ããŠãããŒãžã£ãŒãå®å šã«èªäœïŒæçµïŒããŸããã
ãããããã«ããã£ã¹ãã¬ã€ç°å¢ã§äœ¿ããããªã£ããšãã®ããã«ãåãŠã£ã³ããŠãç»é¢å€ãžã¹ãã³ããšç¬ç«è¡šç€ºããããå€éšåé¢ïŒãããã¢ãŠãïŒæ©èœïŒpopout_mdi_windowïŒããŸã§å®åã
ããªãéšåã¯æç€ã§åãåºãããšããæ©æ¢°å±ã®çããããã§ãå®å šã«çžè£ããŠããŸããŸããïŒç¬ïŒã
2. ããã宿ãããéå¬äžèЧã»åºéŠ¬è¡šéžæãã³ãã¯ãããã ïŒ
ããããŠçµã¿äžãã£ããã¢ããªèµ·åæã«çã£å ã«ç«ã¡äžãããåºéŠ¬è¡šã¬ãŒã¹éžæãã®ç€é¢ããã¡ãã§ãïŒ

2026幎11æ1æ¥ïŒå€©çè³ã»ç§ åœæ¥ïŒã®éå¬äžèЧç»é¢ãå·Šã«äº¬éœãå³ã«æ±äº¬ããºã©ãªãšäžŠã³ãäžéšã«ã¯åœæ¥ã®éŠ¬å Žã»å€©åã»éå¬éå ±ããããŠã¡ã€ã³ã¬ãŒã¹ãžã®çŽè¡ãã¿ã³ã䞊ã¶ã
ãããã§ããããïŒ
åžè²©ã®ç«¶éЬãœãããWebãµã€ãã®ããã«ãã¹ã¯ããŒã«ããŠäžãæ¢ããå¿ èŠã¯äžåãããŸããã
åœæ¥ã®å šéå¬ïŒãã®æ¥ã¯äº¬éœ12RïŒæ±äº¬12RïŒå š24ã¬ãŒã¹ïŒããèŠç·ãå·Šå³ã«åããã ãã§ã³ã³ãæ°ç§ã§é ã®äžã«é£ã³èŸŒãã§ããã¬ã€ã¢ãŠãã«ä»äžããŸããã
ãã®ç»é¢ã«è©°ã蟌ãã ãæ©æ¢°ãšã³ãžãã¢ãªãã§ã¯ã®ãçŸå Žç®ç·ã®ä»æãïŒã®ããã¯ïŒããããã€ãã玹ä»ãããŠãã ããã
3. çŸå Žãæ¯ããæ³¥èããã ããããžãã¯
â 16鲿°ããã¯ïŒãJRAã¬ãŒã·ã³ã°ãã¥ã¢ãŒãã®URLçŽçµã¢ã«ãŽãªãºã
競銬ãã¡ã³ãªã誰ãããäžè©±ã«ãªã£ãŠããå ¬åŒæ åãµãŒãã¹ãJRAã¬ãŒã·ã³ã°ãã¥ã¢ãŒãã
ãããã¯åç»ïŒPDïŒãã¬ãŒã¹æ¬ç·šïŒRVïŒããããŠåè² æã®äœçœ®åãã確èªããããããŒã«ãããªïŒPVïŒãæ®éãªããµã€ããéããŠãæ¥ä»ãéžãã§ãã¬ãŒã¹çªå·ãæ¢ããŠâŠâŠãšã¯ãªãã¯ãäœåã匷ããããŸãã
ããããªæ é·ãªããšãã£ãŠããããïŒ å³ã¯ãªãã¯äžçºã§ãã€ã¬ã¯ãã«åç»ãã¬ã€ã€ãŒãç«ã¡äžããïŒã
ãããå®çŸãããããã¬ãŒã·ã³ã°ãã¥ã¢ãŒã®URLãã©ã¡ãŒã¿äœç³»ã培åºçã«ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ããŸããã
ããã§çªãæ¢ããã®ããã幎ã»ç«¶éŠ¬å Žã³ãŒãã»åæ¬¡ã»æ¥æ¬¡ã»ã¬ãŒã¹çªå·ãã16鲿°1æ¡ã«å€æããŠçµåãããšããç¬èªã®æå·ä»æ§ã§ããã
Python
# tab_race_selection.py ããæç²
# 忬¡ã»æ¥æ¬¡ã»ã¬ãŒã¹çªå·ã16鲿°1æ¡ã«å€æïŒ10æ¥ç®->'a', 11æ¥ç®->'b', 12æ¥ç®->'c'ïŒ
t_hex = hex(safe_int(times))[2:]
d_hex = hex(safe_int(day))[2:]
r_hex = hex(r_int)[2:]
# äŸ: 2026幎 4åæ±äº¬11æ¥11R (倩çè³ã»ç§) â "26" + "5" + "4" + "b" + "b" â "2654bb"
base_code = f"{year[2:]}{v_code_1digit}{t_hex}{d_hex}{r_hex}"
target_code = f'{base_code}_p' if video_type == 'paddock' else ...
url = f'https://regist.prc.jp/api/windowopen.aspx?target=race/{year}/{r_date}/{target_code}&quality=4'
webbrowser.open(url)
ãã®æ°è¡ã®é¢æ°ãçµã¿èŸŒãã ãããã§ãã°ãªããäžã®ããããã¯ãåãã¯ãªãã¯ããããå³ã¯ãªãã¯ã¡ãã¥ãŒãæŒãã ãã§ããã©ãŠã¶çµç±ã§JRAã¬ãŒã·ã³ã°ãã¥ã¢ãŒã®å¯Ÿè±¡æ åã0.1ç§ã§å³åº§ã«ã¹ããªãŒãã³ã°åçãããããã«ãªããŸããã
â¡ çºèµ°5ã25ååãèªåæ€ç¥ããŠãã³ãã³å ãããããã¯LIVEã¢ãã¿ãŒã
ãããã¯æ åã¯ããã£ãšåãæµããŠèŠãŠããæã¯ãããŸãããèŠãã¹ãã¿ã€ãã³ã°ã¯ãçºèµ°ã®çŽåã銬ãåšåããŠãããªã¢ã«ã¿ã€ã ã®ç¬éãã ãã§ãã
ããã§ãããã¯ã°ã©ãŠã³ãã®ã¿ã€ããŒïŒ_check_paddock_scheduleïŒãåžžæèµ°ããããçŸåšæå»ãšçºèµ°äºå®æå»ã®å·®ã5åã25ååã®ã¬ãŒã¹ãã ããèªåæ€åºããã€ã³ã¿ãŒããã¯ãçµã¿ãŸããã
Python
# çºèµ°5ååã25ååã®ã¬ãŒã¹ãããã°ããªã¬ã³ãž/èµ€ã®ãã¿ã³ããã³ãã³ç¹æ»
ïŒ
if 5.0 <= diff_min <= 25.0:
active_paddock_races.append(...)
çºèµ°ãè¿ã¥ããã¬ãŒã¹ããããšãç»é¢äžéšã«ãð¥ æ±äº¬11R (çºèµ°20åå)ããšãã£ãã¢ã©ãŒããã¿ã³ããã¥ããšåºçŸãã800ããªç§ééã§ãã³ãã³ãšç¹æ» ããŠç§ïŒãªãã¬ãŒã¿ãŒïŒã«ç¥ãããŠãããŸãã
å·¥å Žã®èŠå ±ã©ã³ãïŒããã©ã€ãïŒãšåãææ³ã§ãïŒç¬ïŒã
ããã§ããããããããã¯èŠéããïŒããšããå¡ãã¹ã¯100%æ²æ» ã§ããŸããã
⢠ã倩çè³ïŒç§ïŒ G1*ãã®éçæ¿ãšã¡ã€ã³ã¬ãŒã¹çŽè¡äŸ¿
ã°ãªããã®ã¬ãŒã¹å衚瀺ã«ããJRA-VANã®æšæºè¡šèšã§ã¯ãªãã競銬ãã¡ã³ã«ãšã£ãŠäžçªéŠŽæã¿æ·±ããTARGET颚ã®è¡šèšã«ãŒã«ããå®å šç§»æ€ããŸããã
Python
parse_race_name_target_style(...)
ç¹å¥ç«¶èµ°ã¯ãç¹ãããã³ãæŠã¯ãHãããªã¹ãããã¯ã(L)ãããããŠG1ã¬ãŒã¹ã«ã¯å ã ã®ãG1*ãã
åœæ¥ã®ã¡ã€ã³ã¬ãŒã¹ïŒè³éãäžçªé«ãã¬ãŒã¹ïŒã¯ãç»é¢å³äžã®ããã·ã¥ããŒãã«ãð æ±äº¬11R 倩çè³ïŒç§ïŒ G1*ããšããå°çšã®çŽè¡ãã¿ã³ãšããŠèªåçæãããã¯ãªãã¯äžçºã§åºéŠ¬è¡šãžé£ã¹ãããã«ãªã£ãŠããŸãã
⣠24ã¬ãŒã¹ã®ãªããºã»éЬäœéãç¬æ®ºããããã«ãã¹ã¬ãã䞊åååŸã
åæ¥ã®æãç»é¢å³äžã®ç·è²ã®ãã¿ã³ãð æ¬æ¥ã®å šã¬ãŒã¹ ãªããºã»éЬäœéäžæ¬æŽæ° (é«é䞊å)ããããããšæŒããšãè£åŽã§Pythonã®concurrent.futures.ThreadPoolExecutor(max_workers=5)ãçžè£ããŸãã
1ã¬ãŒã¹ãã€é çªã«ãªããºãèœãšããŠããã1å以äžåŸ
ããããŸããã5ã¹ã¬ãã䞊åã§ã¹ã¯ã¬ã€ãã³ã°ïŒDBæ ŒçŽãèµ°ãããããšã§ãå
š24ã¬ãŒã¹ã®ååãªããºã»äººæ°ã»ææ°éЬäœéãããããæ°ç§ã§ããŒã«ã«DBïŒkeiba.dbïŒãž
äžæ°ã«åžã蟌ãŸããŠãããŸãã
4. æäœç€ãæã«å ¥ããŠãäžçãå€ãã£ã
é»ãã³ã³ãœãŒã«ã«SQLãæã¡èŸŒãã§ããŒã¿ãèŠã蟌ãã§ããæ¥ã ã
ãããä»ããèªäœã¢ããªãAlma MDI Proããç«ã¡äžããã«ã¬ã³ããŒããæ¥ä»ãéžãã ç¬éã
ã«ããâŠâŠïŒ0.05ç§ïŒã
ãã¡ããšç®ã®åã«ç«ã¡äžãããçŸããæŽåããæ±è¥¿24ã¬ãŒã¹ã®äžèЧã°ãªããã
倩åãéŠ¬å Žç¶æ ãåºèµ°åæ¶ãéšæå€æŽã®éå ±ããã¹ããäžéšã«æµããçºèµ°ãè¿ã¥ãã°ãããã¯ãã¿ã³ããã³ãã³ãšèµ€ãç¹æ» ããã
ã¬ãŒã¹ãããã«ã¯ãªãã¯ããã°ãç¬ãããéããªã18é ã®ãã«ããŒã¿ãã¡ã¢ãªäžã«å±éãããã
ãâŠâŠãããããã§ãããããæŠãããã®åå°ïŒã³ãã¯ãããïŒãå®å šã«æã£ããã
å·¥å Žã®å¶åŸ¡ã©ã€ã³ã§ããåªããã·ãŒã±ã³ã¹ããã°ã©ã ãšé äžãªæäœç€ãã¬ãããªåã¿åã£ãç¬éãæ©æ¢°ã¯ãŸãã§çãç©ã®ããã«æ»ããã«åãå§ããŸãã
ãã®ãéå¬äžèЧããšããç€é¢ã宿ããããšã§ãããã¯ãšã³ãã®ãAlma Core Proããšããã³ããšã³ãã®ãAlma MDI Proãããå®å šã«ã²ãšã€ã®ã·ã¹ãã ãšããŠåŒåžãå§ããã®ã§ãã
5. 次åäºåïŒåºéŠ¬è¡šãšããåã®ãæ å ±å¯åºŠã®ãã±ã¢ãããž
ã ããæ¬åœã®æ³¥æ²Œéçºã¯ããããã§ããïŒç¬ïŒã
éå¬äžèЧãããæ±äº¬11R 倩çè³ïŒç§ïŒããããã«ã¯ãªãã¯ããç¬éã«ç«ã¡äžããç»é¢ã
ãããç«¶éŠ¬äºæ³ã®äž»æŠå Žã§ãããåºéŠ¬è¡šã»éЬæ±ã°ãªããïŒtab_shutubaïŒãã§ãã
18é åã®æ è²ã»éЬçªã»éšæã»æ€é
競銬ããã¯ç¬èªã®RTææ°ã»SPææ°
éå»5èµ°ã®çé ã»èµ°ç Žã¿ã€ã ã»äžãã3F
ãã©ãã¯ãã³ã®èª¿æçè©ãšè¿œãåãã¿ã€ã
ã¹ãã©ã€ãã®å è¡åã»è¿œèµ°åã»ç¬çºåâŠâŠ
ã1ç»é¢ã«è©°ãèŸŒãæ å ±éãå€ãããããããŒãŒãŒãïŒïŒ 1ãã¯ã»ã«ãããã ãã§å šéšåŽ©ãããïŒïŒã
次åã
ãAlma MDI Proéçºèš NO.9ã1ãã¯ã»ã«ã®ãºã¬ã§çºçïŒTkinterã§ãè¶ é«å¯åºŠã»åºéŠ¬è¡šã°ãªããããçŸããæŽåããããŸã§ã®æ»éïŒ
æ å ±å¯åºŠã®éçã«æããçŸåœ¹ãšã³ãžãã¢ã®ããªåäœã®UIãã¥ãŒãã³ã°åããå±ãããŸãã
ä»åãæåŸãŸã§èªãã§ããã ãããã³ãã«ããããšãããããŸããïŒ
ãèªäœMDIã®å€æ çãªãã ããã«ç¬ã£ãïŒãããããã¯ç¹æ» ã¢ã©ãŒããçŸå Žæãã£ãŠæé«ïŒããšæã£ãŠããã ãããããã²ç»é¢äžã®ãã¹ãããããã©ããŒããããããšæŒããŠããã ãããšãæ¯æ©ã®ã³ãŒãã£ã³ã°ã®æé«ã®ã¬ãœãªã³ã«ãªããŸãïŒ
ã³ã¡ã³ããææ³ããæ°è»œã«æžã蟌ãã§ãã£ãŠãã ããããããã§ã¯ããŸã次åã®èšäºã§ãäŒãããŸãããïŒ
ã¢ã«ãã³ã¢ã§ããã
âïž åã®èšäºã¯ãã¡ã
ð ã第7åïŒå
¬åŒããŒã¿ã«ç¡ããªãéç®ã§äœãïŒééé äœãšçå·®ãããå銬åå¥ããã³ã©ããããç©ç埩å
ããå·å¿µã®ã¢ã«ãŽãªãºã ã
ð å
šè©±ã€ããèªã¿ïŒèªäœç«¶éЬãœããéçºèšãã¬ãžã³
ð [Alma Core Pro / MDI Pro éçºãã¬ãžã³ãéã]
ð¡ ããªãExcelã§ããµãŒããŒåDBã§ããªãSQLiteãªã®ãïŒãåç¹ã®ç¬¬1åã¯ãã¡ã
ð [éçºèš 第1åãèªã]
ð€ å·¥å Žã®PLCã»å¶åŸ¡å±éã§æžãïŒçå¿«ïŒéåãªèªäœWebå°èª¬ãé£èŒäž
ð [転çãããã€ãŒãã³ã»ãã¹ã¯ã倧統é ã ã£ãä»¶ïŒç¬ïŒ 第1話ãž]
ð [æ¬æ Œã¯ã©ã€ã SFãµã¹ãã³ã¹ãã¢ããã¯ã·ã§ã³ã»ãããã³ã«ã第1話ãž]