こんにちは、2020年に新卒入社し、現在VOYAGE MARKETINGでエンジニアをやっているりゅうといいます。 入社式から現在まで愛猫と一緒にほぼフルリモートで家から働いています。
入社後はECナビのアプリチームに配属されました。 配属された当初はアプリ開発の経験がほぼない状態でしたがなんとかやっていけています。
そんな私が配属されたアプリチームで過ごした日々を振り返ると、オーナーシップを持って事業に携わることが大切だということに気が付きました。 なぜ、私が大切だと気が付いたかを説明するために、ECナビのアプリチームがうまくやれたこと、うまくやるためにチームとして行ったこと、新卒の私がどう感じたかを書いていこうと思います。
目次
- 目次
- ECナビのアプリチームとは
- ECナビのアプリチームがうまくやれたこと
- 1. ネイティブアプリ初挑戦のメンバーであったが、大きな不具合もなくリリースができた
- 2. チームで事業の数値を追い、事実をもとに、施策を行った
- 新卒の私がどう感じたか
- まとめ
ECナビのアプリチームとは
ECナビのアプリチームでは、ECナビアンケートアプリを開発しています。 アンケートに回答することで、ポイントを貯め、現金やギフト券に交換できます。 そんなアンケートアプリはネイティブアプリで、iOS版を2019/7にリリースし、Android版を2020/10にリリースしました。 また、アプリチームは、アプリ側の開発だけでなく、API側の開発も同じチームで行っています。
apps.apple.comECナビのアプリチームがうまくやれたこと
アプリチームがうまくやれたことは大きく分けて2つあると思います。 1つ目が、「ネイティブアプリ初挑戦のメンバーであったが、大きな不具合もなくリリースができた」こと、2つ目が「チームで事業の数値を追い、事実をもとに、施策を行った」ことです。
1. ネイティブアプリ初挑戦のメンバーであったが、大きな不具合もなくリリースができた
私が配属された当初は、iOS版の基本機能の開発が落ち着き、Android版を開発していくことが決まっていましたが、私含めて3人いるチームのエンジニアはAndroidの開発経験がありませんでした。 さらに、アプリチームはAndroid版の開発に加えて、iOS版の開発保守運用も続けていく必要がありました。 この条件下だとだいぶ厳しいのでは?と思いますが、Androidに精通している業務委託のかたが、週に1日4時間ですがチームにジョインしてくださることが決まりました。
この体制で最終的には、Android版を大きな不具合もあまり出さずにリリースすることができ、現在も問題なく運用していくことができています。
うまくやるためにチームとして行ったこと
現在も問題なく運用ができている要因として以下の3つが挙げられると思います。
- チームの共通知識を作る
- できる人に実装を依存しない
- コードレビューや設計方針の議論を活発に行う
チームの共通知識を作る
チームリーダーの先輩が、Androidのモダンな開発を一通り学べそうな本を1冊選定し、その本を読み進めました。
これによって良かったと思うことは、共通知識ができたことでした。 この本に書いてあることはわかっているという前提で話すので(わからなくてもこの本のnページに書いてあるというだけ)、チームでのコミュニケーションが取りやすくなりました。
また、アンケートアプリのアーキテクチャは、その本で作るアプリのアーキテクチャ設計を元にアレンジを加えたものであったため、私は全体感を把握しやすくてやりやすかったです。
できる人に実装を依存しない
Androidに精通している業務委託のかたにはコードレビューを中心でお願いをしました。 これによって良かったことは、そのかたに依存しすぎなくなったことでした。 自分たちで調べ、コードを書いて、レビューをお願いし、レビューでよりよい答えを教えてもらうことで、チームのAndroidアプリ開発の自力を高めることができました。
もし、開発面で依存してしまっていたら、開発中にそのかたが出勤しないと作業が進まずスケジュールがずれてしまったり、開発が終わったとしても私達には理解できないものが完成して保守ができないということが起きてしまっていたと思います。
コードレビューや設計方針の議論を活発に行う
アプリチームはコードレビューや設計方針の議論を活発に行っています。 私が配属されて一番最初に行ったのはある管理画面の作成で、そのときのPRのConversationは300を超えました。 Androidの機能実装でも、定期的にConversationが100を超えるPRがありました。
議論は、GitHubやSlackなどのテキストベースのコミュニケーションの他に、何かあったらボイスチャットツールに集合し、Jamboard や画面共有を使って相談をしていました。 私は、自分で明確に問題がわかっている場合はテキストベースで相談をして、自分でなにがわからないかわからないという場合はボイスベースでの相談をお願いしていました。
2. チームで事業の数値を追い、事実をもとに、施策を行った
週2回、エンジニア、デザイナー、ディレクターが集まるミーティング(以下、全体ミーティング)を行っています。 この全体ミーティングでは、実装進捗の共有だけでなく、事業の数値を元に施策の立案や行ってきた施策の評価についても話します。 アプリチームで行う施策は、もちろんディレクターさんからの立案もありますが、エンジニアからも意見し立案することができます。 ですので、アプリチームのエンジニアは施策立案から開発、運用、評価とフルサイクルに携わることができます。
具体的には「肯定的なレビューを増やすためには、どういういったユーザにレビューを訴求すればよいか」や、「会員登録率を上げるためには、ユーザがどこで離脱しているかを分析して、どうすれば離脱しないか」など様々な施策を行っています。
うまくやるためにチームとして行ったこと
全体ミーティングとは別で、毎朝、1時間から1時間半エンジニアのみのミーティングを行っています。 このエンジニアのみのミーティングでは実装に関する議論だけでなく、事業の数値(会員登録率やアンケート回答率、DAU、ARRPなど)がまとめられたダッシュボードを見る時間が設けられていました。 このダッシュボード確認の時間で、「あれ?この数値おかしくない?」という情報から障害にいち早く気がつくこができ、さらに、「この数値をもっと良くするためにはどうすればよいか?」など数値を元につぎの施策を、エンジニア間でも議論していきました。
新卒の私がどう感じたか
上記の2つのうまくやれたことは、オーナーシップを持って開発をするということに帰結するんじゃないかなと思います。 チームメンバーの各々が、オーナーシップを持ってアプリをよりよくしていく姿勢を持っていたのはすごいよかったことでした。
オーナーシップを持って仕事をしろというのはよく聞くと思いますが、口で言われるだけではなかなかできるものではないと思います。 特に新卒入社したばかりで余裕がない当時の私のような境遇の場合は。 ですので、自然とできる環境 or やらないといけない環境を構築していくのが大切で、アプリチームはその仕組があったと思います。
ネイティブアプリ初挑戦の私がアプリ開発に貢献できたのは、コードレビューがしっかりしている環境であったことや、自分が実装をしないといけない状況に立つことで、コードを書くということにオーナーシップを持つようになったからだと思います。 要件を一応満たせる動くコードを書くことはそんなに難しくないと思っていて、ただ、その動くコードはもしかしたら、パフォーマンスが悪かったり、バグを生む可能性があって、じゃあ、より良いとされている実装方法はないのかなどを調べていく必要があります。 よりよいコードを探求していくためには、オーナーシップを持って開発をすることが重要な要素の1つだと思います。
新卒の私が事業の数値を追い、事実をもとに、施策を行う議論に参加できた のは、毎朝のエンジニアミーティングで数値を確認する時間を設けていたことで、数値を意識する習慣がついたからだと思います。 フルサイクルにできる環境整っていることと、私自身がその権利を使ってやれる能力があるかは別の話で、新卒入社したばかりの私がチームの数値を良くするための施策の議論ができるといわれても、その議論にいきなりまざっていくことは厳しいです。 毎朝数値をみる習慣があると、数値に意識がいくようになり、その結果、その数値ってなんで追いっているんだっけ?この数値が高い/低いと何が良い/悪いんだっけ?など、様々な疑問が思い浮かんでは、自分でその疑問について調べたり、その場で先輩に質問をすることで、事業理解が増し、議論に参加していけるようになりました。
まとめ
アプリチームがうまくやれたと思う2つのことを紹介しました。 私はその2つのことはオーナーシップを持って開発ができたということに帰結すると思っています。 オーナーシップをもたせるためには、本人の素養もあるとは思いますが、意識しなくても持たせられる仕組みを作っていくことも大切なんだと思いました。