Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
売上と開発環境を同時に改善するためにPerl Webアプリケーションをどのようにリプレイスするか
Search
Masashi-Sutou
March 19, 2023
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
売上と開発環境を同時に改善するためにPerl Webアプリケーションをどのようにリプレイスするか
YAPC::Kyoto 2023 try/catch on 2023/3/19
Masashi-Sutou
March 19, 2023
More Decks by Masashi-Sutou
See All by Masashi-Sutou
今年やったこと_20年以上続くWebサービスのリプレイス_書いたコード_私がモダンかもと思うPerl
masashi_sutou
0
1.7k
リッチなポップアップ画面にはshowGeneralDialogが便利だった
masashi_sutou
4
3.8k
iOSでグラフを描くために必要な知識
masashi_sutou
5
3.7k
UITableViewControllerの利点を最大限に活かす使い方 - コードでAutoLayoutを記述する場合 -
masashi_sutou
3
3.5k
制約の優先度 - UITableViewCellのレイアウトを例に考える
masashi_sutou
0
1.2k
「文化を調和させる」 をやってみる Try “Blending Culture”
masashi_sutou
3
580
初めてのiOSアプリ開発 ースマホアプリ開発未経験のSEが1人でiOSアプリを開発するまでー
masashi_sutou
0
440
GitHubで社内学習環境を作る!!
masashi_sutou
2
2.8k
Git, GitHubのチュートリアル
masashi_sutou
0
1.3k
Other Decks in Technology
See All in Technology
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
120
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
840
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
210
おい、エージェントを使って終わらせろ
nwiizo
0
140
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
630
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
370
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
2.8k
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
680
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
760
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.3k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.3k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
The browser strikes back
jonoalderson
0
1.7k
Six Lessons from altMBA
skipperchong
29
4.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Code Reviewing Like a Champion
maltzj
528
40k
KATA
mclloyd
PRO
35
15k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Transcript
売上と開発環境を 同時に改善するために Perl Webアプリケーションを どのようにリプレイスするか YAPC::Kyoto 2023 try/catch on 2023/3/19
1 1
自己紹介 須藤将史(masashi-sutou) @kurotyann9696 に20年入社、22年5月から取締役CTO Perl歴は約1年、以前はモバイルアプリの開発担当 先月、第一子が産まれたのでオンラインでYAPC初参加 バーチャル リアル 2 2
会社と事業の紹介 SNS/マッチング/ライブ配信の を運営 YYCは2000年開始で当初はライブドアやLINEが運営 現在は親会社から22年5月に独立して新たなスタート エンジニアは6名と業務委託5名の11名(会社は40名ほど) 3 3
Web/iOS/Androidでサービスを展開 iOSとAndroidはFlutterで開発 インフラはAWSで構築してTerraformで管理 今日はWebとServerをどのようにリプレイスしてるか話す 4 4
段階的なリプレイスを実施中 5 5
リプレイスの背景とYYCに求められること 成長の余地がまだあると経営判断している 施策検証や機能追加を速度を落とさず継続したい 開発の速度や手段の妨げになる負債を減らしたい 6 6
要は、売上と開発環境を同時に改善したい 7 7
どのような手段がありえるのか 2022年4月に検討を開始した 8 8
4月時点のCTO(自分)の状況と考え Perlは未経験でした CTO就任前は別事業の担当でYYCの理解が不十分な状態 そこで2つの調査から開始 1. 他社のPerlの改善事例を調べる 2. YYCのWebとServerの技術課題を調べる 9 9
事例の分類 1. リアーキテクチャ系 アーキテクチャの構成を改善する事例 2. リプレイス系 構成だけでなく別言語に移行する事例 3. リファクタリング系 仕様や振る舞いをあまり変えずに改善する事例
10 10
リアーキテクチャ系 livedoor Blog 本当にあったレガシーな話 YAPC::Asia Tokyo 2013 http://yapcasia.org/2013/talk/show/b262abd0-c77c-11e2-be2e- 7ec06aeab6a4 未だ現役なPerl5.8
& MySQL4.0とどう戦うか? LINE DEVELOPER DAY 2019 https://logmi.jp/tech/articles/322236 11 11
リプレイス系 LINEポイントクラブ 8年続くPerlプロダクトをKotlinに書き換えた話 https://linedevday.linecorp.com/2021/ja/sessions/157/ https://logmi.jp/tech/articles/326685 12 12
リファクタリング系 その1 ぼくらの甲子園!ポケット - 面白法人カヤック 6年続いているサービスのPerlのバージョンを5.16か ら5.30へと今にもアップデートさせようとしている https://techblog.kayac.com/koshien-pocket-perl-5.16-to-5.30 はてなブログ はてなブログPerl
5.28.1化への道 https://developer.hatenastaff.com/entry/2018/12/22/173000 13 13
リファクタリング系 その2 ECナビ - CARTA HOLDINGS (元VOYAGE GROUP) 動的解析を利用し、実働6日でレガシーコードを1/3削 った話(Perl編)
https://techblog.cartaholdings.co.jp/entry/2020/05/07/120000 『事業をエンジニアリングする技術者たち − フルサイクル開発者がつ くるCARTAの現場』ラムダノート 2022/8/8 これを知ったのが今年(自分の調査が甘かった ) 14 14
YYCのWebとServerの技術課題 Perl/フレームワーク/ミドルウェアの多くがEOL WebとServerが密結合でAPI駆動で開発しづらい 静的解析のサポートが無くレビューコストが高い cpanfileがなくモジュールの追加や更新が面倒 一部のテストが動作していない 15 15
Perlは技術課題なのか Perlは年々、開発者や手段(SDKなど)が減っているの は事実で課題ではある しかし、言語を課題にするとPerlをゼロに近づけないと 課題が解決しないことになる まずPerlで解決が難しい課題を見つけてから、その後に 手段を考えることにした 16 16
調査結果から段階的なリプレイスへ 似た課題を持つ他社は数年かけて改善、苦労してる リアーキテクチャや別言語の移行は成果がいつ得られる か予想が難しかった Perlの後方互換性を活かせば使えるコードを残して検証 や後戻りがしやすい 計画中の施策を止め、チームを改善に集中させる仕組み が整ってなかった 17 17
モダンなPerlで新環境(v2)を用意して 段階的に新環境へリプレイスできる 仕組みをCTO室がつくることにした 18 18
Strangler (Fig) Applications 新しいコードで古いコードを包んで徐々に新しいコード に置き換える手法 ロードバランサ(ALB)で画面パスごとに段階的に画面 や機能をリプレイス YYCではDBへの副作用がない、データの参照しかない画 面からリプレイスを試みました https://martinfowler.com/bliki/StranglerFigApplication.html
19 19
新しいコードで古いコードを包む 20 20
古いコード(v1) ≒ O/Rマッパーは活かす 21 21
ロードバランサ(ALB)で段階的にリプレイス https://paulhammant.com/2013/07/14/legacy-application- strangulation-case-studies/ 22 22
DBは共通でリプレイスしない 23 23
DBは共通でリプレイスしない 24 24
ゴールは全コードのリプレイスではない リプレイスを理由にビジネスは止められない v1のリファクタリングで改善できる課題もある リプレイスは将来の課題解決の手段を増やすため v1とv2の両方でプロダクトに何が必要で不要か見極める 25 25
現状のv1とv2 - ソフト面 26 26
git-of-theseus - 2012年 ~ 現在 27 27
1年以内のコードが大きく変化 28 28
コードの新陳代謝や減価償却 v1は2012年のコードが10年で半分になる速度で減少 去年は直近2年分のコードの割合が大きく変化 新機能の追加、不要コードや不要機能の廃止 去年のコードが全体の2割ほどまで増加した 価値あるコードとそうでないコードの整理が課題 29 29
最後に サービスの施策と運営を止めずに開発環境を改善したい リプレイスは新環境で段階的に後戻り出来る構成にした 今後の課題は... v1の不要なコードや機能をどう効率よく消すか v1とv2の認知負荷を抑えてどうアウトプットを出すか みなさんならどんな手を打ちますか? 30 30
続きはカジュアル面談で! 31 31