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

20230824_機能開発を止めずに進めるリプレイス戦略

 20230824_機能開発を止めずに進めるリプレイス戦略

2023年8月24日での登壇資料

Avatar for Tatsuya Watanabe

Tatsuya Watanabe

August 22, 2023
Tweet

Other Decks in Technology

Transcript

  1. 3 自己紹介 渡辺 達哉 @watta_medii • 株式会社Medii VPoE • C++,

    C#, Go(バックエンド中心) • 2013年新卒からほぼ医療関連のエンジ ニア
  2. 8 取り組む社会課題とサービス概要 (参考) これまでの相談方法との差異 難渋症例に出くわした場合… これまで(As-Is) 人づて等で専門医へのコンタクトを辿り 個別症例について相談 Mediiの取組(To-Be) E-コンサル上で専門医を探し

    個別症例について相談 知り合いの MRさんから 知り合いの 医師から 講演会で 出会って 主治医 専門医 主治医 全ての診療科の専門医 ワンストップで完結 たまたま 居れば 機会減
  3. 10 取り組む社会課題とサービス概要 実際のコンサルイメージ 主治医 ◯◯疾患の患者さんについて、 ステロイドは 効果が無ければ減量・中止 が望ましいと考えていま すが免疫抑制剤などの治療選択 に

    関し、専門医の先生のご意見を伺いたいです。 専門医 頂いた患者さんの情報を拝見するに、有効性が出つ つある◯◯(薬剤)の導入が望ましい と考えます。ステ ロイドは早期に減量ないしは 中止すべきです。 主治医 ありがとうございます。 ステロイドは減量・中止 の方向 で進めたいと思います。難病申請をした上で、 ◯◯ (薬剤)導入を進めていきます 。
  4. 14 一人のエンジニアが全ての開発を行い、とにかく動くものを早く出すことを重視していたため、保守性はほとん ど考慮されていなかった リプレイス戦略 リプレイスに至った背景 創業期 グロース期 このまま行くと… 開発速度 エンジニア一人体制

    とにかく動くものを最短で エンジニアが入れ替わり 2人体制になり、リファクタリング もするが焼け石に水 エンジニアを増やしても開発速 度は上がらない 保守コストばかりかかる 技術負債 エンジニア内部では、今このタイミングで手を打たないと手遅れになるという危機感
  5. 15 技術顧問を招致し、課題の言語化、クリティカルなポイントについて整理した リプレイス戦略~意思決定~ 開発組織内による課題の洗い出し コード 品質 DB 技術選定 ✔ C#エンジニアの確保が難しく、開発組織を拡大しにくい

    ✔ Vue 2であり、古いかつ、サポート切れ間近 ✔ TypeScriptでない ✔ テストが書かれていない ✔ 肥大化、重複したコード ✔ 多くの仮説検証で残った複雑な条件分岐、不要なコードの残存 ✔ リレーションがほとんど張られていない (RDB使ってます) ✔ 重複したカラム、使われていないカラムがある ✔ ローカルルールの値 課題の一例
  6. 16 今後の開発速度の低下と、エンジニア組織の拡大を中心に説明 リプレイス戦略~意志決定~ ビジネス側との調整 NGパターン 当然、技術的な問題をベースに話しても 伝わらない OK(話を聞いてくれる)パターン ビジネスや組織にとって、今後どのような問 題があるかをベースにする

    それはそっちの都合だよね 頑張ってなんとかしてよ 今後の事業拡大においてそれは問題だ 議論して方針を決めよう こんなに技術的な負債が溜まっています 開発がめっちゃ大変なんです 技術的にマッチするエンジニアが少ない このままだと、開発組織もスケールしない
  7. 19 PMとロードマップをすり合わせ、逆算してリプレイスの優先度を決定 リプレイス戦略~実施~ ロードマップからの逆算 ロードマップから逆算 A機能関連 リプレイス A機能開発 C機能開発 B機能開発

    B機能関連 リプレイス C機能関連 リプレイス • ロードマップにある機能改修については先んじてリプレイスを進める計画を立て る • 当然、小さい機能改修やバグ修正もあるので全てではないが、おおよその優先 順位を決める
  8. 20 段階的リリースにすることで、ビジネス側への影響を最小にしながら進められたことは良かった リプレイス戦略 現時点での振り返り 段階的リリースにしたこと 最初にやること、やらないことを明確 にしたこと 1つずつリプレイスできるため、追いかけ開発を 最小限に抑えられた 機能開発をほとんど止めずにリプレイスできた

    良い意味で諦めポイントを明確にすることで、 リプレイス期間を最小限に抑えた Good Bad テストファーストで進められなかった こと 初期実装は終わっているが、テストが書けておらず、 リプレイスできていないものが多い
  9. 21 まずは年内に100%リプレイス。その後は20%の時間を技術負債への対応として使う 今後の展望 2023年中の目標とその後 • 現在のリプレイス進捗率としては50%くらいなので、まずは100%やりきる • DBを正規化し、ちゃんとRDBにする • APIの責務が大きすぎるので、再設計したい

    (恥ずかしながらGETメソッドで、DB更新があるAPIがあったりします) • モバイルアプリも結構負債が… • エンジニア組織の拡大と開発速度の向上 • 品質管理の組織化 • 新たなるサービス開発へ