Monoxer Intern Report #20_外部成績分析機能の機能拡張


自己紹介

初めまして。モノグサのソフトウェアエンジニアインターンに参加させていただいた片岡です。普段は東京科学大学(旧東京工業大学)で数理科学や計算機科学を専攻しています。

参加を決めた理由

AtCoder のモノグサプログラミングコンテストを通してモノグサを知り、教育 × IT の分野に取り組んでいるということで興味を持っていました。AtCoderJobs でインターンの募集を見つけ、実際のプロダクト開発を経験することで自身の成長に繋げたいという思いもあり、応募を決めました。

取り組んだこと

Monoxer はユーザ向けのスマホアプリや管理者向けの Web アプリから成りますが、私は主に Web アプリの開発に携わらせていただきました。

メインタスクの背景

管理者向けの Web アプリには、β版として一部の顧客に利用可能である、外部成績分析という機能があります。この機能は、外部試験等の成績データを入力すると、Monoxer に蓄積されたユーザの学習データと併せて比較分析を行うことができるものです。たとえば「英語の試験の成績と英単語帳の記憶度との間に相関があるか?」といったことを一目で確認できます。

メインタスク

この外部成績分析機能には、ユーザの学習データを選択する際の操作性に改善の余地がありました。というのも、以前の学習データ取り込み分析機能では、以下の手順で操作をする必要がありました。

 

  1. 分析対象としたい Book とクラスを選び、学習データ算出のリクエストをする。
  2. 算出された学習データを選択する。
     この手順では「やっぱりこの Book / クラスは分析対象から外したい」という場合に、再度学習データ算出のリクエストを送る必要があり、柔軟な分析を行うことが難しい状況でした。そこで今回のインターンでは、以下の機能を追加し、より柔軟な分析を可能としました。
  3. 算出された学習データに含まれる Book やクラスを、分析対象から選び直せるようにする。

 

実装を振り返って

今回の機能追加にあたり、主に以下の開発作業を行いました。

 

  • フロントエンド(TypeScript / React)
    • 分析対象の Book とクラスを柔軟に再選択できる画面の実装。
    • 検索機能およびページネーション機能の実装。
    • RTK Query を用いた効率的なデータ取得処理の実装。
  • バックエンド(Scala / Play Framework)
    • 分析対象の変更を反映するための API の修正。
    • 検索やページネーションに対応するための API の追加。
    • 変更を加えた API の動作を保証するためのユニットテストの追加。

 

今回のインターンを通して、フロントエンドからバックエンドまで、幅広い技術領域に触れることができました。特に Controller 層、Service 層、DAO 層といったレイヤを意識した開発や、モックのフレームワークを用いたテストの実践が印象的でした。インターン参加前と比較して、技術的な視野が大きく広がったことを実感しています。

インターンの感想

インターンに参加するのは今回が初めてでしたが、実際のプロダクト開発に携わることができ、とても貴重な経験となりました。技術的なスキルはもちろんのこと、プロダクト開発に必要なコミュニケーション、デザイナーや営業の方々との連携など、チームでの開発に欠かせない要素を肌で感じることができ、プロダクト開発に対する理解が深まりました。このような素晴らしい機会を提供してくださったメンターさんをはじめとするモノグサの皆様に感謝申し上げます。約 1 か月半、本当にお世話になりました!

 

p.s. 飯田橋には美味しいランチのお店が多い