Androidエンジニアの斎藤です。
私が所属するAndroidチームとしての取り組みとその成果について紹介させていただきます。
Androidチームの課題への向き合い方や雰囲気など感じていただければと思います 🙇♂️
はじめに
クラッシュフリー率について
クラッシュフリー率はアプリがクラッシュせずに正常に動作したユーザーやセッションの割合を示す指標のことで、アプリの品質を図る上で1つの指標となっています。
一般的なアプリのクラッシュフリー率は分かりませんが、私自身が過去に関わってきたAndroidアプリと比較すると低い数字でした。
フォトラクションアプリの状況
またチーム目標としてはクラッシュフリー率の向上を目標としていましたが、これに対する具体的なアクションはあまりありませんでした。
フォトラクションアプリは2017年から開発されたものでJavaコードが残っていたりします。 加えて別会社の業務委託によって追加された機能などもあり全ての機能を網羅的に理解できる人はチームにはいない状況でした。それらのコードがクラッシュする時もあり調査が進まないこともありました。
改善に向けて
改善に向けた具体的なアクションとして下記のことにチームで取り組みました。
クラッシュの棚卸し
Androidチームは毎日決まった時間に1時間ほどのチームミーティングを設けています。毎週火曜日にチームで Crashlytics を見て新しいクラッシュがないか、増加していないかを見ることにしました。
まず発生したクラッシュのスタックトレースを見て、その場で発生箇所のコードを全員で見ます。 発生原因と修正箇所の目処が立ったらクラッシュのメモ欄に記載しておきます。
すぐにわからなそうであればチケット着手のタイミングで子タスクとして調査チケットを作成して詳細な原因調査から始めます。クラッシュに紐づくJIRAチケットがない場合は、このタイミングでJIRAチケットを発行します。
この一連の作業により、今Androidアプリでどのようなクラッシュが発生しているか、問題のコードがどのように実装されているかを知ることができます。 「このバグこの前のアレですかね?」「ですね」みたいな会話ができるようになりました。 問題に対する修正方針がチーム内に共有されることで、新規コーディング時にも同じようなバグをうまなくなります。
クラッシュを修正するチケットをスプリントに差し込む
スプリント(SP)の稼働の10%を目安にクラッシュの改善を積むことにしました。 新機能開発を優先することもあったので、クラッシュ改善がないSPもありましたが、新機能開発がないSPにクラッシュ改善ができたので平均すると10%~20%くらいにできたのではないかと思います。
実績
ここ半年で87%->95%に改善することができました。
加えてこの間に新機能開発を止めることなくできたというのは何よりも大きかったです。
まとめ
- 目標達成には具体的なアクションが必要。
- 問題は根気強く分解してチームで1歩1歩着実に。
- 価値提供はやめない。
- その上でよりスピードを。
直面する問題が大きすぎると全てを捨てて新しく作り直したくなる誘惑にかられると思います。しかし作り直したところでいずれはまた別の問題に直面するはずです。つまるところ問題が一定程度大きくなるとリセットしなければならなくなってしまいます。 チームに求められることは問題の大小に関わらず問題を根気強く分解してチームで1歩1歩着実に進めて顧客に価値提供をし続けることです。 その上でよりそのスピードを高められるように今後もチーム一丸となって進めていければと思いました。