スバラシの試作版と正式版の違い
試作版
フロントエンド
使用言語: TypeScript
使用ライブラリ: React、Fuse.js
バックエンド
使用言語: TypeScript
使用ライブラリ・フレームワーク: Fastify、Mongoose
使用DBMS: MongoDB
設計: FastifyおよびMongooseに依存したアーキテクチャ
構成: アプリケーションサーバ1台以上と管理用サーバ1台で稼働する。管理用サーバは定期的にシラバスの情報を取得し、アプリケーションサーバが参照するデータベースを更新する。
正式版
フロントエンド
使用言語: TypeScript
使用ライブラリ: React、Fuse.js、TanStack Query
バックエンド
使用言語: TypeScript
使用ライブラリ・フレームワーク: Fastify、Kysely
使用DBMS: PostgreSQL
設計: Clean Architecture的なアーキテクチャ。
RepositoryおよびEntityのインターフェースを用意し、依存するライブラリごとにそれらのインターフェースを実装したクラスを用意する。
ビジネスロジックはRepositoryから取り出したEntity同士の操作によって表現する(Interactor)。
HTTP APIなどの外部からの入力は、フレームワークによって規定されたライフサイクルを経過した後、コントローラによってInteractorに入力・結果を受け取り、再びフレームワークによって規定されたライフサイクルを経て出力される。
構成: アプリケーションサーバのみ。スバラシが参照するデータベースの更新は、アプリケーションサーバのHTTP APIを通して行う。シラバスの情報を取得するためのプログラムは運用者が用意し、アプリケーションサーバにアクセスできる場所で実行する必要がある。
スバラシの試作版を捨てて正式版をゼロから開発している理由
当初試作版はスバラシのシラバス検索機能を実装できた段階で、2022年度秋学期中にリリースすることを目指していた。
12月にはフロントエンド、バックエンドともにある程度完成していたため、公開可能な状態ではあった。
本番環境で動かしている時期もあった。
しかし運用に影響を及ぼす可能性のある技術的な課題があったため、公開を見送った。
管理用サーバとアプリケーションサーバが密結合であり、運用に支障が生じる可能性があった。
2023年3月から設計を改善した正式版の開発を開始した。
スバラシの掲示板機能、スバラシのシラバス検索機能、スバラシの場所・教室検索機能を段階的にリリースすることを目指す。
ソースコードを公開することを前提に設計している。
大学特有の制度をハードコードしないことで、他大学でも利用できるようにすることを目指す。