はじめに
本稿は、Developers Summit 2021 Summer の以下のセッションで学んだことを書きます。
セッション名:Yahoo!天気アプリ 雨雲レーダー大幅アップデート開発の取り組み
講演者:大前 良介[ヤフー]
セッション詳細:https://event.shoeisha.jp/devsumi/20210730/session/3238/
学んだこと
従来の雨雲レーダーは、ユーザーが地図上のデータを読み取って把握する必要があった。
それではユーザーにとって使いづらいため、どの地点にいつどのくらいの雨が降るのか、情報を整理してユーザーに伝えられるようにした。
今回のアップデート前のもともとの雨雲レーダーの時点で、多機能だった。
そしてFatActivityの状態だった。
1つの神クラスで、様々な機能が継ぎ足しで追加されてきた。
一時的にスケジュールを遅延させてでも大規模なリファクタリングを実施した。
完璧を目指すとコストが無限にかかるため、費用対効果を考え、妥協点を設定。
以下の方針で実施。
- 機能ごとにクラスを分割。
- リファクティブプログラミングの導入。
- 雨雲レーダーの半に限定してリファクタリングを実施。
最初の1週間はリファクタリングのみを行った。
その後の開発速度が上がったため、スケジュールへのマイナスインパクトはなかった。
実際に作ってみて、ユーザーにさわってもらわないと、どういう操作が使いやすいか分からない。
最初に操作できるアプリを何人かにさわってみてもらった結果、想定していない操作をすることがあった。
そういう結果を踏まえて、操作方法を改善した。
「Yahoo!天気」と「Yahoo!JAPAN」のAndroid版とiOS版の4つの類似アプリがあるが、それらはそれぞれのOSでの最適なUXを提供するために、あえて仕様やコードを共通化していない。
ただし、お互いにフィードバックし合うことで、良い点を共有しあっている。
以下の2種類のフィードバックを活用した。
たくさんの改善案が提案された。特にバグバッシュは1つの指摘をきっかけに次々に改善点が見つかった。
- Slackでのフィードバック募集
- Zoomで集中バグバッシュ
まとめ
有名なYahoo!天気アプリが、開発現場でどのように考えられて開発されているのかが分かり、勉強になりました。
ちなみに私は、普段はエンジニアリングマネージャーとして、チームの皆で楽しく開発する施策を色々実施しています。詳しくは以下を参照ください。
1年以上かけて生産性倍増+成長し続けるチームになった施策を全部公開
Twitterでも開発に役立つ情報を発信しています → @kojimadev