KPass 技術ドキュメント
KPass(ケーパス)は、K-LMSと連携して学生が授業・課題・時間割をシームレスに管理するためのiOSアプリケーションです。 ログインの安定化や多要素認証(MFA)への対応、バックグラウンドでのデータ同期など、利便性とセキュリティを重視した設計を行っています。
プロジェクト構成
KPassは、プライベートな単一リポジトリ構成で開発されており、自動的なファイルシステム同期を優先したモダンなディレクトリ構成を採用しています。
| ディレクトリ/ファイル | 目的 |
|---|---|
| KPass/ | メインアプリケーションのソースコード |
| KPassWidget/ | ウィジェット拡張のソースコード |
| KPassTests/ | ユニットテストスイート |
| KPassUITests/ | UI自動テスト |
| Pods/ | CocoaPods管理の外部依存関係 |
| syllabus_2025.sqlite | 学術コースデータベース |
ビルドターゲットと依存関係
プロジェクトは、特定の役割を持つ4つのターゲットを定義しています。iOS 17.0以上をサポートします。
| ターゲット | バンドル識別子 | 役割 |
|---|---|---|
| KPass | com.technophere.kpass | メインアプリケーション(全機能) |
| KPassWidgetExtension | com.technophere.kpass.KPassWidget | ホーム画面ウィジェット表示 |
| KPassTests | com.technophere.KPassTests | ロジック検証用ユニットテスト |
| KPassUITests | com.technophere.KPassUITests | UI操作の記録・検証テスト |
アーキテクチャ
KPassは、SwiftUIのリアクティブな性質を最大限に活用したサービス指向アーキテクチャを採用しています。
- UI層 (SwiftUI): 宣言的UIによる状態駆動の表示。
- 状態管理層 (MVVM): ViewModelsがUIに必要なデータをパブリッシュ。
- サービス層 (Services): シングルトンパターンによるビジネスロジックの集約。
- データ層 (Storage): SQLite、Keychain、UserDefaultsによる永続化。
主要機能の設計
1. 認証とセッション管理 (MFA対応)
GacadシステムとのセッションはCookieベースで管理され、Keychainにセキュアに保存されます。多要素認証(MFA)環境下でのログイン安定性を確保するための仕組みを構築しています。
2. オフライン優先 & バックグラウンド同期
SQLiteデータベースを使用してオフライン閲覧を可能にしつつ、BackgroundSyncService がバックグラウンドでのデータ更新を定期的に実行します。これにより、アプリを開いた瞬間に最新の課題情報が確認できます。
3. K-LMS リアルタイム連携
課題の締め切りやテスト日程、コース情報を自動で抽出し、ダッシュボードや通知機能を通じてユーザーにリマインドします。
4. 通知システム
リモートプッシュ(Firebase FCM)とローカル(課題リマインダー)の両方を処理。許可管理から通知駆動の画面遷移までをシームレスに行います。詳細は通知システムドキュメントを参照してください。
技術スタック
| カテゴリ | 技術 / ライブラリ |
|---|---|
| UI Framework | SwiftUI |
| Database | SQLite.swift (SQLite) |
| Backend (BaaS) | Firebase (Auth, FCM, Firestore) |
| Dynamic Content | MicroCMS |
| Dependency Management | CocoaPods, Swift Package Manager |
| Networking | URLSession |
アプリ情報 & 開発仕様
現在のApp Store公開情報および開発環境の仕様です。
| デベロッパー | YUYA ITONAGA (Technophere) |
|---|---|
| バンドル識別子 | com.technophere.kpass |
| 最小OSバージョン | iOS 17.0以上 |
| 開発言語 | Swift 5.10 |
| 著作権 | © 2025 Technophere |