人気ゴルフ場のシミュレーション枠、予約開始時間にパソコンの前に張り付くのって大変ですよね。
「寝ている間に勝手に予約してくれたら…」
「外出先からiPhone一タップでキャンセルできたら…」
そんな願いを、押し入れに眠っていた**Raspberry Pi(ラズパイ)と最新AI(Gemini)**の力を借りて実現しました!今回はその構築記をお届けします。
今回構築したシステムの全体像
今回作ったのは、単なる自動実行スクリプトではありません。**「どこからでも操作できる専用サーバー」**です。
Raspberry Pi: 24時間つけっぱなしの親機(電気代は月数百円!)。
Selenium: ブラウザを自動操作して予約サイトをポチポチする技術。
Flask: iPhoneからの命令を受け取るための窓口。
Tailscale: 外出先(4G/5G)から自宅のラズパイに安全に繋ぐ魔法のVPN。
cron: 毎朝6時ぴったりに予約を実行する自動タイマー。
苦労したポイント:Windowsからラズパイへの「移植」
最初はWindows PCで作っていたのですが、ラズパイ(Linux)へ持っていく際にいくつかハマりポイントがありました。
ドライバの書き方: Windowsでは自動インストールが効きますが、ラズパイでは /usr/bin/chromedriver を直接指定する必要がありました。
Seleniumのバージョン: 古いラズパイOS(Busterなど)では、最新の書き方(service=)ではなく、一世代前の書き方(executable_path=)にするのが安定のコツです。
ヘッドレスモード: ラズパイには画面がない(または重い)ので、ブラウザを表示させない –headless 設定が必須です。
実際のコード(エッセンス)
サーバー側(Flask)では、以下のようにiPhoneからのアクション(URLの末尾)によって動かすスクリプトを切り替えています。
Python
@app.route(‘/
def trigger_action(action):
# reserveなら予約、cancelならキャンセルを実行
file_name = ‘script.py’ if action == ‘reserve’ else ‘cancel.py’
# …中略…
subprocess.Popen([sys.executable, file_path])
return jsonify({“status”: “Accepted”})
これをラズパイの rc.local に登録して、電源を入れるだけで自動起動するようにしました。
iPhoneから1タップで予約・キャンセル
iOSの「ショートカット」アプリを使い、ラズパイのIPアドレスを叩くボタンをホーム画面に作りました。
予約ボタン: http://(ラズパイのIP):5000/reserve
キャンセルボタン: http://(ラズパイのIP):5000/cancel
これで、布団の中からでも、仕事の休憩中でも、1タップでラズパイが裏側でブラウザを立ち上げ、予約サイトを操作してくれます。
自動化してみた感想
一番のメリットは**「心の余裕」**です。
毎朝6時に起きるプレッシャーから解放され、もし予定が変わってもスマホから一瞬でキャンセル指示が出せる。
「古い機材」と「最新のAI」を組み合わせるだけで、これほど生活が便利になるのかと感動しました。
次は、予約結果をLINEで通知したり、AIにもっと複雑な枠取りを判断させたりと、さらにパワーアップさせていく予定です!
結び
もし「自分もやってみたい!」という方がいれば、ぜひコメントください。
AI(GeminiやChatGPT)を相棒にすれば、プログラミング初心者でもここまで作れますよ!
