はじめに
開発未経験の私が大学の学習管理サイトのwebclassの更新を調べるツール開発を作るという話です。書き始めたら長文になったので、記事分けました。今回の話はプログラムの話はほとんどないです。適宜読み飛ばしてください。
拙い文章ですが、少しでも同じこと考えてる方の参考になれば嬉しいです。私の勘違い等があるかもしれないので参考程度にお願いします。
開発経緯
私は学部生なのですが、大学がレポート提出やアンケートに使用しているWebClassという学習管理環境がなんとも使いにくく、課題が追加されたのかも分からない、未提出の課題のお知らせ機能もないということで、高校でGoogleのClassroomを使っていた身としては何ともWebClassは使い勝手が悪いのです。
個人的に感じるWebClassのマイナスポイントをまとめるとこんな感じです。
- 通知機能がない
基本ブラウザベースなので、締切通知とか課題の追加通知とかはなんも来ません。
なぜかレポート提出をしたときだけ、メールで提出したファイルのファイル名だけを知らせるという謎仕様。
- ログインが面倒
大学側設定している統合認証とか言うフォームからログインした後、全く同じIDでWebClassのフォームからログインする2度手間。シングルサインオン1なら一回のログインでいい感じにWebClassに入れればいいのに。。
付け加えるとWebClassは同時に別端末でログインすると、セッション切れになる。(なんだこの仕様。見たことない。)
ブラウザにパスワード保存すれば少しはマシになるが、iPhoneのパスワード保存はFaceID必須で面倒。
- ファイルが常にダウンロードされる
結構だるいポイント。課題に添付されたPDFを閲覧しようとするにはダウンロードしなくてはならない。ブラウザの新規タブでいいからシームレスな表示をしてくれ。(この辺は他大学であるがシームレスな表示をWebClassで標準化するChromeの拡張機能を提供している方がいた。)
👇仕組み
👇シームレスな表示の拡張機能
- UIが古臭い
これは超個人的意見だが、UIが好みではない。そもそもスマホでの仕様がメインに考えられていないデザインであるし、デザインが今風ではない。
口が悪く全然まとまっていないが、本当は書ききれないほどもっと言いたいマイナスポイントがあります。全ては今風のUIでスマホアプリにして通知機能があれば解決しそうな話だが... ちなみにGoogleの Classroomは動作が重いがUIと使い勝手が良い。あれでサクサク動けば最高だと思っています。
開発内容の決定
そんなこんなの欠点を解消できるようなツールが作りたくなりました。GPT-4に既存のWebサイトをベースにそこから情報を取得して通知したい的なことを伝えたところ、Webスクレイピングをしたらどうかという提案をしてくれました。何“Webスクレイピング”状態だったが、どうやらWebページのデータを収集して扱いやすいデータ形式にすることらしい。
相性が良さそうな言葉である。そこで”LMS スクレイピング“(LMSとはLearning Management Systemの略でWebClassみたいな学習管理システムを指す言葉)でリサーチすると何件か似たようなことを思って何らかのツールを作成している方が既にいらっしゃいました。これはかなり参考になりそうです。
調べた感じだと一般的にスクレイピングはデータ解析が得意なPythonで行っている方が多そうなイメージだったの今回はPythonで機能を開発してみることにしました。
スクレイピングについて勉強するとポジティブなものばかりではないようなので、注意深く勉強しました。
ちょっと雑談
本音を話すとできれば最終的にスマホのネイティブアプリにしたかったので、iOSアプリとAndroidアプリを同時進行で制作できるFlutter (言語でいえばDart)で開発したかったが、やはり最初はネット上のスクレイピングに関する資料の数を踏まえてFlutterは一旦断念しました。(C言語に近しく流行っていそうなので、近々やりたい。)
もしFlutterでiOSアプリを作ってもAppstoreに出すには手数料$99/1yearがかかるので、ちょっとハードルが高い...
App Storeを見ると他の大学でも、個人で学内ポータルへのログイン機能や通知機能実装した非公式アプリをリリースされている方がいるが、手数料払っているってことですよね。すご。
開発内容
pythonでWebClassの更新を知らせるツールの作成(スクレイピングの使用)
開発環境構築
Pythonと、コード全部ベタ打ちは嫌なので、Visual Studio Code をまずインストールしました。
ちなみにPythonは公式配布版とAnaconda版があるが、記事数的に公式配布版を選択しました。VS Codeは日本語設定とPythonの開発環境設定をしました。Pythonスクレイピングで調べれば、スクレイピングライブラリのSelenium+Web driverの記事が溢れているので、最初は全然困らないです。
Web driverは各ブラウザにありそうだったが、人口が多そうなChrome driverにしました。
ここら辺のPython環境構築は記事が溢れているので省略...
次記事に続きます。