$30 off During Our Annual Pro Sale. View Details »

お薬手帳アプリ開発における スピード開発 x 安定運用の取り組み

kakehashi
February 22, 2023

お薬手帳アプリ開発における スピード開発 x 安定運用の取り組み

TechPlay_2023年2月21日登壇資料です。

kakehashi

February 22, 2023
Tweet

More Decks by kakehashi

Other Decks in Business

Transcript

  1. お薬手帳アプリ開発における
    スピード開発 x 安定運用の取り組み
    株式会社カケハシ 種岡篤志

    View Slide

  2. 自己紹介
    ・カケハシ入社 3年目
    ・Pocket Musubiを開発するチームに所属
    ・バックエンドを主軸にインフラやフロントエンドも従事
    ・2人の娘の育児に奮闘中
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    2

    View Slide

  3. アジェンダ
    昨年、iOS/Androidでリリースした電子お薬手帳アプリについて
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    3
    スピード開発 安定運用
    チーム分割

    View Slide

  4. 株式会社カケハシとは?
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    4
    Mission: 日本の医療体験を、しなやかに。

    View Slide

  5. Pocket Musubi 開発チーム
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    5
    主に患者さん向けサービスの開発チーム
    LINE上で動作するWebアプリ(Pocket Musubi)
    エンジニア 10名 スクラム開発

    View Slide

  6. おくすり連絡帳について
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    6
    おくすり手帳アプリ( iOS / Android)
    開発期間:約半年
    LINE版Pocket Musubiとのデータ連携して
    より便利に!

    View Slide

  7. アジェンダ
    昨年、iOS/Androidでリリースした電子お薬手帳アプリについて
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    7
    スピード開発 安定運用
    チーム分割

    View Slide

  8. スピード感ある開発できたのか?
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    8

    View Slide

  9. システム設計概要
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    9

    View Slide

  10. FlutterFlow選定の背景
    当時、社内にはiOS/Androidそれぞれ一人しかエンジニアがいなく、圧倒的
    に開発リソースが足らない状況で、MVPを作らないといけない
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    10
    Flutter
    ローコードツールの活用
    iOS/Android両方のリリースが必要

    View Slide

  11. FlutterFlowとは?
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    11
    GUIでFlutterアプリが作れる
    ソースコードのDLとGitHubと
    の連携(有料プラン)
    デザインだけでなくロジックの
    実装もツール上で可能

    View Slide

  12. FlutterFlowを使ってみてどうだったのか?
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    12

    View Slide

  13. FlutterFlowの使用感
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    13
    ・各画面の作成とデザインの当て込みで活用
    テストをきちんと書いて、将来的に容易にリプレース可能な準備をしておくこと
    で許容
    ・ローコードツールが自動生成する抽象化コンポーネント管理
    (FlutterFlowXXXのような抽象化した独自コンポーネントを作ってくれるが負債化の懸念)
    デザインの作成と修正したものを適宜エクスポート
    ロジックは自前で実装
    ・ツール上だけではロジック実装が難しい or 設計観点でツール依存にする難しさ

    View Slide

  14. システム設計概要
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    14

    View Slide

  15. ServerlessStackとは
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    15
    インフラの管理だけでなく、アプリケーションコードの開発支援してくれる CDK
    ライブデバッグ可能( VS Code,WebStorm,IntelliJ IDEA)
    Live Lambda Developmentが優秀(Local環境でLambdaのロジック開発)
    メンバー毎の開発環境が簡単に構築できる

    View Slide

  16. 変更を都度デプロイ
    Lambdaが利用するサービスをローカルでモック
    Lambda開発のつらみ
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    16
    CDKにhotswap deployments機能が追
    加されたことで改善
    しかし、ライブデバッグはできない
    LocalStackのメンテコスト高い
    ・利用するサービスのモック作るコスト
    ・LocalStackの変更追従コスト
    デプロイにかかる待ち時間発生
    【Lambda開発パターン例】

    View Slide

  17. Live Lambda Development 利用例
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    17
    ローカルでLambdaの
    ロジック開発に専念
    専用の開発DB
    ライブデバッグ
    Lambda以外のサービ
    スはそのまま使える

    View Slide

  18. アジェンダ
    昨年、iOS/Androidでリリースした電子お薬手帳アプリについて
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    18
    スピード開発 安定運用
    チーム分割

    View Slide

  19. 安定運用に向けて
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    19
    おくすり連絡帳アプリはエンジニア総力戦で開発した

    View Slide

  20. 運用面での課題
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    20
    メンテナンス対象が増える
    全員が等しくコードベースで理解するのが難しい
    認知負荷の増大
    ドメイン知識の共有の難しさ
    チーム分割

    View Slide

  21. チーム分割のための輪読会
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    21
    トップダウンでチームを分割するのではなく
    チームの形としてどういうものがあるのか?
    チーム間のコミュニケーション方法は?
    などのベストプラクティスを体系的に学ぶことでチーム分割導
    入ハードルを下げる

    View Slide

  22. チーム分割
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    22
    ・認知負荷が下がり、それぞれのサービスで開発・運用効率が上がった
    ・新しくメンバーが入った時のキャッチアップも楽になった

    View Slide

  23. 設計に関する課題
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    23
    DB
    DBが密結合
    コンウェイの法則
    (1つのチームで開発した影響)
    開発スピードは間違いなく出た
    Pros
    Cons
    DBスキーマ管理や変更時影響範囲の確
    認の負荷が高い

    View Slide

  24. マイクロサービス化
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    24
    新規プロダクトはドメインの粒度が粗く、変更頻度が高いため、マイクロサービス化の意思決定が
    しにくい
    マイクロサービス化したサービスの運用経験者の有無
    チーム分割を先に行っていたらマイクロサービス化の判断は変わっていたかもしれない
    組織のフェーズや開発リソースなどの外的要因によって変わりうるため、今回の経験を今後の判
    断軸として活かしていきたい

    View Slide

  25. まとめ
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    25
    FlutterFlowやServerlessStackを使ってスピード開発できた
    チーム分割することで認知負荷を下がり、安定運用につながった
    新規プロダクト開発前にローンチ後のチーム構成を思案すると共に、マクロサービス化について
    検討しておこう

    View Slide

  26. 全プロダクト絶賛採用強化中!
    Copyright © KAKEHASHI Inc. All Rights Reserved.

    26
    ● フロントエンドエンジニア

    ● バックエンドエンジニア

    ● PdM

    ● 開発ディレクター

    ● UXデザイナー

    ● SRE

    ● データエンジニア

    ポジションの詳細はコチラ 


    https://herp.careers/v1/kakehashi

    View Slide

  27. Copyright © KAKEHASHI Inc. All Rights Reserved.

    27
    ご清聴ありがとうございました󰢛

    View Slide