この記事はクラスター Advent Calendar 2020の6日目の記事です。
昨日は ryoya_inoさんの『2020年のふりかえりと2021年にむけて』でした。
cluster社のエンジニア、わらび餅です。
今回はwebエンジニアだった私が今年Android開発にチャレンジした経験について書こうと思います。
1. 『web専任』という不安
2019年1月、私が入社した当時のクラスター社にはwebの専任がおらず、機能実装や改善にもあまり手が回っていない状況でした。
「webは俺に任せろ。そのために来た。」という気持ちの私は、1年かけてwebにさまざまな変更を行ってきました。それについては去年のAdvent Calenderの記事 にまとめてあります。
当時はやれること・やりたいことが山積みで充実した生活を送ることができましたが、1年がたつ頃からある問題が見えてきました。そう、やることが無くなってきたのです。
正確にはwebだけで簡単にやれることが無くなってきたです。webに加えたい改善はまだまだありますが、そのためにはAPIの追加、UIまわりの大きな変更など、他の領域にも手を加える必要があります。
それらを担当できるメンバーにも各自の仕事があるので、簡単には改善が始められない。それまでwebだけで完結する仕事をするしかない。webだけで完結する仕事は少なくなっている。
『このままだと数カ月以内に社内ニートになる』という不安が自分の中にありました。
2. タイミングよく上がったネイティブ化
web以外の領域にも手が出せるようになろう。どの領域に手を伸ばそう。と考えていたころ、ちょうどアプリのネイティブ化の話が社内で出始めました。
今年の3月にリリースされたアプリ版cluster。これはすべてUnityで作られたものでしたが、動きがモッサリしている、画像の表示速度が遅いなどさわり心地の問題が浮かび上がってきました。
それを改善するため、ワールド・イベント以外の部分をネイティブ化(Unityではなく、iOS,Android標準の技術で書き直すこと)の話がスタート。
『このタイミングしかない!』と上長やメンバーなどと相談をして、ネイティブ化プロジェクトに自分も参加することになりました。
3. 基礎を身につけるためにやったこと
1ミリもAndroidを知らない状態でやったことは、Android Kotlin Fundamentalsをひととおり読むことでした。
このドキュメントを読むことで、Androidの基礎中の基礎から、最近のAndroid開発でほぼ必須となっているライブラリーのコレクションである『Android Jetpack』の使い方まで幅広く学ぶことができます。
当時は何から勉強すれば良いかも分からない状態でしたが、ネイティブ化のAndroidを一緒に担当するツヨツヨな方に、何から手を付ければよいか、どの資料がオススメかなど導いてもらいました。
4. 開発、そしてリリース
UaaLや全体的な設計など深い知識が必要な部分はツヨツヨな方にお願いし、簡単な画面を自分が担当する、という分業スタイルでアプリを作っていきました。
最初はピヨピヨだった自分も、Android Kotlin Fundamentalsを読みつつ実装で経験を積み、1カ月がたつ頃には安定して実装を進めるようになりました。そして7月に始まったネイティブ化も、無事11月にリリースすることができました。
どれくらいアプリのさわり心地が変わったかは、ネイティブ化のリリースノートに動画があるのでそちらを見てもらえればと思います。
##5. リリース以降
リリース後、無事ネイティブ化PJは解体され、今はoutroom(ワールドやイベントより手前の部分。web、アプリのネイティブな部分)という括りのチームで引き続きwebやAndroidの改善を行っています。
##6. 終わりに
あまり技術的な記事ではありませんでしたが、今回私がAndroid開発になるまでの経緯について簡単に書かせてもらいました。
書きたかったことは、『自分の担当範囲を決めきらない』 ことです。ここまで読んでくれてありがとうございます。
明日はshimasayさんの『アバターVRM作成と軽量化』です。これは期待!