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
エンジニアリングマネージャー“お悩み相談”パネルセッション
ar_tama
1
1.3k
「好き」から見つける仕事のかたち / Shape Your Career From What You Love
ar_tama
0
77
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
8
1.7k
本当に必要なのは「QAという技術」だった!試行錯誤から生まれた、品質とデリバリーの両取りアプローチ / Turns Out, "QA as a Discipline" Was the Key!
ar_tama
11
11k
自分の「心の声」に耳を傾けよう ――振り返りから始める、キャリアの可能性の広げ方 / Listen to Your Inner Voice: Unlocking Your Career Potential Through Reflection
ar_tama
2
820
偶然 × 行動で人生の可能性を広げよう / Serendipity × Action: Discover Your Possibilities
ar_tama
1
4k
チームを主語にしてみる / Making "Team" the Subject
ar_tama
5
700
小さな勉強会の始め方、広げ方、あるいは友達の作り方 / How to Start, Grow, and Build Connections with Small Study Groups
ar_tama
11
7.1k
Re: スタートアップ企業が実践する「身の丈スクラム」の現在地 / Re: Current State of 'Right-Sized Scrum' Practices in Startups
ar_tama
8
2.1k
Other Decks in Programming
See All in Programming
ソフトウェアテスト徹底指南書の紹介
goyoki
1
110
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
6
860
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
700
AWS Serverless Application Model入門_20250708
smatsuzaki
0
130
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
980
Laravel Boost 超入門
fire_arlo
1
120
🔨 小さなビルドシステムを作る
momeemt
1
500
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
200
実践!App Intents対応
yuukiw00w
1
350
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.8k
MLH State of the League: 2026 Season
theycallmeswift
0
160
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
Why Our Code Smells
bkeepers
PRO
338
57k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
A designer walks into a library…
pauljervisheath
207
24k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Writing Fast Ruby
sferik
628
62k
KATA
mclloyd
32
14k
4 Signs Your Business is Dying
shpigford
184
22k
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 おわりに