Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ご...

Avatar for nero15 nero15
April 10, 2026

10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話

スポーツブル(sportsbull.jp)は10年以上運用されてきたPHPベースのレガシーシステム。増え続ける技術的負債に向き合い、Next.js + GCP(Cloud Run / CloudFront)へのフルリプレイスを決断しました。本セッションでは、Claude Codeを開発の中心に据え、コードの90%以上をAIで生成するという大胆なアプローチでどのようにリプレイスを進めたのかをお話しします。レガシー刷新とAI活用の両方に興味がある方におすすめです

Avatar for nero15

nero15

April 10, 2026

Other Decks in Programming

Transcript

  1. ABOUT ME 自己紹介 法島 拓哉 Takuya Houshima 株式会社運動通信社 開発部 ROLE

    開発部マネジメント / 採用 / AI活用推進 STACK PHP(10y+) / Go / Next.js / AWS・GCP 1 新卒からWebエンジニアとして従事し、 2022年5月に運動通 信社に入社 2 PHP (10年超) を中心に、直近は GolangとNext.jsをメインに アプリケーション開発を行っています。 開発部のマネジメント、エンジニア採用人事も担当 3 最近は社内の AI推進でClaude Codeのスキルを量産中 法島拓哉 / 運動通信社 2 / 19
  2. COMPANY 株式会社 運動通信社 VISION 日本を、世界が憧れるスポーツ大国にする。 「みる」 SportsBull 日本最大級の スポーツ動画配信PF 「ささえる」

    ANYTEAM / BUKATSU ONE 学生スポーツ応援 自治体DXソリューション 「する」 mgh (協業) プロアスリートが本気で 作るスポーツギア 設⽉: 2015年5⽉, 正社員: 約70名, 設立から10年第二創業として各領域推進中!! 株主紹介 KDDI Open Innovation Fund, 株式会社電通, 株式会社朝日新聞社, 株式会社博報堂, 株式会社MIXI, 株式会社ABCフロンティアホールディングス, 株 式会社講談社, KSK Angel Fund LLC 法島拓哉 / 運動通信社 3 / 19
  3. HOOK 10年分の技術的負債。 Claude Codeが書いたコード、 9割以上。 Web PHP → Go /

    Next.js App iOS(Swift) + Android(Java) → React Native (Expo) Infra AWS/GCP 継続・最適化 PROGRESS 2月末: FE完全移行 ✓ 4月: アプリ (RN) 進行中 現在: BE / Infra 法島拓哉 / 運動通信社 4 / 19
  4. BEFORE 10年分の負債とは 「秘伝のタレ」化したコードベース 01 外注取っ替え引っ替え 最初の数年、外注会社を次々に乗り換え → 誰も読めない・誰も知らないコードが 現役で稼働中 02

    ロゴ変更で差分100ファイル以上 ページはほぼ毎回0から自作 → 共通化ゼロ。些細な変更が 全ページ改修になる 03 テストなし・ドキュメントなし それぞれの改修にかかる時間が長くなる 法島拓哉 / 運動通信社 5 / 19
  5. TURNING POINT なぜ今やれたか 01 Claude Code の登場 AIが実用レベルに到達。 本気でリプレイスできる道具が手に入った。 02

    創業者直々の GO 「いいよ、やってしまえ」のスタンス。 チャレンジに対して社内のフットワークが非常に軽い。 03 覚悟を決めた 意思を持ってリソース問題に本気で取り組んだ。 (詳細は後ほど) 法島拓哉 / 運動通信社 6 / 19
  6. PRACTICE / 01 AI駆動開発フロー 全体像 STEP 1 調査 ▶ STEP

    2 設計 ▶ STEP 3 実装 ▶ STEP 4 検証 ▶ STEP 5 リリース 全工程でClaude Codeを活用 × 各フェーズで必ず人間がレビュー 法島拓哉 / 運動通信社 7 / 19
  7. PRACTICE / 02 ① 調査フェーズ APPROACH 親リポジトリ構成で横断調査 ▸ BE /

    FE / App はそれぞれ別リポジトリ ▸ 親リポジトリを新規作成 ▸ 配下に全リポジトリをクローンできる構成 ▸ Claude Codeを起点に全リポ横断調査 ▸ 実態をmdドキュメントに落とし込み ▸ 散らばっていた知識を 1箇所に集約 STRUCTURE spbl(root) spbl-web spbl-infra spbl-app ▼ 全体像ドキュメント 現状を把握するための共通言語 法島拓哉 / 運動通信社 8 / 19
  8. PRACTICE / 03 ② 設計フェーズ REQUIREMENT UI / 機能は変更しない ──

    既存機能の完全再現 BOTTLENECK 現状のボトルネック どこが遅い、どこが壊れやすい NON-FUNCTIONAL 非機能要件 性能・可用性・運用性 COST コスト インフラ費・運用費の明示 IDEAL 理想形 保守しやすい構造への組替 → これらを明示した上で インフラ / 言語設計 ╱ 都度、人間がレビュー 法島拓哉 / 運動通信社 9 / 19
  9. PRACTICE / 04 ③ 実装 ── 仕様駆動開発の徹底 実装の前に、必ず md で設計書を作る。

    1 まとまった単位で ページ / エンドポイント単位 できる限りまとまった粒度 → 2 md 設計書を作る 見えていない仕様を完全把握 ドキュメント不足も同時解決 → 3 理想形に組み替える 保守しやすい形を 設計書の段階で確定させる → 4 設計書をもとに生成 Claude Code が実装 人間は設計とレビューに集中 KEY: 「理想の設計図」を必ず通してから、 AIに実装を任せる 法島拓哉 / 運動通信社 10 / 19
  10. PRACTICE / 05 ③ 実装 ── 得意と苦手 ✓ 得意 ▸

    新規APIの作成 ▸ 存在しなかったテストの作成 ゼロから作るタスクは Claude Code と相性が良い。 テストがなかった領域に まとめて防御線を張れた。 ✗ 苦手 ▸ FE の完全再現 ▸ 最初からうまくいく例はほぼゼロ 既存の見た目を1pxレベルで 合わせるのが最大の鬼門。 そのままでは使えず、 調整のループが必須。 → 「AIに何を任せるか」の見極めが鍵 法島拓哉 / 運動通信社 11 / 19
  11. PRACTICE / 06 ③ 実装 ── Playwrightで差分を潰す Playwright × Claude

    Code で 本番との差分を機械的に潰す DIFF スクリーンショット & コード差分 本番環境とのスクショを機械比較 差分が出た箇所を特定 AUTO FIX コンソールエラーは自動修正 出力されたエラーを Claude Code が 読み取って自動で直す HANDS-ON 最後は割り切って手動 どうしても再現できない部分は AIに粘るより手動が早いと判断 法島拓哉 / 運動通信社 12 / 19
  12. PRACTICE / 07 ④ 検証フェーズ ⚠ 最初に決めたこと 死守すべき 4つの機能 01

    ログイン周り 02 決済 03 動画配信 04 集計 HOW TO VERIFY ▸ Playwright + テストコードで 全ページ自動比較 ▸ 細かい差分は 最終的に人間の目視で全ページチェック ▸ それでもわからないレベルの差分は 捨てる 法島拓哉 / 運動通信社 13 / 19
  13. PRACTICE / 08 ⑤ リリースフェーズ ここだけは 全て人間 がやる。 EXECUTE インフラ置き換え

    DB切替、DNS切替、 最終ロールアウトは人間の手で COMMUNICATE 事前告知 & 情報公開 全社に密に共有 リスクと進捗を隠さない MONITOR リリース後の監視体制 数週間は監視を厚く 不具合があれば即対応 法島拓哉 / 運動通信社 14 / 19
  14. AFTER / 本質 一番大きかったのは「意識」の変化 BEFORE 外注 =「誰かが何とかしてくれる」 ── そんな銀の弾丸はない。 →

    AFTER 自分たちのサービス。 自分たちで決めて、自分たちで直す。 覚悟 が決まっているから、 開発を回せるし、前に進める。 法島拓哉 / 運動通信社 15 / 19
  15. JOIN US 一緒に目指しませんか? DEV TEAM VISION IT × スポーツ で

    日本一のチームになる。 RECRUIT チームを一緒に作っていく仲間を 募集しています! https://sportsbull.jp/about/#recruit SCAN → 採用情報 法島拓哉 / 運動通信社 18 / 19