Monoxer Intern Report #10_音声読み上げに関する機能追加

自己紹介

こんにちは、モノグサ株式会社でソフトウェアエンジニアのインターンとして働いていた大森です。この大森さんとは別の大森です。 現在は東京大学大学院でコード並列化の研究をおこなっています。 モノグサでは通年インターンとして昨年の10月ごろから勤務していてちょうど1年になります。 この記事ではインターン中に取り組んだ課題やモノグサでの働き方について紹介したいと思います。

参加を決めた理由

長期的にWeb開発ができるインターンを探しているなかで、学部生のころにしていたAtCoderで求人のサービスをしていることを思い出し、見てみたところモノグサを発見し応募させていただきました。

応募の決め手となったのは紹介文の中でのプロダクト開発の色が強く、僕のやりたいことに合致したこと、また「記憶」という曖昧な領域にアプローチをしていることに興味が惹かれたことなどでした。

取り組んだこと

当初はフロントをやるつもりで応募しましたが、気が付いたらサーバーから管理画面、アプリまで様々な経験をさせていただきました。今回はその中からBook学習時のペアエントリに対して音声情報を付与できるようにした機能追加に関して紹介したいと思います。

Monoxerでは覚えたいことや問題のリストをBookという単位で管理していて、そのなかでも今回は一番多く使われている機能であるペアエントリに対して機能追加を行いました。ペアエントリというのは単語カードのようなものをイメージしていただけると理解しやすいかと思います。

例えば(Hello, こんにちは)のようなペアエントリが存在していたりします。

このペアエントリを学習する際に学習への紐付けとして、主に英語を対象に、音声の読み上げは端末標準で組み込まれている音声読み上げを用いてなされるのですが、一部ペアエントリに対しては正常に読み上げがなされない問題がありました。

例えば「read」という単語は原型と過去形の間でスペル的な変化はありませんが、読み方が異なる単語として知られています。しかしながら端末標準の音声読み上げではこの違いは考慮されません。 また、発音自体を自前で用意した音源を利用したいという声もあり、今回の機能追加につながりました。

読み上げ音声を設定したペアエントリの例

今回は問題の作成から配信、解答まで一通り実装しました。 具体的には

  • 下書きエントリ並びに本エントリのDBテーブルの仕様策定

  • バックエンドの実装

  • Web GUIの実装

  • CSVファイル経由問題作成機能の実装

  • アプリの実装

に取り組ませていただきました。

機能全体を開発するのは初めての経験で、どのレイヤにおいて何が考慮されるべきなのか、されないべきなのかを考えてコードを書くのは大変でしたが、学べることが多かったように思います。

開発のなかで印象的だったことは、Monoxerは多種多様なスペックの端末から使われているため、アプリ開発においてしっかりとパフォーマンスが重視されていたことでした。具体的にはオブジェクトを初期化するタイミングやインスタンスを無闇に生成しないことといったことをレビューで指摘いただいたのは新鮮でした。

また、開発のなかでメンターさんとの間で意見が割れた場合などに関して、SlackやJiraで意見を募ると多くの人がコメントをくれて、より良い方向にプロダクト開発を進められたのはいい印象として残っています。

モノグサで働いてみて

長期インターンのレポートということでモノグサの雰囲気の話を少しだけしたいと思います。

noteの記事にモノグサのバリューについての記事 が上がっていますが、僕自身、働いていてもバリューがちゃんと浸透しているというのは随所に感じました。例えば、事業へのオーナーシップというものがありますが、Slack一つ見ても各個人がMonoxerというプロダクトをより良くするために役職や立場関係なく議論がなされています。

メンションされたわけではない場合、意見や疑問に対して発言を行う義務や直接的なメリットは基本的に存在しないわけですが、それでもなお様々な人が議論に参加しているのは各個人が事業をより良くしたいという思いをもっているから他ならないと思います。

また、スタンプがつくだけで何も議論が発生しないSlackでもなく、逆にいつも殺伐と議論だけが行われているSlackでもなく、”いい感じ”の温度感が保たれているのもすごく働きやすく感じました。

インターンの感想

「フロント以外はほとんど経験がありません」という状態で入ったので、技術的なことはもちろんのこと、タスクの優先順位の付け方やコミュニケーションにおいて認識齟齬をできるだけ起こさないようにするなど、業務のやり方に関しても勉強になることだらけでした。また、長期インターンということもあり、どんな機能にするかの検討からコードをマージすることまで行えたのはいい経験であるとともに嬉しかったです。

加えて、長期的にプロダクトのコードを扱うのが人生では初めてだったのですが、過去の自分に苦しめられたり、いいコードやテストがなぜ重要かを経験的に理解する機会を得られたのもすごくよかったです。

モノグサの皆さん、1年間ありがとうございました。

モノグサは主に競プロer方面の人で最近ホットな印象がありますがプロダクト作りをしたいみたいな人でも面白いことがたくさんあるのでそういう人でも是非インターン等の求人に応募してみてください。