花も実もある楽しい読書

人生とテニスに役立つ本

『スッキリわかるPython入門』を読んで、テニスレッスンの空き状況お知らせプログラムを自作してみる

このブログでは、素人が本を一冊読んでPythonの基本を理解し、WEBから丸写し可能な写経コードを拾い集め、レッスン予約の空き状況をLINEに通知するコードを組めるようになるまでをまとめています。

通っているテニススクールで週末レッスンの予約をしたいのですが、めったに空きがなく、WEB確認も手間なので、省力化したいと考えていました。

プログラミングに触れたことはありませんでしたが、本は好きだし、読んでコードがかけるようになったらいいなあと、購入したのがこちらの本です。

用語知識も皆無の初心者でも、下記の基本を一通り分かるようになりました。会話形式で理解しやすく、各章末の練習問題で、ちゃんと覚えたかどうかも確認できます。

  • Pythonのインストール
  • 式と演算の仕組み
  • 変数の使い方
  • プログラムの文と構造
  • 関数やモジュールの利用方法
  • エラーとの上手な付き合い方

最終章の練習問題は難しすぎてスキップ。それでも、作ってみたいプログラムの情報をネットで探し、写経して失敗して学ぶ、という方法で、どうにか簡単なプログラムが書けるようになりました!

まず、うちのMacで朝一にテニススクールのレッスン空き状況を通知するために必要なステップは下記の通りでした。

  1. 毎朝一定時間にMacを起動する。
  2. Chromeを立ち上げる。
  3. レッスン予約サイトに行く。
  4. 「再ログイン」をクリックする。
  5. 「パスワード」と「会員ID」を入れて「ログイン」をクリックする。
  6. 「振替予約」をクリックする。次に希望日程を選んでクリックする。
  7. 空き状況の文字情報およびページのスクリーンをキャプチャする。
  8. 情報を自分のLINEに通知する。

このような一連の流れをどのように実現するか、下記のページでわかりやすく概要を説明してくださっています。

parallelcareerlab.com

さらに、特に7-8の実装に大変参考になる、参照したいWEBページの情報をLINEに通知するための写経用コードもまとめてくださっています。

parallelcareerlab.com

まずはこのサイトを参考に、段階を踏んでトライ&エラー、すなわち写経してはErrorにぶち当たって試行錯誤しながら修正する形で前進していきました。

①LINE通知プログラムを動かす

まずはここまでを始めてみるのが一番とっつきやすいと思います。上記サイトの写経用コードと説明をそのまま参考にできます。LINE Notifyのアクセストークン発行方法だけ分からなかったので、下記を参考にさせていただきました。自分のトークンを写経用コードの'(発行されたトークンを設定)'という箇所にコピペし、無事「Hello World」を自分のLINEに通知することができました。

www.itd-blog.jp

②サイトアクセス結果をLINEに自動送付するプログラムを動かす

次の段階が、Yahoo天気にアクセスし、指定エリアの予報ページのキャプチャ画面、予報と概況の文字情報を通知するための写経用プログラム。そのままコピペし、動くかどうかやってみました。

動きませんでした(笑)。

Errorがどこなのかを試行錯誤しながら探し求める、色々試しながら直していく作業が、大変いい勉強になりました。

個々のPC環境によってErrorになる理由は違うと思うのですが、私の場合は下記の2つだったようです。

  1. 最初に定義した関数が check_today_weather であるのに、最後の実行プログラムの関数名が check_today_weather_only_text であったこと。
  2. geckodriverというものが入っていなかったこと。

1番目はError表示を見てプログラムを見返して修正しました。

2番目はError表示を見ても意味がさっぱり分からなかったですが、Error表示全体をググってトラブルシューティングのサイトに行って学び、対応できました。

写経コードは、外部ライブラリのインストールからコード化してくれている場合もあれば、そこは前提としてある場合もあります。モジュールやライブラリらしき名称が定義されていないというErrorが出てきたら、どんどんググってインストールしていきましょう。

何とか軌道修正して、お手本のプログラム通りに動くと、それだけで感慨深いですね(笑)。

③テニススクールの予約サイトに自動ログインしてみる

Yahoo天気はログイン不要なWEBページだったので、次はいよいよ、自分のテニススクールの予約サイトへの自動ログインに挑戦です。こちらのサイトを参考にさせていただきました。

techacademy.jp

WEBページ内にあるログインボタンの要素、elementをどう指定するかさっぱり分からなかったので、下記を参照させていただき、xpathとやらの見つけ方を理解しました。

teratail.com

④各プログラムを組み合わせて自動ログイン〜自動送付までのプログラム化してみる

②の段階でBeautiful Soupという外部ライブラリを使っていますが、写経しただけで全く応用できなかったので、こちらを参考に、キャプチャしたいWEBページから、何の情報をどう取り込むのかを勉強させてもらいました。

ai-inter1.com

Pythonのボタンをポチっと押す。勝手にChromeが立ち上がり、ログインし、ページを順に進み、Chromeが閉じ、LINEに通知が来る。ここまで成功したときは達成感がすごかったですね。。

⑤毎朝自動でプログラムを動かす

私はMacを使っていますが、スリープ中は当然プログラムは走りません。プログラムをサーバーに乗せるなどの方法があるようですが素人には難しい。

単純な解決法として、Macを決まった時間に起動させることにしました。システム環境設定>省エネルギー>スケジュールから設定できます。

一番最初に参考にさせていただいた写経コードは、特定の日時に一度だけ実行するプログラムでしたので、下記から毎日同じ時間に定期実行するコードを参考にさせてもらいました。

di-acc2.com

これらを組み合わせて、テニススクールの空き状況を、毎朝調べてLINEでお知らせするプログラムが完成しました!

次は空いてたら予約までしてくれるプログラムの作成を目指して、また勉強したいと思います。