このページを共有


4月のカレンダー



月 火 水 木 金 土 日
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリ一覧

ただの日記(947)
原付生活(3)
子育て日記(11)
PC関連(11)
もろもろ日記(915)

競馬+POG(1750)
当たらない予想と反省会(708)
POGネタ(58)
競馬について考える(19)
競馬もろもろ(225)
ダービーウィーク!(14)
2011年競馬場訪問記(27)
2012年競馬場訪問記(53)
2013年競馬場訪問記(62)
2014年競馬場訪問記(40)
2015年競馬場訪問記(43)
2016年競馬場訪問記(25)
2017年競馬場訪問記(36)
2018年競馬場訪問記(37)
2019年競馬場訪問記(34)
2020年競馬場訪問記(24)
2021年競馬場訪問記(37)
2022年競馬場訪問記(52)
2023年競馬場訪問記(70)
2024年競馬場訪問記(71)
2025年競馬場訪問記(63)
2026年競馬場訪問記(45)
地方競馬馬主(5)
ひとくち馬主(3)

ホームページ製作(365)
PHPの備忘録(16)
CSSの備忘録(5)
JavaScriptの備忘録(2)
ホームページもろもろ(290)
Flashの備忘録(12)
管理人の備忘録(21)
スマフォ用サイト作成(19)

自宅サーバ(372)
FreeBSD(17)
Apache(4)
PHP(5)
MySQL(18)
サーバもろもろ(154)
障害連絡(133)
リニューアルプロジェクト 2011-2012(41)

お仕事(48)
お仕事(48)

旅の記録・水曜どうでしょう関連(43)
水曜どうでしょう(11)
2009年四国お遍路(6)
2009年アンコールワット(5)
2010年ベトナム(3)
2010年いっそ九州(5)
2010年北海道179市町村(5)
2011年春の一人旅(2)
2011年四国お遍路(6)


先月までのネタ

2026年
2026年10月(6)
2026年9月(3)
2026年8月(3)
2026年7月(7)
2026年6月(5)
2026年5月(9)
2026年4月(4)
2026年3月(5)
2026年2月(4)
2026年1月(12)

2025年
2025年12月(7)
2025年11月(12)
2025年10月(3)
2025年9月(6)
2025年8月(4)
2025年7月(7)
2025年6月(7)
2025年5月(3)
2025年4月(3)
2025年3月(3)
2025年2月(11)
2025年1月(7)

2024年
2024年12月(11)
2024年11月(7)
2024年10月(10)
2024年9月(6)
2024年8月(6)
2024年7月(7)
2024年6月(7)
2024年5月(5)
2024年4月(5)
2024年3月(7)
2024年2月(8)
2024年1月(13)

2023年
2023年12月(11)
2023年11月(8)
2023年10月(10)
2023年9月(7)
2023年8月(9)
2023年7月(10)
2023年6月(6)
2023年5月(10)
2023年4月(5)
2023年3月(4)
2023年2月(6)
2023年1月(6)

2022年
2022年12月(9)
2022年11月(8)
2022年10月(5)
2022年9月(5)
2022年8月(2)
2022年7月(6)
2022年6月(9)
2022年5月(3)
2022年4月(3)
2022年3月(4)
2022年2月(7)
2022年1月(5)

2021年
2021年12月(8)
2021年11月(9)
2021年10月(4)
2021年9月(3)
2021年8月(2)
2021年7月(6)
2021年6月(12)
2021年5月(2)
2021年4月(8)
2021年3月(2)
2021年2月(7)
2021年1月(2)

2020年
2020年12月(8)
2020年11月(3)
2020年10月(4)
2020年9月(1)
2020年8月(2)
2020年7月(7)
2020年6月(6)
2020年5月(9)
2020年4月(11)
2020年3月(8)
2020年2月(5)
2020年1月(9)

2019年
2019年12月(4)
2019年11月(5)
2019年10月(7)
2019年9月(2)
2019年8月(2)
2019年7月(8)
2019年6月(2)
2019年5月(3)
2019年4月(2)
2019年3月(4)
2019年2月(3)
2019年1月(1)

2018年
2018年12月(8)
2018年11月(5)
2018年10月(10)
2018年9月(6)
2018年8月(1)
2018年7月(7)
2018年6月(5)
2018年5月(7)
2018年4月(19)
2018年3月(3)
2018年2月(3)
2018年1月(11)

2017年
2017年12月(14)
2017年11月(11)
2017年10月(18)
2017年9月(18)
2017年8月(21)
2017年7月(29)
2017年6月(26)
2017年5月(23)
2017年4月(18)
2017年3月(11)
2017年2月(11)
2017年1月(16)

2016年
2016年12月(25)
2016年11月(24)
2016年10月(30)
2016年9月(15)
2016年8月(16)
2016年7月(15)
2016年6月(18)
2016年5月(30)
2016年4月(28)
2016年3月(29)
2016年2月(26)
2016年1月(32)

2015年
2015年12月(30)
2015年11月(29)
2015年10月(30)
2015年9月(27)
2015年8月(28)
2015年7月(28)
2015年6月(28)
2015年5月(29)
2015年4月(30)
2015年3月(28)
2015年2月(26)
2015年1月(29)

2014年
2014年12月(31)
2014年11月(28)
2014年10月(31)
2014年9月(29)
2014年8月(29)
2014年7月(31)
2014年6月(31)
2014年5月(30)
2014年4月(30)
2014年3月(28)
2014年2月(27)
2014年1月(31)

2013年
2013年12月(29)
2013年11月(27)
2013年10月(29)
2013年9月(27)
2013年8月(28)
2013年7月(28)
2013年6月(29)
2013年5月(29)
2013年4月(30)
2013年3月(26)
2013年2月(24)
2013年1月(29)

2012年
2012年12月(28)
2012年11月(27)
2012年10月(28)
2012年9月(30)
2012年8月(31)
2012年7月(33)
2012年6月(32)
2012年5月(33)
2012年4月(35)
2012年3月(30)
2012年2月(27)
2012年1月(31)

2011年
2011年12月(25)
2011年11月(25)
2011年10月(28)
2011年9月(28)
2011年8月(28)
2011年7月(28)
2011年6月(27)
2011年5月(26)
2011年4月(16)
2011年3月(9)
2011年2月(11)
2011年1月(9)

2010年
2010年12月(12)
2010年11月(11)
2010年10月(8)
2010年9月(13)
2010年8月(10)
2010年7月(20)
2010年6月(6)
2010年5月(9)
2010年4月(2)
2010年3月(3)
2010年2月(5)
2010年1月(8)

2009年
2009年12月(9)
2009年11月(2)
2009年10月(4)
2009年9月(3)
2009年8月(1)
2009年7月(9)
2009年6月(3)
2009年5月(14)
2009年4月(10)
2009年3月(11)
2009年2月(9)
2009年1月(10)

2008年
2008年12月(1)
2008年11月(1)
2008年10月(1)
2008年9月(5)
2008年8月(1)
2008年7月(1)
2008年6月(2)
2008年5月(1)
2008年4月(1)
2008年3月(2)
2008年2月(7)
2008年1月(7)

2007年
2007年12月(11)
2007年11月(7)
2007年10月(8)
2007年9月(12)
2007年8月(11)
2007年7月(5)
2007年6月(16)
2007年5月(8)
2007年4月(2)
2007年3月(14)
2007年2月(2)
2007年1月(8)

2006年
2006年12月(4)
2006年11月(6)
2006年10月(7)
2006年9月(10)
2006年8月(9)
2006年7月(20)
2006年6月(13)
2006年5月(3)

2005年
2005年9月(13)
2005年8月(13)
2005年7月(18)
2005年6月(24)
2005年5月(26)
2005年4月(26)
2005年3月(27)
2005年2月(22)
2005年1月(26)

2004年
2004年12月(29)
2004年11月(29)
2004年10月(26)
2004年9月(23)
2004年8月(12)


最近よく読まれてるネタ



今日は(共有)所有馬メイショウアキカゼ の応援に、大井競馬場 へ行ってきました。(今年2回目の口取りです。)
(2026年10月8日のネタ:49回)

今日は(共有)所有馬の応援に、盛岡競馬場 へ行ってきました。(その2:ハッピーグローリー さん)
(2026年10月11日のネタ:23回)

今日は(共有)所有馬の応援に、盛岡競馬場 へ行ってきました。(その1:アイズ さん)
(2026年10月11日のネタ:16回)

今日はサウジアラビアロイヤルC の観戦に、東京競馬場 へ行ってきました。
(2026年10月10日のネタ:14回)

Excel VBAで「SPAT4自動投票システム」を作ってみました。
(2020年7月19日のネタ:13回)

今日は毎日王冠 の観戦に、久しぶりの東京競馬場 へ行ってきました。
(2026年10月4日のネタ:8回)

正月以外のJRA「金曜」開催って…。
(2014年3月19日のネタ:7回)

管理人のたま〜に当たる(かもしれない)G1予想!秋華賞編!
(2012年10月13日のネタ:6回)

地方競馬馬主 は全国の競馬場で馬主席 を使える?使えない?のまとめ。
(2023年12月3日のネタ:5回)

このたび…地方競馬 の馬主 となりました。
(2023年5月17日のネタ:4回)



最近のコメント



Excel VBAで「SPAT4自動投票システム」を作ってみました。(管理人)

今日は改修工事真っ只中の #京都競馬場 (パークウインズ京都競馬場)へ行ってきました。(チョネ)

本日は笠松競馬場へ行ってきました。(あいべ)

管理人の今年の目標が一つ増えました…。(あああ)

まあそんなに書くことはありませんが…。(momo)

【管理人からご挨拶】 『The Sunday Breeze』は5月25日に開設19周年を迎えます。(アオヤギ)

4月からスタートする「Sunday Breeze POG!」の一部ルール追加について。(アオヤギ)

昨日「Sunday Breeze賞」の観戦に帯広競馬場へ行ってきました。(白イチゴ)

本日5月25日、「The Sunday Breeze」は18回目の誕生日を迎えました。(アオヤギ)

【「G1予想大会」プレリリース終了】皆様のご協力、本当にありがとうございました。(アオヤギ)



ネタの検索



管理人の競馬観戦記録


(2026年)

2011年以降の競馬観戦インデックス

JRA札幌競馬場
9月5日 (札幌2歳S)

JRA函館競馬場
7月19日 (函館2歳S)

JRA福島競馬場
7月11日

JRA新潟競馬場
8月23日 (新潟2歳S)

JRA東京競馬場
4月25日 (青葉賞)
5月10日 (NHKマイルC)
5月31日 (東京優駿)
6月7日 (安田記念)
10月4日 (毎日王冠)
10月10日 (サウジアラビアRC)

JRA中山競馬場
1月5日
4月19日 (皐月賞)
9月27日 (スプリンターズS)

JRA中京競馬場
8月30日 (中京2歳S)

JRA京都競馬場
5月23日 (平安S)

JRA阪神競馬場
4月12日 (桜花賞)

JRA小倉競馬場
1月25日

盛岡競馬場
7月12日
10月11日 ((その1))
10月11日 ((その2))

水沢競馬場
3月15日

浦和競馬場
3月16日

船橋競馬場
2月13日
3月12日 (ネクストスター東日本)
3月30日
5月5日 (かしわ記念)
6月5日
7月3日
8月6日 (習志野きらっとスプリント)
10月2日

大井競馬場
1月14日 ((その1))
1月14日 ((その2))
5月18日
6月29日 ((その2))
6月29日 ((その1))
7月22日 ((その2))
7月22日 ((その1))
10月8日

名古屋競馬場
5月21日

園田競馬場
5月22日
7月24日

姫路競馬場
1月27日

高知競馬場
1月26日

佐賀競馬場
1月24日

門別競馬場
6月17日 (栄冠賞)


管理人の競馬家計簿


(最近14日分)

2026年10月8日大井
2戦1勝  回収率:179.7%

2026年10月8日門別
1戦1勝  回収率:210.0%

2026年10月10日東京
6戦0勝  回収率:0.0%

2026年10月11日東京
6戦1勝  回収率:26.7%

2026年10月11日京都
1戦1勝  回収率:260.0%

2026年10月11日盛岡
2戦2勝  回収率:162.5%

2026年10月12日東京
4戦1勝  回収率:100.0%

2026年10月12日京都
5戦0勝  回収率:0.0%

2026年10月12日盛岡
1戦1勝  回収率:192.0%

2026年10月14日川崎
1戦0勝  回収率:0.0%

2026年10月17日東京
1戦1勝  回収率:486.0%

2026年10月17日京都
1戦1勝  回収率:154.5%

2026年10月18日京都
1戦1勝  回収率:234.0%

2026年10月21日浦和
1戦0勝  回収率:0.0%

2026年合計
988戦364勝
勝率:36.8%  回収率:81.9%
(万馬券:4本的中)

2025年合計
1117戦347勝
勝率:31.1% 回収率:62.3%
(万馬券:3本的中)

2024年合計
1394戦381勝
勝率:27.3% 回収率:70.5%
(万馬券:12本的中)

2023年合計
1772戦537勝
勝率:30.3% 回収率:71.2%
(万馬券:11本的中)


管理人のつぶやき


(皆様のフォローをお願いします。)

脱ExcelVBA !PHP で「SPAT4自動投票 システム」を作ってみました(その1:キホンの「キ」)

もうかれこれ6年近く前のネタなんですがね…

「Excel VBAで「SPAT4自動投票システム」を作ってみました。」
という過去ネタがよく読まれておりまして。
あー…やっぱり自動投票システムほしいっすよね。

この過去ネタ、
ExcelVBAをつかって、しかもInternetExplorerを使うっていう
今ではありえないようなアプリケーション構成。

今、管理人の自宅ではこれを派生させて
VB.netで作って、Chromeブラウザで動かしていますが…

もうちょっと手軽に使えないもんかなぁ…ということで
25年近くPHPというプログラム言語を使い続けているPHP信者の管理人が
PHPのWebDriverを使って、Windowsでデフォルトのブラウザ「Edge」を使うように
新たに作り直しました。

皆さまのご参考になれば。

---

今回も最初に書いておきます。

・このプログラムで何か問題が起きても、管理人は責任を負いません。
 馬券購入についても当然ですが各個人の責任です。ごちゃごちゃ文句言わないでください。

・ある程度のプログラミングとかの知識がある方を前提にしています。
 プログラムの内容についての質問等にはあまり答える気はありません。
 わからないことがあれば、個人でググって調べてください。

・自由に改変とかしてください。これで商売されるのも勝手にやってください。
 ただ管理人は何の責任もとりません。
 何かで紹介するなら『「The Sunday Breeze」のやつを参考にした』程度でも
 ひとこと書いてもらえると嬉しいです。強制ではないです。

今回追加

・予想のロジックは自分で考えてください。
 それこそ管理人は知らんがな。

・以下ソースを書いていきますが、シングルクオーテーション(’)と円マーク(¥)については
 すべて全角にしてますんで…半角に置換してから書いてくださいね。
---

●プログラムを動かす前の前提条件

・PHPが動く環境であること
わからなければこのへんを参考にどうぞ。「6」まででOK。
ここはそんなに障壁にはならないはず。

・composerのインストール、composerを使ってphp-webdriver/webdriverがインストールされていること
ここに書いてある「4」と「5」だけでOK。
(StandAloneのSeleniumは不要)
環境によってはコマンドが違うけど…それは自分で調べてよ。


●基本動作まで(WebDriverのバージョン確認とブラウザ起動まで)

・おまじない(何も考えずに書いておけってこと)
require_once(’vendor/autoload.php’); // 環境によってパスが変わる

use Facebook¥WebDriver¥Chrome¥ChromeOptions;
use Facebook¥WebDriver¥Remote¥DesiredCapabilities;
use Facebook¥WebDriver¥Remote¥RemoteWebDriver;
use Facebook¥WebDriver¥Remote¥RemoteTargetLocator;
use Facebook¥WebDriver¥WebDriverBy;
use Facebook¥WebDriver¥WebDriverSelect;


・EdgeのWebDriverのバージョンを確認
shell_execで実際にドライバをたたいてバージョンを見るっていう原始的な方法。
// $edgeDriverPath にmsedgedriver.exeのパスを指定
$edgeDriverPath = ’C:¥tako¥¥ika¥msedgedriver.exe’;  // 環境によってパスが変わる
$driverDirectory = dirname($edgeDriverPath); // あとで使う

$output = @shell_exec($edgeDriverPath . ’ --version’);
if (@preg_match(’/(¥d¥+.¥d¥+.¥d¥+.¥d¥+)/’, $output, $matches)) {
	$version_driver = $matches[1];
} else {
	$version_driver = null;
}
echo "Driver Version : $version_driver¥n";


・Edgeブラウザのバージョンを確認
こちらはレジストリからバージョンを確認。
$output = shell_exec("reg query ¥"HKEY_CURRENT_USER¥Software¥MicrosoftEdge¥BLBeacon¥" /v version");
if (preg_match(’/(¥d¥+.¥d¥+.¥d¥+.¥d¥+)/’, $output, $matches)) {
	$version_browser = $matches[1];
} else {
	$version_browser = null;
}
echo "Browser Version : $version_browser¥n";


・ブラウザのバージョンとWebDriverのバージョンが違うなら最新版のWebDriverをダウンロード
Zipをダウンロードして解凍して配置するってのはPowerShellをたたく
if ($version_driver != $version_browser) {
	echo "Update WebDriver...¥n";

	// PowerShellでブラウザと同じバージョンのWebDriverをダウンロードして解凍する
	$updateCommand = "powershell -Command ¥"Invoke-WebRequest -Uri ’https://msedgedriver.microsoft.com/".$version_browser."/edgedriver_win64.zip’ -OutFile ’edgedriver.zip’; " .
	                 "Expand-Archive -Path ’edgedriver.zip’ -DestinationPath ’$driverDirectory’ -Force; " .
	                 "Remove-Item ’edgedriver.zip’¥"";
	exec($updateCommand, $output, $rtn);

	if ($rtn !== 0) {
	    die("Failed Update WebDriver. ".$rtn);
	}
	echo "Succeeded Update WebDriver.¥n";
}

この時点で、インストールされているEdgeブラウザとPHPのWebDriverまでが準備完了。

・WebDriverを起動する
これもかなり原始的な方法。Seleniumを使わないなら(たぶん)これしか方法がない。
別でコマンドプロンプトから起動してもいいけどね。
pclose(popen("start /B ".$edgeDriverPath." --port=9515", ’r’));


・とりあえずPHPから制御できるEdgeブラウザを立ち上げてみますか
$options = new ChromeOptions();
$options->setBinary(’C:¥Program Files (x86)¥Microsoft¥Edge¥Application¥msedge.exe’); // Edgeブラウザ本体のパス
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
$capabilities->setBrowserName(’MicrosoftEdge’);
$capabilities->setPlatform(’WINDOWS’);

$driver = RemoteWebDriver::create(’http://localhost:9515’, $capabilities);


この時点でブラウザが立ち上がらないようなら…ググってください。
ちゃんと環境が整っていれば、ブラウザが勝手に立ち上がっているはずです。

---

●メインの処理(SPAT4サイトを開いて、コマンドごとに振り分ける)

基本的には過去ExcelVBAとIEでやってたことと変わりません。

この時は投票のみでしたが、
現在は「入金」「投票」「照会」をできるようにしてます。

なのでこのプログラムを動かすときの引数として
// ****************************************
//  SPAT4自動投票スクリプト
// ****************************************
// 引数
//  [1] コマンド(depo,vote,inquiryのどれか)
//  [2] 加入者番号
//  [3] 利用者ID
//  [4] 暗証番号
//  [5] 入金額(depoのとき)
//      投票内容が書かれたファイルのフルパス(voteのとき)
//      日付YYYYMMDD(inquiryで過去分を取得するとき)

$command  = $argv[1];
$userName = $argv[2];
$userId   = $argv[3];
$userPass = $argv[4];

ってな感じで。
$argv[5]はあとで出てきます。

・「SPAT4」サイトを開いてログインする
そんなに難しいことではありません。詳しくは過去ネタを見てください。
// SPAT4のログイン画面を開く
$driver->get(’https://www.spat4.jp/keiba/pc’);

// ログイン
$driver->findElement(WebDriverBy::id(’MEMBERNUMR’))->sendKeys($userName);
$driver->findElement(WebDriverBy::id(’MEMBERIDR’))->sendKeys($userId);
$driver->findElement(WebDriverBy::name(’LOGIN’))->submit();

// ログイン後にときどき出てくるポップアップ
// 出てきた時に「閉じる」ボタンを押す
if ($closebutton === $driver->findElement(WebDriverBy::xpath("//input[@value='閉じる']"))) $closebutton->click();

VBで書いてた
Driver.Get("https://www.spat4.jp/keiba/pc")

Driver.FindElementById("MEMBERNUMR").ExecuteScript("document.getElementById(’MEMBERNUMR’).value=’" + strUserNo + "’")
Driver.FindElementById("MEMBERIDR").ExecuteScript("document.getElementById(’MEMBERIDR’).value=’" + strUserId + "’")
Driver.FindElementByName("LOGIN").Submit()

と同じ。ちょっと書き方が変わっただけ。

これでSPAT4にログインして、メイン画面が出てきたはず。

・「入金」「投票」「照会」で処理を振り分ける
ここで紹介するほどのことでもないですけど…
switch($command) {
	case "depo":	// 入金のとき
		go_deposit($userPass, $argv[5]); // $argv[5]は入金額
		break;
	case "vote":	// 投票のとき
		go_vote($userPass, $argv[5]); // $argv[5]は投票内容が書かれたファイルのフルパス
		break;
	case "inquiry":	// 照会のとき
		// 引数がなければ当日結果照会
		if ($argv[5]=="") $argv[5]=date("Ymd");
		go_inquiry($argv[5]); // $argv[5]は日付YYYYMMDD
		break;
	default:		// 上記以外のとき…何もしない
		break;
}

// ブラウザとWebDriverを閉じる
$driver->quit();
exit;

メインの処理は以上。各処理は関数にしてます。

各処理の関数は明日以降ちょっとずつ書いていきます。

人気ブログランキングへ 


このネタへのコメント:


コメントはありません。
お名前(入力必須):
ログインID(SBメンバーズの方)(任意):
(SBメンバーズの方から頂いたコメントは、管理人の承認なしで書き込まれます。)

タグは使えません。

URL(任意):
メール(任意):

右に「さんでーぶりーず」と入力してください。