【Pythonネタ】オンライン英会話の人気講師の空き状況をスマホに通知するアプリ作ったら、感謝された話
どうも、暇人です
プログラミング言語で最近注目のPython(パイソン)で何か作りたくなったので、
オンライン英会話の人気講師に空きが出たらLineでスマホに通知してくれるアプリを作ってみました。
コロナで英会話ブーム?
小学生の息子がオンライン英会話を保育園の頃からやっています
日本語での会話もビミョーな園児が英語って意味あるのか?
と見ていましたが、学校の不平不満を先生に話して憂さ晴らしするほど上達!!
自分もやっておけばよかった・・・失われた5年間。
人気講師はすぐに埋まってしまう!!
当然ですが、英会話の講師にも当たりハズレがあります。
人気の講師は受付を開始すると、数分で空きが埋まってしまうほどです。
いつ空きが出るかわからない講師のスケジュールを、ずっとスマホでチェックしている
細君を見て、空きが出たら通知してくれるアプリがあれば喜ばれるのではと思い、素人ながらアプリ作ってみることにしました。
なぜPythonで作るのか?
流行りのプログラミング言語が使えるようになりたかったからです。
どんなアプリを作ったのか?
オンライン英会話のHPは、講師ごとに空き時間を示す時間割表ページがあります。
レッスンしたい日時が空いていたら、クリックして予約します。
作ったのは、レッスンを予約したい先生のスケジュールページを時々見に行って、予約できる時間が見つかったら、Lineでスマホに送るという単純なアプリです。
どんな感じで通知されるか?
お目当ての先生のスケジュールに空きが出ると、こんな感じのLineが飛んできます・・
空き情報が飛んでくるので、あとは大急ぎで講師のHPを開いてライバルよりも早くクリックするだけです。
この写真からもお分かりかと思いますが、人気の先生は1分くらいで空きがなくなってしまいます・・・みんなどんな方法で空きを見つけているのかな?
とにかくお金をかけずに構築
長期に渡って講師のHPを定期的にチェックする必要があるので、
昼夜を問わずプログラムを走らせておく必要があります。
プログラムを、自分のパソコン上でずっと走らせておくわけにもいかないので、
一年中休まず動かすサーバーコンピュータを準備して、その上でプログラムを走らせました。
サーバーにはラズパイ4を使いました
余っていたラズパイ4で、フリーソフトのApache HTTP Serverを動かし、
Apacheサーバー上で自作したPythonプログラムを動かしました。
ラズパイ上でPythonプログラムが定期的に実行されて、お目当ての講師のHPをチェックします。空きが見つかると、Line Nofityでスマホに通知します。
ラズパイは長期間、動かしっぱなしにするので、一応ファン付きのケースと電源のセットを買いました。
構造がよく考えられており、組み立てやすくて非常に満足しています。この記事を書いている今はラズパイzeroとかpicoが主流なのであまり需要ないかもしれませんが、サーバーとして使うのであれば、ラズパイ4はまだまだ現役なので、念の為リンク貼っておきますね。
Webサービスからの通知をLINEで受信
Webサービスからの通知をLINEで受信する無料のサービス、Line Notiryを使っています。
通常のラインメッセージと同じように、ピロリローンとスマホに通知が来ます。
難しかったところ
Pythonの売りは、
やりたいことを実現してくれる高機能で洗練されたモジュールが無償で使えること
だと思います。
今回のアプリのキモとなる部分は、オンライン英会話のHPのソースコードから自分に必要な情報を効率よく抽出する、BeautifulSoupと呼ばれるスクレイピングモジュールです。
実際、数行のコードでhtml内の必要な情報をスプレイピング(集める)してくれます。ただし、これまでHTMLとかxmlといったホームページのソースコード分析をしたことなかったので、htmlソースのどの部分に情報が入っているかを自力で調べるのに時間がかかりました。
1年以上運用しての感想
過去最大の感謝を細君からいただきました。
これ、売れるかな?と聞いたところ、うちの子がオンライン英会話卒業したらOKとの反応でした、・・・納得。
ラズパイの消費電力から計算すると、電気代は月あたり100円程度。
年間1200円・・・まあ、レンタルサーバーよりは安いし、何よりラズパイが生活の役に立っているのが嬉しいので良いと思いました。