自動車学校の教習を無事に終わらせた話

自動車学校の予約を自動でやってくれるシステムを作った

Page content

教習期限が12/9で切れるところ私は12/13で終わりました(ギリギリ)。3月に自動車学校に入校したが、すぐに9ヶ月経ってしまった。みんなは早めに終わらせよう! でもこのギリギリのおかげでこのシステムも出来たわけだし、いろいろ体験できるのでお勧めはしないけど、良かったと思う

辛い自動車学校の予約システム

某自動車学校のシステム

  • 2個予約できるが、2週間前でないと予約が空いていない
  • 予約がキャンセルされた時に乗れるキャンセル待ちがある
  • キャンセル待ちをwebで予約する必要がある
  • キャンセル待ちの予約が6:00から始まる

6時に起きるのが面倒くさいから作った

URL:http://anko.pgw.jp/ 自動予約システム

自動で朝6:00に設定した予約をとってくれるよ!

曜日と取りたい時間を設定してあげるだけで、あとは寝て待つだけ。朝起きたら取れているというシステム

Googleでログインして、アカウントごとに予約する設定は保存されるよ!

login 図:よくみるGoogleのログイン

  • firebaseを使って認証しているから教習所みたいにわざわざ番号を入力しなくていい!
  • アカウント新規作成みたいなことはいらない

技術的な話

初めて使った技術

  • firebase
  • docker
  • kubernetes(rancher)
  • nginx(自宅サーバーでは)

構成図

自練自動予約

スムーズポイント

  • python,seleniumは慣れていたので自動で予約する部分は簡単だった

つまずきポイント

  • コンテナとkubernetesの概念を学ばなければなにやればいいか分からない
  • firebaseのdbから取得したり書き込むことが全く分からない
  • reactのjsxは慣れてきたが、awaitとかasyncとかuseState,useEffectが多すぎてわからない

直したいところ

  • dockerとrancherのポートフォワードについて
# docker-compose.yml
services:
  rancher:
    image: rancher/rancher:latest
    container_name: rancher
    ports:
      - "8080:80"
      - "80:30080"
      - "443:30443"
      - "8443:443" # rancher
      - "25565:25565" # minecraft
      - "3000:3000" #tekitou
    environment:
      - CATTLE_DB_CATTLE_USERNAME=rancher
      - CATTLE_DB_CATTLE_PASSWORD=rancher
    restart: unless-stopped
    privileged: true
    volumes:
      - rancher-data:/var/lib/rancher  # データ永続化用ボリューム

volumes:
  rancher-data:

なんかrancherで30080のポートをNodeportのサービスで公開して、dockerでポート80にしているけど、これでいいのか感がある。

  • ingress使いたいけどうまくいってない。
  • イメージをどうやってrancherに持っていけばいいか分からず、DockerHubに公開して使ってる。
    • API使われそうで怖い
    • GitHubは公開してないけど、APIキーを取り除いて公開したい
  • 今の所URLのパスが(ホームページって言うの?)になってて、本当はhttp://anko.pgw.jp/dsrsにしたいけどどうしたらいいのかな。

分かったこと

  • firebase便利
  • 自動車学校のサーバーが弱すぎるし、脆弱すぎる。個人情報を簡単に取られそう。
  • seleniumを使うと規約によっては捕まるらしい、自練のサイトに規約があるのか分からない
    • 今回は多分不正に情報を取ってるわけでもないし、負荷もかからないようにしているため大丈夫だと思う
  • 自動車学校は交渉したらなんとかなる時もある(システムで無理なら最後は人に頼む)

謝辞

自練に送り迎えしてくれた友達と親に感謝を言いたいです。ありがとう