Upgrade to Pro — share decks privately, control downloads, hide ads and more …

リモート下における内部品質向上への取り組み

 リモート下における内部品質向上への取り組み

スタディサプリ/Quipper オンラインミートアップ #2

iOS チームではスタディサプリと新規プロダクト開発の2つのコードベースを管理しています。
5年以上続くスタディサプリは、現在ではほぼSwiftに移行されていますが一部Objective−Cも残る歴史の長いプロダクトです。
対して、新規開発はSwifUI+GraphQLをベースにベストな選択肢を探りながら開発しているプロダクトで、それぞれプロダクトの特性が大きく違います。
こうした状況の中、リモート下で担当プロダクトを横断した改善活動や継続的な品質向上への取り組みについて話します。

Avatar for motoshima

motoshima

July 27, 2021
Tweet

Other Decks in Technology

Transcript

  1. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 Agenda | 01 02 03 04

    自己紹介 プロダクト / iOS チームの紹介 品質向上への取り組み まとめ
  2. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 ➔ iOS アプリエンジニア ➔ 2020年6月にQuipperに入社 ◆

    新規プロダクト開発 iOS担当 ◆ 小中高大学受験向けスタディサプリの一部運用を担当 @motoshima1150 / 中島元成
  3. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 期待値の調整 ➔ 話すこと 🗣 ◆ リモート下のiOSチームの働き方

    ◆ 内部品質向上への取り組みとして2つ紹介 • KAIZEN: iOSチーム内での改善活動 • Quality Budget: Native Engineerチーム(Android / iOS) での改善活動 • 2つの取り組みの共通点 ➔ 話さないこと 🙏 ◆ iOSの技術的なテクニックやTipsなど • 技術的な部分でお話したい場合は事後アンケートからカジュアル面談大歓迎です!
  4. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 2つの iOS プロダクトについて ➔ スタディサプリ ◆

    小学生、中学生、高校生、大学受験生が対象の学習アプリ ◆ サービス全体では2020年度は150万人以上が利用 ➔ 新規プロダクト ◆ 学習系アプリ ◆ 未リリース(開発中)
  5. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 iOS チームについて ➔ Engineering Manager1名、メンバー7名 ◆

    主にスタディサプリを担当するエンハンスチーム: 2名 ◆ 主に新規プロダクト開発を担当するチーム: 5名 ◆ ご意見のピックアップやリリース作業は全員で持ち回り ➔ 全員がフルリモートによる勤務 ◆ iOS チームの Daily / Weekly の通話で状況を共有 ➔ チーム規模拡大中 ◆ 新規プロダクト開発チームのうち 4人はQuipper入社1年前後
  6. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 プロダクトとチームの関係性 小中高 iOS チーム スタディサプリ 2週に一度リリース

    開発期間:5年以上 コード量:114,207行 構成:MVP / UIKit / RESTful API 新規プロダクト 未リリース(開発中) 開発期間:1年半(完全新規開発) コード量:43,656行 構成:MVVM / SwiftUI / GraphQL EM
  7. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 KAIZENの概要 ➔ 対象:スタディサプリ ➔ 方法:KAIZEN向けissueをペアで作業する ◆

    PdMがissueのストックを用意 ◆ 実際に着手するissueはペアで決める ➔ 頻度:週に1時間程度 ◆ 月に1度振り返りを行い、ペアの組み合わせをローテーション ➔ 実績:2020年9月から開始して 58 issuesをclose ◆ およそ1週間に一つ以上issueをcloseしている計算 ◆ ストックは 57 issues
  8. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 KAIZENで得られた体験 ➔ スタディサプリ担当と新規プロダクト担当の組み合わせで、教わりやすい ◆ 環境やユーザーデータ周りのノウハウの継承 ◆

    普段の開発フローを経験できる ◆ 関係各所を知ることができる ➔ Sprintに入れづらいissueの消化 ◆ テストケースの追記、Warningの除去、リファクタリング ➔ 過去のissueの呼び起こし ◆ 限定的な条件のため優先度が低い issueなどを消化するきっかけ ◆ 中には Apr 9, 2019 (約2年前)のissueも
  9. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 Quality Budget の流れ 木曜日 金曜日 Check-in

    一同に集まって着手したい issueを宣言する場 Check-out 一同に集まって着手したissueの 成果を発表する場 17:00 16:00 良い週末を👋
  10. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 例えば… ➔ [iOS] TestFlightの配信で自動でBranch/Issue/PR番号を更新する ➔ [iOS]

    ログを端末(実機・シミュレーター)で確認できるようにする ➔ [iOS] Xcode 12.5 対応 ➔ [iOS] SPM をキャッシュする
  11. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 ➔ 対象:新規プロダクト ➔ 方法:Check-inで翌日対応するissueを宣言、Check-outで結果を共有 ◆ Check-inは30分程度、Check−outは振り返りも含めて45分程度

    ◆ 参加は任意、Android / iOS 合同で開催 ◆ QB中は基本的にはSprintのissueは着手しません ◆ QB用のissueは、普段から気にかかっていることを issue化しています ➔ 頻度:隔週に1日 ◆ 木曜日の17時からCheck-in、金曜日の16時にCheck-outを行います ➔ 実績:2020年10月から開始して 108 issuesをclose ◆ およそ1回あたり6 issueをcloseしている計算 ◆ ストックは 43 issues Quality Budget の概要
  12. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 ➔ 開発を進めながら、業務効率化を進めることができる ◆ 要件ではないが動作確認の際に役に立つもの • デバッグメニューでの環境切り替えなど

    • CI機能の充実 ➔ 実装方針の軌道修正がしやすい ◆ SwiftUIでの実装において、試行錯誤の部分や OSのバージョンアップなどで方針を 変えることがあった ◆ 新規実装部分と既存実装部分で実装方法に乖離が生まれても、 QBの期間で実装 の統一を図ることができた ➔ 週終わりの区切り、達成感がある ◆ issueを消化し区切りを作ることで、業務自体にもメリハリがつく(感想) Quality Budget で得られた体験
  13. #sapurimeetup スタディサプリ/Quipper オンラインミートアップ #2 まとめ(2つの改善活動の共通点) ➔ 改善活動の時間を先に確保しておくこと ◆ それぞれ別のプロダクトが改善に当てる時間を Product

    Managerと相談して確保している ◆ 特にスタディサプリでは定期的に issueを見ているため程よい関与を得られている ◆ Quipperの文化として負債解消への理解がある ➔ 漸進的な変更と相性がいいこと ◆ 新規開発を止めずに、新しい方針を既存の画面へ反映する機会ができる ◆ 限られた時間で対応できない issueも、細分化し次に着手しやすいように状況を記す ➔ ちょっと違う視点があると気づきを得やすいこと ◆ 別のプロダクト担当者同士で組む(同じ iOSだが、普段のプロダクトが違う) ◆ Android, iOS合同で行う(同じプロダクトを見ているが、コードが違う) ◆ 普段気に留めていない部分の 新たな手法や見落としなどが見つかり良い体験 につながっている