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
30年価値を出し続けているPHPプロダクト ── レガシーと向き合い成⻑する戦略
Search
viviON
July 20, 2026
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
30年価値を出し続けているPHPプロダクト ── レガシーと向き合い成⻑する戦略
viviON
July 20, 2026
More Decks by viviON
See All by viviON
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
110
viviON Meets Datadog
vivion
0
20
ハーネスは階層で進化する
vivion
0
74
AI駆動開発で 「速くなった」のに、 なぜ評価に悩むのか
vivion
0
120
Figma MCPを活用するためのデザインハンドブック
vivion
8
19k
我々は「庭師」。市場におけるviviONサービスのあり方
vivion
0
770
アプリ体験を統一するデザインポリシーの策定と、チーム連携の実践【Spectrum Tokyo Meetup #20】
vivion
0
860
同人音声のための、 最高の視聴体験を求めて【サブカル×デザインMeetUP!】
vivion
0
1.3k
サービスピボット時におけるデザイナーの役割
vivion
2
2.6k
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
220
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Claude Code のすすめ
schroneko
67
230k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
The Spectacular Lies of Maps
axbom
PRO
1
860
Crafting Experiences
bethany
1
220
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Unsuck your backbone
ammeep
672
58k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
190
Transcript
PHP CONFERENCE 2026 / SPONSOR SESSION 30年価値を出し続けているPHPプロダクト ── レガシーと向き合い成⻑する戦略 |
藤⽥ 泰三(技術戦略室)
⾃⼰紹介 藤⽥ 泰三 株式会社viviON 技術戦略室 シニアマネージャー 2011年⼊社。DLsiteの決済、認証認可を中⼼にバックエンド開発に従事 基盤開発・SRE・データエンジニアの各チームを経て、現在は全社の技術戦略を担当 技術負債の棚卸と返済計画、AI駆動開発の全社導⼊を推進中 好きなエンタメ作品:銀河英雄伝説、スタートレック
1
01 viviONについて 本⽇の流れ 02 30年で積み上げた資産と負債 03 価値の維持と負債解消を両⽴する戦略 3
01 viviONについて
PURPOSE ユーザーとクリエイターが楽しみながら、 幸せに⽣きていける社会にする 5
viviONグループは、30年続くサービスを中⼼に2次元コン テンツの⾯⽩さを届ける会社です 1996 DLsiteの前⾝サービス開始 パソコン通信時代、”猫⽿”好きが交流する場を作ろうとして集まったのがはじまり 2001 に名称変更 同⼈コンテンツダウンロード販売事業を開始 現在 グループ
幅広いエンタメ事業を展開 6 © あおぎり高校 / viviON Inc.
toCサービスを中⼼に 1,800万ユーザーをPHPで⽀える 2025年度 639 億円 2024年度 ユーザー数 1,800 万 viviONグループ全体のユーザー数
2023年度 529億円 562億円 30期以上連続で前年⽐の売上を更新 DLsiteの他、様々なサービスをPHPが⽀えています 7
02 30年で積み上げた資産と負債
DLsite本体は Mojavi + Smarty 20年ほど前に⼤規模なリプレースを⾏ったあと、フレームワークを変えずにサービスを提供中 PHPのコード規模 10,696 ファイル 284万
⾏ 1リポジトリに フレームワーク本体 4 サブシステム が同居 89 ファイルを ⾃前保守 9
Mojaviとは、PHP創世期のMVCフレームワーク Struts(Java)に影響を受け2003年に誕⽣。後のSymfonyにも影響を与えた系譜の⼀つ Struts 影響 Mojavi 影響 Symfony Java / MVCの源流
2003年 / PHP MVC 後年の主要FWへ 10
Mojavi3でPHP5に対応も、開発が終息 PHP5.6まではerror_reportingをoffにすれば動作。パッケージ管理はPEAR 当時の作法が、いまも痕跡として残る 6 ファイルに error_reporting(0) が現存 211 ファイルに PEAR参照
が現存 11
フレームワークごと保守が必要 PHP7以降では動作しないため、フレームワーク⾃体を⾃分たちで修正して対応 390⼈⽇ PHP 5 PHP 7 PHP
8.2 PHP7→8 バージョンアップ⼯数 phpcompatibilityで機械検出を併⽤ 12
取り扱うコンテンツは MAGからASMRまで 古い形式を⽀えるコードは、今もコードベースに残り続ける 1990年代 現在 MAG形式 / フロッピー 18
種 15 ⾔語 167 ファイル 歴代DRM⽅式 対応ロケール ASMR対応の⾔及 ASMR / ハイレゾ⾳声 13
ファイルサイズは30年で1,000倍も、商品価格は変わらず 単価は同じまま、1,000倍の転送量を⽀える配信基盤の必要性に迫られる 当時 数百 KB 現在 数 GB 1,000
倍 の転送量 価格を変えずに届け続けることが、ユーザーとクリエイターへの価値 14
試⾏錯誤がコードベースに蓄積 提供終了した機能や決済定数62個などが、コードベースに層のように折り重なる 6 2 1 コード 11・33・35 は⽋番(「35は⽋番」とコメントに明記) 2 「消して良いと思う」というコメント付きの定数が現存
3 同じ決済⼿段が⼆重定義(例:EDY 3 と EDY_MICROSERVICE 43) 決済定数 コードに残る考古学 15
書いた⼈がすでにいないコードも多数存在 @author コメントのメールドメイン集計。現社名のドメインはわずか1件(ドメインのみ・個⼈名なし) 初期開発会社 コピペにより増殖 849 @eisys.co.jp 旧ドメイン 511 260超
開発ベンダー各社 @eiys.co.jp タイプミスまで化⽯化 3 @vivion.jp 現ドメイン 1 //2008/08/26 一時的に復帰させる。いずれ必ず削除する。 16
独⾃のデプロイパイプラインに暗黙のルール 運⽤ノウハウがコメントとしてだけ残り、⽂書化されていないルールが存在する コード ビルド 「読み替えてはいけないパターンの存在が後から判明 したので、そいつらを除外する」 配信
ルールはコメントの中にだけある 「先頭以外なら読み替え実⾏するように変更(藤⽥さ ん依頼)」 .始まりは更新ツールでリリースされません 17
Mojavi+Smartyが消せないのは、資産だから 枯れた1万超のPHPファイル・284万⾏が売上を上げ、全⾯刷新のリスクがリターンに⾒合わない 全⾯刷新 リスク⼤ / 数年の停滞 VS 動き続ける資産 30期連続増収の実績 枯れたコード
= 検証済みの資産 18
レガシーの難しさは、負債であり資産でもあること 消したいものと守るべきものが、同じコードの中に同居する 負債の顔 資産の顔 TODO など 2,192 件 連続増収 @deprecated
257 箇所 ⽀えるユーザー 最⼤クラス 7,739 ⾏ 30 期 1,800 万⼈ 19
02 価値の維持と負債解消を 両⽴する戦略 20
3年後の事業影響という物差しで判断する 「3年後の事業影響」という共通の物差しで、返済の優先順位を組織で合意する 課題の棚卸し ポーカーで相対評価 技術投資計画へ反映 1 マネージャー・リーダー約10名で、33枚の課題カードをプランニングポーカーで評価 2
評価軸は⼯数ではなく、3年後の影響度(フィボナッチ 1〜21) 3 最⾼スコアは決済・キャンペーンロジックの複雑化 21
守りのアップデートは⼟台から EOLから逃げ切り続けることが⼟台。PHP本体・ミドルウェアへの追随に交渉の余地はない アプリコード 段階的に改善 フレームワーク ⾃前保守で対応 PHP本体 追随必須 下の層ほど、
後回しの コストが膨らむ 22
コードベースはコンパクトに保つ 消せるものは消し、切り出せるものは切り出す 決済系をマイクロサービスへ 切り出し @deprecated で段階的廃⽌を 進⾏中
提供終了機能の削除を継続 gRPC連携 54 ファイル 257 箇所 層を薄く保ち続ける 23
運⽤改善への投資で、分割の選択肢を買う ⾃動化・SaaS活⽤などの運⽤改善が、将来の分割・刷新の選択肢を広げる 運⽤改善 ⾃動化・SaaS活⽤ システムあたりの 運⽤コスト削減 同じコストで複数運⽤できる 分割・切り出しの
選択肢が増える 運⽤改善は前提投資 24
レガシーとモダンの同居で知⾒が貯まる ディレクトリがそのまま技術の地層。新旧が同じ本番で動くから、⽐較しながら学べる 新コードベース 6.1万⾏ / Vue / gRPC Mojaviモジュール 40万⾏
独⾃ライブラリ 65万⾏ 旧DBモデル(⾃動⽣成) 86万⾏ 境界線を引いて、 新しい層を上に積む strict_types宣⾔は全体の 7% ただし新規ファイルでは 100% 25
使えるものはすべて使う モダンな環境で得た知⾒をレガシーへ。DLsiteではLaravelからORMとDIを移植 DLsite本体の composer.json に現存 illuminate/database Laravel 部品だけ移植 エコシステム
Eloquent(ORM) php-di DIコンテナ 26
エコシステムを活⽤する攻めのアップデート エコシステム活⽤の最⼤のブロッカーは、PHPバージョン 同じ composer.json に、年代の異なる依存が同居する elasticsearch 1系 2014年代のクライアントが残存 guzzle 6系・monolog
1系 旧世代のまま illuminate 6系 中間世代 2019 aws-sdk・sentry 最新に追随 最新 2014 旧 27
原則の厳守より、事業の継続 設計原則は知識としては持つべきだが、動く資産を作り替えてまで厳密にやりすぎない 教養として持つ DRY 私たちの結論 KISS YAGNI デザインパターン PoEAA DDD
30期連続増収の資産を⽌めてまで、 厳密に従わせない 28
ただし、ドメイン知識の流出だけは致死の病 ドメインモデル貧⾎症は、どの階層で起こっても連鎖的に広がる 同じ病が、階層を変えて再発する 最も致死的 メソッド クラス
モジュール サービス間 29
AI駆動開発は、レガシー借⾦の徳政令になりうる 枯れて安定した⼟台があるからこそ、AIによる仕様化・分割・改修を安全に速められる レガシー資産 枯れて安定 30年分の仕様が 埋まる AI 仕様化・分割補助
改修の ⾼速化 借⾦の帳消しへ 安全に返済を加速 30
まとめ ★ 価値のあるシステムとは 技術者にしか出来ないこと 古くてもユーザーに愛され、 稼げるシステムが強い 価値のあるシステムを 5年、10年後も維持すること 「新しい技術に挑戦するだけ」 になるよりも魅⼒的
システムを⽀えるのは 「技術⼒」と「組織⼒」 31
価値を引き継ぎ次の層をモダンに積む。 ここでしかできない開発、 ⼀緒にやりましょう! viviON エンジニア採⽤ 32
⾮公式アフターイベントやります! connpass 33