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
事業スピードを落とさずにPHP→Kotlinリプレイスに挑戦している話
Search
ar_tama
February 10, 2022
Programming
1
1.2k
事業スピードを落とさずにPHP→Kotlinリプレイスに挑戦している話
ar_tama
February 10, 2022
Tweet
Share
More Decks by ar_tama
See All by ar_tama
本当に必要なのは「QAという技術」だった!試行錯誤から生まれた、品質とデリバリーの両取りアプローチ / Turns Out, "QA as a Discipline" Was the Key!
ar_tama
9
7.8k
自分の「心の声」に耳を傾けよう ――振り返りから始める、キャリアの可能性の広げ方 / Listen to Your Inner Voice: Unlocking Your Career Potential Through Reflection
ar_tama
2
710
偶然 × 行動で人生の可能性を広げよう / Serendipity × Action: Discover Your Possibilities
ar_tama
1
3.5k
チームを主語にしてみる / Making "Team" the Subject
ar_tama
5
630
小さな勉強会の始め方、広げ方、あるいは友達の作り方 / How to Start, Grow, and Build Connections with Small Study Groups
ar_tama
10
6.9k
Re: スタートアップ企業が実践する「身の丈スクラム」の現在地 / Re: Current State of 'Right-Sized Scrum' Practices in Startups
ar_tama
8
2.1k
楽しくGoを学び合う、LayerXの勉強会文化 / LayerX's study culture of having fun and learning Go together
ar_tama
2
590
スタートアップ企業が実践する「身の丈スクラム」の現在地 / Current State of 'Right-Sized Scrum' Practices in Startups
ar_tama
14
5.3k
プロダクトの価値を最大化する「言語化筋トレ」のすすめ / "Verbalizing muscle training” to maximize the value of products
ar_tama
33
42k
Other Decks in Programming
See All in Programming
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
750
生成AI時代のフルスタック開発
kenn
10
2.7k
TSConfig Solution Style & subpath imports to switch types on a per-file basis
maminami373
1
180
少数精鋭エンジニアがフルスタック力を磨く理由 -そしてAI時代へ-
rebase_engineering
0
130
MLOps Japan 勉強会 #52 - 特徴量を言語を越えて一貫して管理する, 『特徴量ドリブン』な MLOps の実現への試み
taniiicom
2
570
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
Devinで実践する!AIエージェントと協働する開発組織の作り方
masahiro_nishimi
6
2.5k
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
710
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
230
Feature Flag 自動お掃除のための TypeScript プログラム変換
azrsh
PRO
4
620
Rethinking Data Access: The New httpResource in Angular
manfredsteyer
PRO
0
220
Agent Rules as Domain Parser
yodakeisuke
1
330
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
23
1.6k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Designing Experiences People Love
moore
142
24k
Practical Orchestrator
shlominoach
188
11k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
840
Facilitating Awesome Meetings
lara
54
6.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
It's Worth the Effort
3n
184
28k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
The Cost Of JavaScript in 2023
addyosmani
49
8.1k
Transcript
事業スピードを落とさず PHP→Kotlinリプレイスに 挑戦している話 Cake.jp Co.Ltd. @Server-Side Kotlin Meetup vol.1
アジェンダ - 自己紹介 - Cake.jp システムの - これまで - これから
- Kotlinリプレイスの感触 - おわりに 2
🙇 コード1行も出てきません🥺 3
自己紹介 あらたま/@ar_tama - 株式会社Cake.jp CTO - ex ロコガイド, セオ商事, DeNA
- 日本もちもち協会 代表 - サウナ好き 4
Cake.jpについて 会員数100万人突破! 国内最大級のケーキ・スイーツ総合通販サイト 5
Cake.jp システムのこれまで ※入社当初のあらたまさん 6
Cake.jp システムのこれまで - 2回のピボット - 足掛け10年ほどのコードベース - 定着しないメンテナ - どんどん生まれる関連事業&機能
- 目まぐるしく変わる業務フロー そして九龍城へ… 7
- 2回のピボット - 足掛け10年ほどのコードベース - 定着しないメンテナ - どんどん生まれる関連事業&機能 - 目まぐるしく変わる業務フロー
そして九龍城へ… Cake.jp システムのこれまで 8 あるある
Cake.jp システムのこれまで =技術的投資がされてこなかった? 9
Cake.jp システムのこれまで =技術的投資がされてこなかった? No! 結果として、技術的投資以外の判断が優先されてきただけ 10
PMFは見えてきた🎂 Cake.jp システムのこれから 11
技術的投資に(も)力を入れよう → 九龍城を解きほぐして、新しいアプリケーションに載せ替えよう - 事業成長のボトルネックをなくすため - システムの寿命を延ばすため - 開発者生産性と楽しさを増幅させるため Cake.jp
システムのこれから 12
3年先の開発組織を考える - 組織規模をどの程度拡大させるか? - メインシステムに殆ど絡まない新規事業が乱立するか? - 既存事業を5以上のチームに分割する可能性はあるか? Cake.jp システムのこれから 13
コンウェイの法則※ に従う 先の問いに… - YES→チームを細かく分割し、マイクロサービスアーキテクチャで - NO→チームを分割しすぎず、モジュラーモノリスアーキテクチャで ※ “組織の設計するシステムには ...
その組織のコミュニケーション構造をそのまま反映した設計になるという制約が ある” Cake.jp システムのこれから 14
コンウェイの法則※ に従う 先の問いに… - YES→チームを細かく分割し、マイクロサービスアーキテクチャで - NO→チームを分割しすぎず、モジュラーモノリスアーキテクチャで ※ “組織の設計するシステムには ...
その組織のコミュニケーション構造をそのまま反映した設計になるという制約が ある” Cake.jp システムのこれから 15
先人の知恵を積極的に借りる Cake.jp システムのこれから 16
- まずは既存の業務フローを洗い出し、あるべき姿とのギャップを知る - あるべき業務フローから業務ロジック(≒ドメインモデル)に落とし込む - Cake.jpは「マーケットプレイス型のECサイト」 - =ECサイトとしての基本機能は固く - 理想形がわからないところは柔軟に
Cake.jp システムのこれから 17
- まずは既存の業務フローを洗い出し、あるべき姿とのギャップを知る - あるべき業務フローから業務ロジック(≒ドメインモデル)に落とし込む - Cake.jpは「マーケットプレイス型のECサイト」 - =ECサイトとしての基本機能は固く - 理想形がわからないところは柔軟に
Cake.jp システムのこれから 18
そこでKotlinですよ 19
- 型安全!Null安全! - 表現が簡潔 - 「どこからでも何でも呼べちゃう」が防げる - アプリケーション特性によって使い分けができる - Spring
MVC / Spring WebFlux + Coroutine 20 そこでKotlinですよ
現在は、一部機能のリプレイスが完了したところ (出荷日やお届け日にまつわる機能群) ※ 注文を受けてから製造する店舗も多いため、条件が複雑 Kotlinリプレイスの感触 21
- 型安全!Null安全! - 表現が簡潔! - Data Classべんり - ExceptionHandlerべんり(Spring) -
「どこからでも何でも呼べちゃう」が防げる - マルチモジュールでモジュラーモノリスを体現 - テストが書きやすい - mockkべんり - ドメインモデルに属性と振る舞いをもたせ、検証対象が明確に - まずはSpring MVCから - 今後WebFluxも積極導入していきたい 22 Kotlinリプレイスの感触
事業計画(開発計画)に絡めながら進めているので、総じていい感じ🥳 - マイナスをゼロにしている感が少なく、モチベーションを維持しやすい - リプレイス先が風化しにくい - ダブルメンテが起きにくい - トレードオフ:リプレイス完了までの時間>< 23
Kotlinリプレイスの感触
時間がなくて盛り込めなかった内容もたくさんあるので、詳細は懇親会で! - 直面している課題 - 今後取り入れたい周辺技術 - パッケージ・モジュールの粒度と狭義のアーキテクチャ 24 おわりに
We’re Hiring!!! Meetyもやってます🙌 お気軽にどうぞ 25 おわりに