こちらはmikanのアドベントカレンダー24日目の記事になります。
23日目は @hoshitocat から、「負債を計画的に返済していくために、Backendチームでやっていること」でした。 技術的負債は必ず起きていくものなので、負債と向き合うことは必須だと思います。みかんバックエンドチームでの向き合い方がわかる内容で、Androidチームも以前はやっていたんですけど最近負債解消に向き合えてないところがあるので、もう少し明確にやっていきたいと改めて思いました。
mikan で Androidエンジニアをやっている@zukkeyです。
最近は、犬か猫を飼いたくて物件探しをする毎日です。
賃貸のままにするのか、戸建てを思い切って購入するのかに悩んでいます。日々、検討に検討を加速させています。
今回は、今年自分が関わってきたmikan Androidの振り返りをしながらアプリの変化をお見せし、今後どうしていきたいかについて紹介させていただこうと思います。
今年やってきたことの振り返り
New Card & Test Redesign
mikan Android版は長らくカード画面とテスト画面が古いデザインのままでした。
RealmからFirestoreへ刷新するという巨大プロジェクトが動いている中、細々とカード学習画面とテスト学習画面のリデザインプロジェクトをやっていて、実は新しいデザインに変わったのは今年なんです!(リリースされたの今年だったのかー、と自分自身が一番驚いています。もはや遠い昔の話に感じます。)
去年から進めていたプロジェクトだったので、無事にリリースできて嬉しかったです。
カード学習の方は特に表示領域が変わったので、以前よりは学習しやすくなっていると思います。
New Subscribe Plan View
今はもうさらに新しい課金プラン画面が登場したので、非常に寿命が短かったのですが、実は課金画面も新しくなっていたんです。
以前はシートが出ていなかったんですけど、より課金のプランがわかりやすいような表示に変わっていました。
そういえば、こんなこともやっていたなと懐かしく思いますw
24時間セールが入ったのもこの時でした。この頃から徐々にAndroidはiOSの背中を本格的に追いかけていました。
Audio Player
実は初Compose&ExoPlayer導入
をしたプロジェクトでした。どちらかといえば、試験導入に近いフェーズでした。
ExoPlayerもComposeもよくわからない状況で、とりあえず公式ドキュメントとサンプルをみて手探りで進めていました。
ExoPlayerもComposeもドキュメントは充実していると思います。ただ、このパターンの実装の経験者が社内にいなかったことと、当時はComposeのサンプルがなかったので、UAMPのサンプルを一番参考にしつつ、自分なりに考えて組み合わせていくということをやっていました。
もともと考えていたアーキテクチャの構成もあんまりマッチしないので、一から考え直しだな〜、と頭を悩ませていましたね。
Audio Playerの一番初期は「プラタン2000
」のみ利用できる機能になっていました。
当時は期限が決まっていたので急いで対応する必要があり、未経験ながらExoPlayerとComposeを組み合わせて導入したのがいい思い出です。
自分自身音声周りの実装については初めてやることだったので、なかなか不具合を出してしまい、QAチームには負担がかかってしまいました。
優秀なQAチームにたくさんQAしていただき、バグを直して直して直しましたので、いい状態に仕上げられたのではないかと思います。
DB Project a.k.a Darwin
DB Projectというのは、元々mikanアプリはRealmを使っていたので、データベース周りをRoomとFirestoreを使う方針に切り替えるというデータベース刷新のプロジェクトのことです。mikan社内ではDarwinという名前をつけて呼んでいます。
一応自分も担当していたので、上記にあげたプロジェクトを進めながらリリース後もお問い合わせいただいた件を対応していたりしました。
読み込み速度が遅いというお問い合わせをいただいていたので、リリース後も速度周りの改善を進めていました。
どうやら、オフライン切り替え判定部分が上手くいかずにFirestoreを参照しにいっていて読み込みがうまくいかないとか、オフラインオンラインで使っているうちにデータの不整合が起きてしまう問題とか、さまざまな現象が起きてワタワタして四苦八苦していたのがいい思い出です。
Android側も直したり、バックエンドチームにScriptを作っていただいたりして、皆で対応をしていました。
まだ、問題がある部分はあるので、後ほど記載する「今後について」で紹介いたします。
Toeic Project a.k.a Honda
Toeic Projectは、TOEIC問題演習の形式に対応する問題演習機能を新規追加するプロジェクトです。mikan社内では、Hondaと呼んでいます。
もともと、mikanは英単語アプリだったのですが、英語アプリへ移行するという方針に変わり、その上でiOSでは既に対応していた機能で、AndroidもiOSに追いつくべく、問題演習機能の導入をやっていこうというプロジェクトでした。
Audio Playerでやっていて試験導入とはまた別に、Composeをがっつり導入して副業の方とも相談させて一緒にやっていただきながら、いろいろな意見を聞いて実装を進めていきました。
当時は適宜わからない部分はヒアリングもしつつ、iOS側も実装が大変そうということもあったので、自分でiOSのコードを読みにいったりして参考にしたりしました。
また、副業の方の依頼用タスクを作成したり、自分でも実装したりと、慌ただしくも学びの多い期間でした。
Toeicの問題演習機能は、全部で6パターン
存在するので、そのパターンごとに学習画面、学習解説シート、学習結果画面を用意する運びとなりました。
なかなか実装工数もかかる大きいプロジェクトだったと思います。
Composeと仲良くなれるいい機会でした。
Toeic Project v2 a.k.a Enhancement of teaching materials
Toeic Projectのv2として、教材充実化というプロジェクトもありました。
最初に出したバージョンでは、mikanオリジナルの教材
にしか対応していない形で実装していたので、どの教材がきても同じパターンであれば利用できるようにする実装と、この当時はなかった(先程の画像には載ってしまっているのですが、)リーディングの右上にある学習推奨時間
の導入を合わせて行うというプロジェクトでした。
裏で課金対応をしてもらっていたので、自分はこちらの課金プランに応じた教材の充実化をする対応をやっているという流れでした。
このプロジェクトのおかげで、またComposeの実装に詳しくなれたのではないかと思います。
Phrase and Sentence Project
Phrase and Sentence Projectは、「金のフレーズ」「金のセンテンス」といったフレーズシリーズとセンテンスシリーズへの例文学習機能を実装するプロジェクトでした。
このタイプの教材だけに、元々あるカード学習機能、4択テスト機能に加えて、例文機能を追加するという内容でした。
一見すると、Toeicの問題演習機能に激似しているので、サクッと終わるかなと思っていました。
実はそれが罠で、裏側とのロジック部分が異なるので、若干テコ入れをしてあげないといけない、ということがおきました。成長痛を感じたプロジェクトでした。
また、このタイミングで、設定画面のリプレイスを行いました。
教材詳細画面から歯車のアイコンをタップして遷移できる設定シートをComposeで新規で作り替えるという対応も行いました。また一つ画面を新しくすることができました。
実はこの上で、カード学習、4択学習、問題演習、例文学習画面それぞれの設定シートも新しくなっていたりします。
結構いろんな画面をComposeで組んでみて、ComposeはUIを組みやすくて非常に早く簡単にやりたいことを実現できる(肌感)ので、なんだかもうAndroid開発だいぶやりやすくなったなぁと一番感じたプロジェクトでした。
このほかにも、いくつか対応したことがあるのですが、まだ表に出る機能ではなかったり、ちょっとしたことだったりするので、割愛とします。
振り返りのまとめ
今年は、ひたすらアップデートしてiOSの背中を追いかけるために黙々と実装するという1年でした。マラソンで例えるなら、遠く離れてしまい中継先のテレビから見えなかった姿が、もう後ろ姿は見える、というところまできたのではないかと思います。
mikan Androidは少ないメンバーでありながらもComposeで画面を次々と実装していったり、ExoPlayerを導入したり、自分は主にやってはなかったんですがGraphQLを導入したりと、新しい技術を取り入れつつ、いろんな機能を実装していくことができたのではないかと思います。
個人としては、Androidアプリに限らずWebの実装をお手伝いしたり、タスクを依頼したりなど去年とはまた違ったことをやっていました。
やってみる中で、自分は人に依頼するのは苦手ですが、もくもく実装するのは得意な方で新しい分野を学ぶのも楽しくやっていけているので、プレーヤーとしてやっていく方がいいのかもしれないな、と感じた1年でした。
今後について
この1年で、ぶっちゃけmikan Android結構変わったんじゃない?
という気持ち、あります。
でも、実はまだまだやりたいことがあります。
自分が考えていて直近対応したいことは、3つです。
- 速度改善
- 機能差分実装
- ダークテーマ
今のところ、通信環境問題で学習がうまくいかないお客様が一定いらっしゃるので、すでに取り組んではいつつも、やりたいといいつつ時間が思うように割けずにいたので、来年こそはより優先して対応したいと思います。
また、iOSとAndroidの機能差分がまだあります。まだ教材によっては対応しなければならないことがあるので、それらの差分吸収をしてさらに多くの教材を多くの方に使っていただき、アプリと英語を通して人生の可能性を広げるキッカケ作り、やっていきたいと思います。
あとは、実は裏ではひっそりと進んでいるダークテーマ対応、(途中から止まってしまっていたのですが、)やりたいですね。
ダークテーマを待ち望む声もありますし、最近では標準に近い機能と思いますので、なるべく早く取り掛かっていきたいところではあります。(もしくは、相方がやってくれるのかもしれないので、楽しみにしています。)
さいごに
今回はmikan Androidでやってきたことの振り返りを通して、mikan Androidの進化の過程をお見せできたのではないかと思います。
mikan に興味を持ってくださって、一緒に最高のAndroidアプリを作ってくださるエンジニアやデザイナー募集しております!!
ぜひぜひ、下記リンクよりご応募くださいませ!!!