Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20231213_スタートアップにおけるソフトウェアアーキテクチャの運用・維持について
Search
PharmaX(旧YOJO Technologies)開発チーム
December 12, 2023
Technology
0
67
20231213_スタートアップにおけるソフトウェアアーキテクチャの運用・維持について
2023/12/13
Backend Night 〜アーキテクチャ設計編〜
https://yojo.connpass.com/event/303072/
PharmaX 尾崎のLT資料です
PharmaX(旧YOJO Technologies)開発チーム
December 12, 2023
Tweet
Share
More Decks by PharmaX(旧YOJO Technologies)開発チーム
See All by PharmaX(旧YOJO Technologies)開発チーム
AIコーディングを前提にした開発プロセス再設計〜開発生産性向上に向けた試行錯誤〜
pharma_x_tech
3
130
AIエージェントの評価・改善サイクル
pharma_x_tech
2
340
MCP & Computer Useをフル活用した社内効率化事例〜現在地と将来の展望
pharma_x_tech
1
280
AIエージェントの継続的改善のためオブザーバビリティ
pharma_x_tech
6
2k
Roo CodeとClaude Code比較してみた
pharma_x_tech
3
1.8k
Roo Codeにすべてを委ねるためのルール運用
pharma_x_tech
1
770
Cline&CursorによるAIコーディング徹底活用―Live Vibe Coding付き
pharma_x_tech
3
1.9k
Computer Use〜OpenAIとAnthropicの比較と将来の展望〜
pharma_x_tech
6
1.2k
AIコーディングの最前線 〜活用のコツと課題〜
pharma_x_tech
4
3.5k
Other Decks in Technology
See All in Technology
いかにして命令の入れ替わりについて心配するのをやめ、メモリモデルを愛するようになったか(改)
nullpo_head
7
2.7k
[OCI Technical Deep Dive] OCIで生成AIを活用するためのソリューション解説(2025年8月5日開催)
oracle4engineer
PRO
0
110
Exadata Database Service on Dedicated Infrastructure セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
0
290
Amazon GuardDuty での脅威検出:脅威検出の実例から学ぶ
kintotechdev
0
120
Amazon Q Developerを活用したアーキテクチャのリファクタリング
k1nakayama
2
220
Agent Development Kitで始める生成 AI エージェント実践開発
danishi
0
160
Delegate authentication and a lot more to Keycloak with OpenID Connect
ahus1
0
240
PL/pgSQLの基本と使い所
tameguro
2
230
テストを実行してSorbetのsigを書こう!
sansantech
PRO
1
130
Mackerel in さくらのクラウド
cubicdaiya
1
120
Telemetry APIから学ぶGoogle Cloud ObservabilityとOpenTelemetryの現在 / getting-started-telemetry-api-with-google-cloud
k6s4i53rx
0
160
AI時代の大規模データ活用とセキュリティ戦略
ken5scal
0
160
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Speed Design
sergeychernyshev
32
1.1k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
4 Signs Your Business is Dying
shpigford
184
22k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
460
Transcript
スタートアップにおけるソフトウェ アアーキテクチャの運用・維持に ついて 2023.12.13 #pharmaX_tech_collabo
(C)PharmaX Inc. 2023 All Rights Reserve 2 自己紹介 尾崎皓一 PharmaX
(旧YOJO Technologies) エンジニアリーダ 2人目のエンジニア正社員としてジョイン 最近はあまりコード書いてないですが、 PharmaXの歴史を 知る古参メンバーとして今日は色々お話しできれば! Twitter:@FooOzaki
3 (C)PharmaX Inc. 2022 All Rights Reserve プロダクトの簡単な説明
(C)PharmaX Inc. 2023 All Rights Reserve 4 「薬局」は医療体験の中でも身近な存在 日用品から処方薬まで。「薬局」は皆さまの日常の近くに存在している ドラックストア
調剤薬局
(C)PharmaX Inc. 2023 All Rights Reserve 5 医療体験を横断する2つの事業領域 YOJO事業 未病・予防
治療 薬局DX事業
(C)PharmaX Inc. 2023 All Rights Reserve 6 LINE上でのチャットを通じて薬剤師と会話 日々の相談や健康状態に応じて、 漢方・サプリメントを購入
使い慣れたUI上から手軽に細かく体質チェック 薬剤師から漢方・サプリのご提案 そのほか健康相談やオンラインでの処方箋受付 YOJOのオペレーションシステム 1 2 3 患者向けチャットシステム
(C)PharmaX Inc. 2023 All Rights Reserve 7 PSチームと患者をつなぐオペレーションシステム 患者とのスムーズなコミュニケーション 薬剤師向け管理画面
チャット形式での診断・相談・購入 患者向けチャットシステム
8 (C)PharmaX Inc. 2022 All Rights Reserve バックエンドソフトウェアアーキテクチャの歴史と 課題
(C)PharmaX Inc. 2023 All Rights Reserve 9 YOJO サービス開始 ソフトウェアリアーキテクチャ着手
アーキテクチャ設計者退職 リアーキテクチャ完了 Rails x レイヤ化アーキテクチャ 〜エンジニア4名〜5名体制で運用〜 最小チームで開発(薬局DX事業へ異動) 〜エンジニア1名〜2名体制で1年間運用〜 YOJO事業エンジニアチーム再組成 YOJO事業のグロースとリアーキテクチャ 2019年06月 2021年01月 2021年05月 2021年09月 2022年09月 2023年08月 ユーザ数の遷移
(C)PharmaX Inc. 2023 All Rights Reserve 10 Ruby On Rails
x レイヤ化アーキテクチャ導入 • 当初はRails標準のMVCで運用 ◦ コーディング規約やフレームワーク ルール運用ルールもなく、モデルも 肥大化 • コアドメインのリモデリングがきっかけに ドメイン駆動設計(DDD)を導入 • DDDと相性の良いレイヤ化アーキテク チャを選定 • (選定当時)制約の厳しいアーキテクチャ によりスキル感のばらつき・人の入れ替 わりを吸収したかった
(C)PharmaX Inc. 2023 All Rights Reserve 11 YOJO サービス開始 リアーキテクチャ着手
アーキテクチャ設計者退職 リアーキテクチャ完了 Rails x レイヤ化アーキテクチャ 〜エンジニア4名〜5名体制で運用〜 最小チームで開発(薬局DX事業へ異動) 〜エンジニア1名〜2名体制で1年間運用〜 YOJO事業エンジニアチーム再組成 YOJO事業の歴史 2019年06月 2021年01月 2021年05月 2021年09月 2022年09月 2023年08月
(C)PharmaX Inc. 2023 All Rights Reserve 12 アーキテクチャ設計・導入初期の問題 ソフトウェアアーキテクチャスタイルの初期定義と共にコアドメインを置き換え ソフトウェアアーキテクチャ定義の議論中に設計者が離脱し、問題が山積み
• 各レイヤーの設計思想や責務に曖昧な部分があり、議論がまとまらない ◦ バックグラウンドジョブの呼び出しは?実装はどこに? ◦ 通知系の処理はどこから(メール通知、 LINE通知、Slack通知など) ◦ xxxのケースを共通利用したい • メンバーの入れ替わりもあり、コアドメインリプレース時にも解釈が分かれる ◦ 各メンバーの解像度も浅く、各々の解釈でコードが書かれる ◦ レビュー後の手戻り多発 ◦ リプレースの最中に新規コードのリファクタリングが走る
(C)PharmaX Inc. 2023 All Rights Reserve 13 YOJO サービス開始 リアーキテクチャ着手
アーキテクチャ設計者退職 リアーキテクチャ完了 Rails x レイヤ化アーキテクチャ 〜エンジニア4名〜5名体制で運用〜 最小チームで開発(薬局DX事業へ異動) 〜エンジニア1名〜2名体制で1年間運用〜 YOJO事業エンジニアチーム再組成 YOJO事業の歴史 2019年06月 2021年01月 2021年05月 2021年09月 2022年09月 2023年08月
(C)PharmaX Inc. 2023 All Rights Reserve 14 ソフトウェアアーキテクチャの運用期の問題 人の入れ替わりも多く、徐々に歪みが大きくなっていく ソフトウェア以外の課題も大きくコアメンバーが工数を取れなかった
• インフラリプレース(セキュリティ担保やスケーリング上の限界) • BI基盤の構築やデータの民主化(複数のグロース施作実行に伴い、素早い PDCAを) • 薬剤師管理画面フロントのリプレース(薬剤師の生産性が大きな事業課題に) などなど バックエンドソフトウェアは引き続き拡大 • 違和感があったものの、議論やアーキテクチャのアップデートはできておらず。(振り返ると)場 当たり的な対応も目立つ。大きな問題は出ないがソフトウェアは大きくなっていく
15 (C)PharmaX Inc. 2022 All Rights Reserve これまでの2年半で得られた学び
(C)PharmaX Inc. 2023 All Rights Reserve 16 アーキテクチャ設計・導入初期の問題 ソフトウェアアーキテクチャスタイルの初期定義と共にコアドメインを置き換え ソフトウェアアーキテクチャ定義の議論中に設計者が離脱し、問題が山積み
• 各レイヤーの設計思想や責務に曖昧な部分があり、議論がまとまらない ◦ バックグラウンドジョブの呼び出しは?実装はどこに? ◦ 通知系の処理はどこから(メール通知、 LINE通知、Slack通知など) ◦ xxxのケースを共通利用したい • メンバーの入れ替わりもあり、コアドメインリプレース時にも解釈が分かれる ◦ 各メンバーの解像度も浅く、各々の解釈でコードが書かれる ◦ レビュー後の手戻り多発 ◦ リプレースの最中に新規コードのリファクタリングが走る
(C)PharmaX Inc. 2023 All Rights Reserve 17 ソフトウェアアーキテクチャの定義のポイント WHY・アーキテクチャの根幹思想を明確に •
今後の運用・アップデートの拠り所になる ◦ アーキテクチャ選定理由、解決したい課題や目標を明確に ◦ 基本的な設計原則や哲学 ◦ 各レイヤーの導入背景 など 迷わない定義 • スコープ範囲内での適切な運用、少なくとも既存のスコープ範囲においては新規メンバーでも 判断に迷わない状態を目指すべき ◦ DI(依存性注入)・DIP(依存性逆転の原則)などのテクニックを用いてアーキテクチャ制 約をコードで表現 ◦ 各レイヤーやディレクトリの責務を明確に ◦ 迷ったらアーキテクチャ/ドキュメントのアップデート議論のタイミング アーキテクチャに正解はない。常にアップデートしていくもの
(C)PharmaX Inc. 2023 All Rights Reserve 18 ソフトウェアアーキテクチャの運用期の問題 人の入れ替わりも多く、徐々に歪みが大きくなっていく ソフトウェア以外の課題も大きくコアメンバーが工数を取れなかった
• インフラリプレース(セキュリティ担保やスケーリング上の限界) • BI基盤の構築やデータの民主化(複数のグロース施作実行に伴い、素早い PDCAを) • 薬剤師管理画面フロントのリプレース(薬剤師の生産性が大きな事業課題に) などなど バックエンドソフトウェアは引き続き拡大 • 違和感があったものの、議論やアーキテクチャのアップデートはできておらず。(振り返ると)場 当たり的な対応も目立つ。大きな問題は出ないがソフトウェアは大きくなっていく
(C)PharmaX Inc. 2023 All Rights Reserve 19 ソフトウェアアーキテクチャ運用のポイント 人の入れ替わりに耐えうる運用を設計を どんなにリソースがなくてもソフトウェアアーキテクチャを維持するロールは必要
属人化しない仕組みの構築 • サンプルリポジトリを作成する • アーキテクチャに関するドキュメント • レビュープロセス、レビュー観点の定義 …etc 属人化排除は余力のあるうちにやっておく。これらも常にアップデートを。 アーキテクチャに正解はない。常にアップデートしていくもの