BeikeSchedule ベイク課表 — USTB 時間割アプリ

概要

BeikeSchedule(ベイク課表)は北京科技大学(USTB)の時間割アプリです。内蔵 WebView で教務システムにログインして時間割をワンタップでインポートし、週表示で確認、授業前のリマインダーにも対応。リリース APK を公開しており、上書きインストールで更新できます。

Kotlin Compose Room AlarmManager

主な機能

  • ワンタップインポート:WebView で統一認証を完了(アプリは学籍番号・パスワードに触れない)、学期時間割の JSON を自動取得し、プレビュー確認後に保存
  • 公式教学週カレンダー:インポート時に学事カレンダーを同期し、教学週 ↔ 日付を正確にマッピング。国庆節などの長期休暇は教学週番号を消費せず、休暇中は休暇後の最初の教学週へ自動配置
  • 週表示:「大節」単位のレイアウト、スワイプで週移動、週番号のドロップダウンジャンプ、隔週表示、固定時刻のない科目の独立リスト、場所の建物名 / 部屋番号の 2 行表示
  • 科目管理:手動での追加・編集・削除が可能で、インポートデータと共存
  • 授業リマインダー:各コマの N 分前にシステム通知(デフォルト 15 分、調整可能)。正確なアラームに対応し、再起動後も自動で再スケジュール
  • 現在週の検出:プロセスkill後の再起動でも正しく現在の教学週を特定。ダークモード 3 モード切り替え

技術ポイント

  • Kotlin + Jetpack Compose(Material 3)、Room(科目 / 時限)+ DataStore(学期設定 / カレンダー / リマインダー)
  • 教務アダプター層:WebView に JS を注入してログインセッションを再利用し、教務の構造化 JSON API(32 ビットの週ビットマップ、カレンダー一括マッピング)を直接呼び出し。HTML パースは不要
  • パーサーと週ロジックは実 API サンプルをフィクスチャとした単体テストでカバー

プライバシー:学籍番号とパスワードはシステム WebView 内で本人が大学の認証ページに入力するだけで、アプリは読み取り・保存・送信しません。時間割データも端末内にのみ保存されます。

{% btn , ソースコード, fab fa-github %} {% btn , APK をダウンロード, fas fa-download %}