NITechSearch:名工大の講義室使用状況検索アプリ
はじめに
このページでは、2024年8月~9月に制作を行い、同年10月に学内向けにGoogle Playにてリリースした「NITechSearch:名工大の講義室使用状況検索アプリ」の紹介を行います。
制作したアプリについて
内容


事前に数日分の講義室の予約状況を大学のサーバーから取得して端末内に保存し、現在空室になっている講義室と建物別の空室の数を(現在の予約状況が保存されている限り)ログインなどの追加操作を挟まずにリアルタイムで確認できるアプリを制作しました。
また、今日の講義室の予約状況と使用時間を部屋別に確認することもできます。
動機
筆者は以前から「学内システムの情報を使って何かできないかなあ…?」と考えていました. ちょうどその時、SNSで弊学学生による以下のような投稿を見かけました. なお、以下の文章は原文から一部改変したものとなります.
今どの教室があいてるかリアルタイムで知ることができたらなあ…?
この投稿からアイデアをもらい、前述したようなアプリを制作しました.
制作過程について
筆者はUIをある程度まで問題なく完成させることができました。 しかし、ここでこのアプリを制作する過程で避けられない最大の問題が浮上しました。 それは、
「どのようにして空室状況を取得するのか」
という問題です. 今空いている講義室を判定するためには少なくとも現在の講義室の予約情報を手に入れなければなりません. しかし、講義室の予約情報を取得するAPIは(筆者の知る限りでは)存在しません. そこで筆者は予約情報の確認ができる学内システムのページからスクレイピングで強引に講義室の予約情報を取得しようと試みました。
スクレイピングを行うにあたって、ここでもう一つの問題が浮上します。 それは「どのようにしてアプリから学内システムの認証を行うか」という問題です。 適切な認証なしでアクセスしようとするとログイン画面へリダイレクトされてしまいます。 この問題を解決するために、認証~学内システムへのログインまでの通信を調べ認証方法に関しての検証を行いました。
検証によって得られたログインまでの詳細を以下の図に示します。 (括弧内のダブルクォーテーションで囲まれた文字列はそれらのメッセージ内での名称を表しています)
これらを踏まえて、RetrofitとJsoupを用いて認証とHTMLの解析を実装しました。
前述したものをすべて実装した後、学内システムにアクセスするための認証情報をユーザーに要求するログイン画面、Tinkを用いて保存時に認証情報を暗号化する機能、Roomを用いて取得した予約情報を内部のDBに保存する機能を実装して、最終的に講義室の予約情報を取得する処理は以下のフローチャートのようになりました。
さいごに
最後にAndroidアプリを作ってから期間が大きく空いていたため、制作前に現在広く使われるライブラリや実装についての学習を行いました。これらの過程のおかげでブランクを埋められただけではなく、学習後に以前の成果物のコードを見直すことにより 肥大化したMainActivity など、高校生の時に書いたコードの問題点を実感することができました。
UIデザインに関しても、Material Design 3を取り入れたり、学内でよく使われている青色を基調としたデザインを採用するなど、以前のアプリ よりもさらに配慮ができたと感じています。
さらに、アプリをリリース後、Android Vitalsを活用してユーザーの端末で発生したクラッシュの原因を分析することで、実務に近い経験を積むことができました。
今後はここからさらに開発を進め、以前のコードを見直すことにより得られた反省点や実務に従事されている先輩から貰ったアドバイスをもとにして自分自身の技術力をさらに向上させていきたいと思います。