Monoxer Intern Report #5_コンテンツライブラリの機能追加(fukaishi)

自己紹介

モノグサでソフトウェアエンジニアとしてインターンをさせていただいていた深石です。現在は東京工業大学の学部4年で、数理論理学やプログラム検証の理論を研究しています。

参加を決めた理由

AtCoder Jobsというサイトでインターンを探していたところモノグサを発見し応募させていただきました。応募の決め手となったのは、科学的手法を用いて記憶を楽しく効率よくしようとするプロダクトに興味を持ったことと、ScalaやTypeScriptを用いたモダンな開発ができることに魅力を感じたことでした。

主に取り組んだこと

インターンでは主にコンテンツライブラリの機能の追加に取り組みました。具体的にはショートカット機能とフォルダの複製機能を作成しました。

ショートカット機能

ショートカット機能はwindowsでの「ショートカット」やLinuxでの「シンボリックリンク」をコンテンツライブラリで再現する機能です。
この機能が存在する前は一つの教材は一つの場所にしか配置できなかったため、スクール間で教材を共有するということができませんでした。

例えば、上図のようにフォルダが存在している場合、組織Aの共有フォルダにある教材はSchool1,2の管理者からは権限的に見れません。School1,2の共有フォルダに配置した場合も他方のスクールからは見れなくなってしまいます。

これを解決できるのがショートカット機能です。先程のような場合では上図のように組織Aの共有フォルダに教材の本体を配置し、各スクールのフォルダにそのショートカットを配置することができます。こうすることで、各スクールの管理者はショートカットを通して教材にアクセスできるようになります。

フォルダの複製機能

フォルダの複製機能は、定期テストごとに使われるディレクトリ構造を複製したいといった学習支援アプリケーションならではの需要で誕生したものです。

例えば、ある塾で中間テストを行う際に、上図のようなディレクトリ構造を作成することが考えられます。今までのMonoxerでは、期末テスト用に同じディレクトリ構造を再現するために、一つひとつのフォルダを手作業で複製する必要がありました。これを自動で行えるようにしたのがフォルダの複製機能です。

この機能では上図のようにディレクトリの一番根元にあるフォルダの名前だけを変更して、残りのフォルダが同名になるような構造を作ることができます。

学び

私はチーム開発の経験がなかったためGitやGitHubの扱いに苦戦してしまいました。しかしモノグサではそれらの知見が共有されており、メンターさんからの支援もあって徐々に慣れることができました。

また、バックエンドの技術についても学びを得ることができました。ScalaにはSlickというライブラリがあり、データベースへのクエリをオブジェクトとして扱うことができます。これによって、SQLを書くことなくScalaらしいコードでデータベースを扱うことができます。しかし、データベースアクセスを高速化するためには、SlickのコードがどのようなSQLのコードにコンパイルされるかなども考えなければいけないのだなということを実感しました。

感想

私は一人で簡単なプログラムを書いたことはありましたが、業務での開発の経験はありませんでしたので、リリースできるようなコードが書けるか心配でした。しかし、メンターさんや開発チームの方々が詳細にコードレビューしてくださり、無事課題を終えることができました。
また、デザイナーの方にも相談に乗っていただいた上に、ビジネスのチームの方からもお客様の持っている使用感などの意見をいただけたのがとても心強かったです。モノグサは部署間で密に連携が取れていて素敵なチームだと感じました。

最後に

モノグサのインターンを通して非常に多くのことを学ばせていただきました。1ヶ月半の間お世話になりました。