こんにちは、メディアサービス開発部モバイルアプリケーション開発課でAndroidエンジニアをしている金森です。2022年の5月に中途入社し新年を迎え、9ヶ月が経ちました。
モバイルアプリケーション開発課のAndroidチームで9ヶ月仕事を通して知ったこと感じたことを書いていきたいと思います。
転職希望者にとって有益な情報になれば幸いです。
現在までの経緯
前職では受託開発会社でフロントエンド、Android開発に従事していました。その会社に新卒で入社してからの2年間で最初はVue.jsを用いたフロントエンド開発を行っていて途中から人手不足という理由もありAndroidも触ってみないかというお声がかかりAndroidにも手を伸ばしてみたという次第です。
Android開発ではデジタルサイネージに使用されるSTBと呼ばれる機器を使用したり、ハイブリッドアプリを作れるプラットフォームのAndroid部分の保守といった特殊なことを行っていました。
そこでAndroid開発+自社サービスを行っている企業を探し、その中からありがたく、運も良く、ブックウォーカーから内定を頂くことができました。
最終的に自分の興味のある書籍というコンテンツを取り扱っていること、Android開発者が多く在籍しているのでAndroid開発者として成長できると思い、内定を承諾し、ジョインすることになりました。
基本情報
アプリチームについて
2023年1月現在モバイルアプリケーション開発課のエンジニアはiOSが3名、Androidは4名、両OS兼務が1名の計8名です。
方針策定・分析するディレクターの方やデザイナーの方達と連携しながら開発を進めています。
担当サービス
Androidチームで担当しているものは現状下記になります。
- ニコニコ漫画play.google.com
- 読書メーター
開発環境
プロジェクト管理:Jira
言語:Kotlin(ニコニコ漫画も読書メーターも100%Kotlin)
バージョン管理:Git, GitHub
CI/CD: CircleCI(GitHub Actionsへの移行を検討中)
ライブラリ・その他:RxKotlin, Coroutines, OkHttp, Retrofit2, Dagger, Glide, Billing, WorkManager, Firebase, AdMob
開発プロセス
アプリチームではスクラム開発を導入しています。スプリントは1週間に設定しており、可能であれば1週間に1回アプリの申請、リリースを行っています。
ここではざっくりとした流れをご紹介します。
まず、月曜日に先週スプリントの振り返りを行います。そこで先週の反省点などを共有し、どうしたら改善していけるのかというところを話して記録します。
その後今週のスプリントでのプランニングをしていきます。ここではディレクター、 iOSエンジニア、Androidエンジニア間でコンセンサスを取りながら各人に課題を割り振り、進めていきます。
そして各々開発に着手していきます。
毎日お昼頃にデイリーのMTGを行い、 そこで進捗報告や、問題があればチームに相談を行います。
金曜日にリファインメントを行います。新規課題についての共有、工数、優先度決めを行い、チーム全体で内容を理解していきます。
以上がざっくりとした1週間の流れになります。
ペアプロ
私がAndroid開発においてまだ未熟なためペアプロを行う機会が多くありました。現在、アプリチームは基本的にフルリモート勤務なので画面共有をしながら行うのがスタンダードな手法になっています。
前職ではペアプロを行った経験が無く、人と共有しながら進めるのはただ緊張するだけじゃないかと思っていたのですが、実際行ってみるとメリットが多くありました。
普段だとコードという結果しか見えなかったものが、そのコードを書くためのなぜそうするのか、なぜそれが必要なのかという思考の過程を知ることができるのと同時に自分自身に足りない知識が浮き彫りになってくるので1人で行う開発では不可能なスピードでスキルアップができるというメリットを体感しました。
新規プロジェクト参画の機会
ブックウォーカーでは1年に1回新規ビジネスコンテストというイベントがありまして、そこで個人、チーム関わらず企画の提案が可能です。予選、本選とあり、最優秀賞に選ばれれば賞金 + 新規事業立ち上げとなっており夢があります。
実際過去ビジネスコンテストで評価され、新規事業となった事例として「ギークスプラス」が挙げられます。
ギークスプラスは日本と世界の文化の架け橋となるべく設立された会社です。
詳細は下記リンクからご覧ください
それ以外にも新規でアプリを作っていこうという流れはあったりするので新規プロジェクトへ参画する機会は大いにあると思います。
感じたこと
新しい技術に対しての姿勢
積極的に新しい技術を取り入れていこうという文化がチームにあります。
例えば現在進行形でRxJavaからCoroutinesへの移行が進められています。
他にもJetPack Compose導入、読書メーターでCameraXの導入の検討が進んでいます。
1番大きいトピックとしてはKMM(Kotlin Multiplatform Mobile)アーキテクチャ導入の検討があります。
ビジネスロジックをiOS、Android両OSに統一することで保守性やスケーラビリティを高めていき、安定したサービス運用を行っていきたいとアプリチームでは考え、慎重に検討を進めている最中です。その前段階としてアーキテクチャに詳しいチームのメンバーが勉強会を開催し、チーム全体でアーキテクチャへの理解を深めています。
それ以外の活動としては、毎週金曜日にAndroidXのリリース情報、Android Developers Blog、AndroidDagashiをチームで見ながら知見の共有を行っています。
出典:Kotlin Multiplatform for Cross-Platform Mobile Development | Kotlin Multiplatform Mobile
圧倒的ユーザー目線
アプリチームに限った話だけではなく、 常にどうしたらユーザビリティの高いものをサービスとして提供できるかという意識がかなり高いと思います。
細かく数字を集計し、効果検証をしたりという活動が活発ですし、毎週金曜日にアプリチームでニコニコ漫画、読書メーターのレビューを確認し、不具合があれば原因追及を行い、妥当性があるという話になれば、すぐにサービスチームと共有し検討するという流れができており、迅速に行われます。
上記の活動の例として読書メーターの事例をご紹介します。
読書メーターは読んだページ数や冊数などの読書量をグラフにして読書記録したり、日本中の読書家さんたちとコミュニケーションを取れるサービスです。数ある機能の内の1つに自分の好きな本を並べ、自分だけの本棚を作ることができる機能があります。そして1冊、本を選択すると本棚に追加されるというものです。
この機能に関してある日読書メーター運営の方にユーザーから「本棚で本を整理するときに複数選択できるようにしてほしいです。」とのレビューが届きました。
読書メーターチーム内でこのレビューについて触れられ、確かに現状の仕様だと複数の本を本棚に追加したいときに本棚画面と本選択画面を何回も往復することになってしまい、ユーザビリティを損ねているという結論になり、妥当性が認められました。
次に改修するにあたりどういったUIが良いのかデザイナーの方々で検討して頂きデザインカンプを作成していただき、アプリチームでのそのデザインカンプを参考に実装し、アプリをリリースしました。
紹介した事例の他にもニコニコ漫画、読書メーターともにユーザーからのレビューで改善された点は多くあります。
ユーザーの声を聞き、検討し、各チームがスムーズに連携を取りながら進めていくというサイクルが絶え間なく行われているからこそ多くの人に使ってもらえるサービスを提供できているのだと思います。
まとめ
入社し9ヶ月経たことで知ったこと感じたことをご紹介しました。
この記事でブックウォーカーでの働き方や雰囲気について少しでもわかっていただけたらと思います。
ご興味ありましたらぜひ下記採用ページをご覧ください。