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
Real_World_Replacement_PJ.pdf
Search
horiuchie
August 23, 2023
Technology
2
210
Real_World_Replacement_PJ.pdf
horiuchie
August 23, 2023
Tweet
Share
More Decks by horiuchie
See All by horiuchie
LLMアプリケーション_リリース後の苦労とGROW.pdf
horiuchie
0
490
はじめてのアジァイル開発ならJIRAよりもBacklog.pdf
horiuchie
3
4.1k
Introduce the backlog into Plan Of Record
horiuchie
1
430
Other Decks in Technology
See All in Technology
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
130
短縮URLをお手軽に導入しよう
nakasho
0
110
Visualize, Visualize, Visualize and rclone
tomoaki0705
9
69k
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
18
7.1k
OpenID BizDay#17 みんなの銀行による身元確認結果の活用 / 20250219-BizDay17-KYC-minna-no-ginko
oidfj
0
150
Active Directory攻防
cryptopeg
PRO
7
4.5k
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
330
生成 AI プロダクトを育てる技術 〜データ品質向上による継続的な価値創出の実践〜
icoxfog417
PRO
5
1.8k
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
370
管理者しか知らないOutlookの裏側のAIを覗く#AzureTravelers
hirotomotaguchi
2
520
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
150
わたしのOSS活動
kazupon
2
310
Featured
See All Featured
Code Review Best Practice
trishagee
67
18k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
350
How to Think Like a Performance Engineer
csswizardry
22
1.4k
Optimizing for Happiness
mojombo
376
70k
Bash Introduction
62gerente
611
210k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Designing for Performance
lara
604
68k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
4 Signs Your Business is Dying
shpigford
182
22k
GitHub's CSS Performance
jonrohan
1030
460k
Music & Morning Musume
bryan
46
6.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Transcript
Real World Replacement PJ 2023年 8月24日 株式会社カラダノート 堀内 栄一 ー アーキテクトの視点から
ー
About
自己紹介 名前 堀内 栄一 出身地 和歌山県 のとても山奥 役割 プロダクト本部長兼VPoE 経歴 ・A社(SIer,
SES) ・B社(自社開発系のベンチャー) ・C社(スタートアップ) ・株式会社カラダノート(現職) → 4社中3社でリプレースを経験しました SNS https://twitter.com/horiuchie1 https://www.wantedly.com/id/eiichi_horiuchi 得意分野 アーキテクト、宣言的 /関数型、データ分析、 Vim、泥臭さ、...etc
カラダノートについて 会社名 株式会社カラダノート 代表 佐藤 竜也 ビジョン 家族の健康を支え 笑顔をふやす バリュー 仕事もプロ 家族もプロ
成長が生む幸せ 全てはビジョンに向けたストーリー 設立 2008年 12月 24日 従業員数 49名(2023年1月時点) 証券コード 4014(東京証券取引所グロース市場) 2020年10月27日 上場 エンジニア向け資料 https://bit.ly/3sCE3c8
事業概要
ビジネスモデル
それは3年前・・・
3年前のシステム
最後に残った箇所(赤枠の部分)の問題点・・・ • 当社ビジネスのメイン部分のアプリケーション • 「機能追加の改修スピードが遅い」或いは「急ぐと事故になる」 ◦ 要件 ~ 外部設計: ▪
現仕様を把握して改修内容をFixさせる工程に時間がかかっていた ▪ 想定外の負荷(非機能要件)による障害 ◦ 詳細設計 ~ 実装: ▪ 多くのハードコード ▪ 組み合わせのパターンが多い ▪ バッチの個数42個(いずれも3 ~ 5分おきに動く) ◦ テスト面 ▪ 他の仕様を壊さないように
参考)多くのハードコード および 42個バッチの抜粋
アプローチ
どうやってリプレースするか = アーキテクトの出番 ソフトウェアアーキテクトには主に次の 8つが期待される。 1. アーキテクチャ決定を下す 2. アーキテクチャを継続的に分析する 3.
最新のトレンドを把握しつづける 4. 決定の遵守を徹底する 5. 多様なものに触れ、経験している 6. 事業ドメインの知識を持っている 7. 対人スキルを持っている 8. 政治を理解し、かじ取りする 出典:ソフトウェアアーキテクチャの基礎より ▪ リプレースにあたっての泥臭いこと 問題を言語化したり、解決方法を導き出したり、意思決定したり、事業への影響を洗い 出したり、ドメインを整理したり、 ...etc 8つの期待(役割)と一致する
事業ドメインの知識を持っている • 既存のコードを隅から隅まで読む ◦ パターンが256個あるなら全部マトリクスにまとめる ◦ マジックナンバー・識別子などをすべてピックアップしていく ◦ ドメインに関するルール(=不変式)を抽出してまとめていく •
なぜこういう仕様なんだろう?既に担当者がいない場合は? ◦ 不明な点として書き出しておく • 事業に関連する書籍を読む ◦ 営業に関すること ◦ マーケティングに関すること ◦ 法律に関すること ◦ …etc
事業ドメインの知識を持っている • 事業ドメインの知識を身につけると・・・ ◦ ビジネスチームとより突っ込んだ会話・深掘りができる ◦ ビジネスチームさえ気づけない構造や概念に気づくことができる ◦ 書き出していた不明点の解像度が上がる 本屋に行って、端から端まで本を買う
自分の課題に関連する業界の本を端から端まで買うことをお勧めしま す。たとえば飲食業のSaaSビジネスをしたいのなら飲食ビジネスに関連 する本屋を端から端まで買います。 出典:解像度を上げる
政治を理解し、かじ取りする • 前提として 政治 = 社内政治 ではない ◦ コミュニケーションの仕方である ◦
意思決定の構造を理解して決裁者に最適な提案をすること • 問題を生み出している原因を言語化・蓄積しておく ◦ 決裁者にレポートする前提で ◦ e.g. 組み合わせが複雑、職人しか対応できない、動作確認に時間がかかる、 ...etc • コストや時間は最後の手段 それは最後の手段として使用すべきで、もっと重要な他の正当性や合理的な理由を先に試すべきだ。 コストと時間が交渉の重要な属性であるならば、一旦合意に達したあとでそれを考慮できる 出典:ソフトウェアアーキテクチャの基礎より
問題点の書き出しメモの抜粋 泥臭くコツコツ
多様なものに触れ、経験している 多くのハードコードやバッチは、 マッチングアルゴリズムで表現できることに気づく
アーキテクチャ決定を下す オニオンアーキテクチャ ▪ リプレース領域を切り分け e.g. インフラ層で吸収すればDBに変更を食わずにリプ レースできる 影響を及ぼさない (影響範囲の切り分け)
アーキテクチャ決定を下す EC2 ECS RDS
その他:プロジェクトには名前をつける • 改善余地あり ◦ XXシステムリプレースPJ • Good ◦ XXシステム YY問題改善PJ
◦ XXシステム YYリスク対応PJ ◦ XXシステム ZZモデル反映PJ スコープがはっきりする・ブレない・オーナーシップ
技術まわり Before After • PHP • Laravel • EC2 •
Vue2 • JavaScript • テストコードなし • … • Python 3.10(当時) • Fast API • 型検査やLintの強制およびpre-commit連携 • テストコードおよびCI/CD連携 • 循環的複雑度の解析および CI/CD連携 • 脆弱性解析およびCI/CD連携 • TypeScript • Nuxt3 • VS Code Dev Containers • ECS • …
最後に
明日はすぐに変えられない 1年後は必ず(置き)変えられる
ありがとうございました 本日の発表、当社についてや個人的なキャリア相談など TwitterからDMくださいませ