TechPlay_2023年2月21日登壇資料です。
お薬手帳アプリ開発におけるスピード開発 x 安定運用の取り組み株式会社カケハシ 種岡篤志
View Slide
自己紹介・カケハシ入社 3年目・Pocket Musubiを開発するチームに所属・バックエンドを主軸にインフラやフロントエンドも従事・2人の娘の育児に奮闘中Copyright © KAKEHASHI Inc. All Rights Reserved. 2
アジェンダ昨年、iOS/Androidでリリースした電子お薬手帳アプリについてCopyright © KAKEHASHI Inc. All Rights Reserved. 3スピード開発 安定運用チーム分割
株式会社カケハシとは?Copyright © KAKEHASHI Inc. All Rights Reserved. 4Mission: 日本の医療体験を、しなやかに。
Pocket Musubi 開発チームCopyright © KAKEHASHI Inc. All Rights Reserved. 5主に患者さん向けサービスの開発チームLINE上で動作するWebアプリ(Pocket Musubi)エンジニア 10名 スクラム開発
おくすり連絡帳についてCopyright © KAKEHASHI Inc. All Rights Reserved. 6おくすり手帳アプリ( iOS / Android)開発期間:約半年LINE版Pocket Musubiとのデータ連携してより便利に!
アジェンダ昨年、iOS/Androidでリリースした電子お薬手帳アプリについてCopyright © KAKEHASHI Inc. All Rights Reserved. 7スピード開発 安定運用チーム分割
スピード感ある開発できたのか?Copyright © KAKEHASHI Inc. All Rights Reserved. 8
システム設計概要Copyright © KAKEHASHI Inc. All Rights Reserved. 9
FlutterFlow選定の背景当時、社内にはiOS/Androidそれぞれ一人しかエンジニアがいなく、圧倒的に開発リソースが足らない状況で、MVPを作らないといけないCopyright © KAKEHASHI Inc. All Rights Reserved. 10Flutterローコードツールの活用iOS/Android両方のリリースが必要
FlutterFlowとは?Copyright © KAKEHASHI Inc. All Rights Reserved. 11GUIでFlutterアプリが作れるソースコードのDLとGitHubとの連携(有料プラン)デザインだけでなくロジックの実装もツール上で可能
FlutterFlowを使ってみてどうだったのか?Copyright © KAKEHASHI Inc. All Rights Reserved. 12
FlutterFlowの使用感Copyright © KAKEHASHI Inc. All Rights Reserved. 13・各画面の作成とデザインの当て込みで活用テストをきちんと書いて、将来的に容易にリプレース可能な準備をしておくことで許容・ローコードツールが自動生成する抽象化コンポーネント管理(FlutterFlowXXXのような抽象化した独自コンポーネントを作ってくれるが負債化の懸念)デザインの作成と修正したものを適宜エクスポートロジックは自前で実装・ツール上だけではロジック実装が難しい or 設計観点でツール依存にする難しさ
システム設計概要Copyright © KAKEHASHI Inc. All Rights Reserved. 14
ServerlessStackとはCopyright © KAKEHASHI Inc. All Rights Reserved. 15インフラの管理だけでなく、アプリケーションコードの開発支援してくれる CDKライブデバッグ可能( VS Code,WebStorm,IntelliJ IDEA)Live Lambda Developmentが優秀(Local環境でLambdaのロジック開発)メンバー毎の開発環境が簡単に構築できる
変更を都度デプロイLambdaが利用するサービスをローカルでモックLambda開発のつらみCopyright © KAKEHASHI Inc. All Rights Reserved. 16CDKにhotswap deployments機能が追加されたことで改善しかし、ライブデバッグはできないLocalStackのメンテコスト高い・利用するサービスのモック作るコスト・LocalStackの変更追従コストデプロイにかかる待ち時間発生【Lambda開発パターン例】
Live Lambda Development 利用例Copyright © KAKEHASHI Inc. All Rights Reserved. 17ローカルでLambdaのロジック開発に専念専用の開発DBライブデバッグLambda以外のサービスはそのまま使える
アジェンダ昨年、iOS/Androidでリリースした電子お薬手帳アプリについてCopyright © KAKEHASHI Inc. All Rights Reserved. 18スピード開発 安定運用チーム分割
安定運用に向けてCopyright © KAKEHASHI Inc. All Rights Reserved. 19おくすり連絡帳アプリはエンジニア総力戦で開発した
運用面での課題Copyright © KAKEHASHI Inc. All Rights Reserved. 20メンテナンス対象が増える全員が等しくコードベースで理解するのが難しい認知負荷の増大ドメイン知識の共有の難しさチーム分割
チーム分割のための輪読会Copyright © KAKEHASHI Inc. All Rights Reserved. 21トップダウンでチームを分割するのではなくチームの形としてどういうものがあるのか?チーム間のコミュニケーション方法は?などのベストプラクティスを体系的に学ぶことでチーム分割導入ハードルを下げる
チーム分割Copyright © KAKEHASHI Inc. All Rights Reserved. 22・認知負荷が下がり、それぞれのサービスで開発・運用効率が上がった・新しくメンバーが入った時のキャッチアップも楽になった
設計に関する課題Copyright © KAKEHASHI Inc. All Rights Reserved. 23DBDBが密結合コンウェイの法則(1つのチームで開発した影響)開発スピードは間違いなく出たProsConsDBスキーマ管理や変更時影響範囲の確認の負荷が高い
マイクロサービス化Copyright © KAKEHASHI Inc. All Rights Reserved. 24新規プロダクトはドメインの粒度が粗く、変更頻度が高いため、マイクロサービス化の意思決定がしにくいマイクロサービス化したサービスの運用経験者の有無チーム分割を先に行っていたらマイクロサービス化の判断は変わっていたかもしれない組織のフェーズや開発リソースなどの外的要因によって変わりうるため、今回の経験を今後の判断軸として活かしていきたい
まとめCopyright © KAKEHASHI Inc. All Rights Reserved. 25FlutterFlowやServerlessStackを使ってスピード開発できたチーム分割することで認知負荷を下がり、安定運用につながった新規プロダクト開発前にローンチ後のチーム構成を思案すると共に、マクロサービス化について検討しておこう
全プロダクト絶賛採用強化中!Copyright © KAKEHASHI Inc. All Rights Reserved. 26● フロントエンドエンジニア ● バックエンドエンジニア ● PdM ● 開発ディレクター ● UXデザイナー ● SRE ● データエンジニア ポジションの詳細はコチラ https://herp.careers/v1/kakehashi
Copyright © KAKEHASHI Inc. All Rights Reserved. 27ご清聴ありがとうございました