技術

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のリアクティブな性質を最大限に活用したサービス指向アーキテクチャを採用しています。

コアアーキテクチャ図
図1: システムコンポーネントの相互作用
  • 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