Slide 1

Slide 1 text

@PHPカンファレンス小田原2026(2026/04/11) プログラミングをするパンダ(@Panda_Program) レガシーPHP転生 〜父がドメインエキスパートだったので DDD+Claude Codeでチート開発します〜 1

Slide 2

Slide 2 text

2 © 2012-2025 BASE, Inc. 自己紹介 ● 所属: BASE株式会社(プロダクトリード) ○ フロントエンドもバックエンドもPjMもやります ○ 2025年は管理画面デザインリニューアルPJのチームリードをしてました ○ 直近はカート領域を担当してます ● 激推しツール: Heptabase ● 激推し漫画: さむわんへるつ、カグラバチ ● 活動 ○ 2025年の執筆 ■ 技術書典18でチーム開発の書籍を自費出版(全85P)→ ■ 2026年は執筆抑えてますが、またどんどんやりたい プログラミングをするパンダ(X: @Panda_Program)

Slide 3

Slide 3 text

© 2012-2026 BASE, Inc. ことの始まり 33 なぜ「なろう系」「異世界転⽣」のフォーマットを借⽤したか

Slide 4

Slide 4 text

© 2012-2026 BASE, Inc. ことの始まり 44 約10年前に⼀度、ソフトウェア開発を頼まれていた ⾃分はまだ駆け出しだったので断った → ⽗はクラウドソーシングの会社を通じて開発を依頼

Slide 5

Slide 5 text

© 2012-2026 BASE, Inc. ことの始まり 55 2025年12⽉の帰省時に「作ってくれないか」とまた頼まれた ⾃分も様々な経験を積んだ上で、Claude Code があるので引き受けた ⾃分 Claude Code ⽗

Slide 6

Slide 6 text

© 2012-2026 BASE, Inc. ことの始まり 66 「さいきょうのなかま」とともに、 レガシーPHPのソフトウェアを転⽣させるチート開発へ 超絶AI その道30年の エキスパート ⾃分

Slide 7

Slide 7 text

© 2012-2026 BASE, Inc. ことの始まり 77 役割分担 ⽗: 要望、現⾏のソフトウェアとの⽐較 私: 要件定義‧仕様決め‧技術選定‧設計‧コードレビュー AI(Claude Code): 設計‧実装 週に⼀度30分から1時間の打ち合わせ (実質的にスプリントレビュー‧スプリントプランニング)

Slide 8

Slide 8 text

© 2012-2026 BASE, Inc. ことの始まり 88 おことわり (プロポーザルの内容との違い) ● 過去に作ったソフトウェアの改修かと思ったら「同じ機能はほしいけど、 新しく作り直していい」と⾔われたのでレガシーからの移⾏ではなくなり ました(昨年12⽉のプロポーザル提出時は改修だと考えていた󰢛) ● 現⾏の技術スタック Slim Framework + PHP-DI ではなく、Symfony + Doctrine ORM(後述) ● この数ヶ⽉で起きたことは今⽇全てお伝えできません。「これはみんなに も⾯⽩いと思ってもらえるであろう」ことをピックアップしてご紹介しま す。興味ある⽅は懇親会で聞いてもらえればと思います

Slide 9

Slide 9 text

© 2012-2026 BASE, Inc. レガシーPHP転生 99 1 2 3 父親とのLINEが汚染された Agentic Coding の落とし穴に 全部落ちた まとめ

Slide 10

Slide 10 text

© 2012-2026 BASE, Inc. レガシーPHP転生 10 10 1 2 3 父親とのLINEが汚染された Agentic Coding の落とし穴に 全部落ちた まとめ

Slide 11

Slide 11 text

© 2012-2026 BASE, Inc. レガシーPHP転生 11 11 1 2 3 ドメインエキスパートとの協業 Agentic Coding による ゼロイチ開発の理想と現実 まとめ

Slide 12

Slide 12 text

1. ドメインエキスパートとの協業

Slide 13

Slide 13 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 13 13 ユーザーの権限に関する質問をした

Slide 14

Slide 14 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 14 14 ⽗親とのLINEが汚染された ドメインエキスパートと協業する 保育園‧こども園‧幼稚園向けの職員‧園児の管理システムを作る

Slide 15

Slide 15 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 15 15 ⽗親とのLINEが汚染された ドメインエキスパートと協業する 保育園‧こども園‧幼稚園向けの職員‧園児の管理システムを作る

Slide 16

Slide 16 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 16 16 ちゃんとした仕様が返ってきた 「システム開発依頼、チョットデキル」か?

Slide 17

Slide 17 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 17 17 次にドメインに関する質問をしてみる

Slide 18

Slide 18 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 18 18 ⽗親とのLINEが汚染された ドメインエキスパートと協業する 保育園‧こども園‧幼稚園向けの職員‧園児の管理システムを作る

Slide 19

Slide 19 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 19 19 ⽗親とのLINEが汚染された ドメインエキスパートと協業する 保育園‧こども園‧幼稚園向けの職員‧園児の管理システムを作る

Slide 20

Slide 20 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 20 20 本物の「ドメインエキスパート」だ!

Slide 21

Slide 21 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 21 21 ⽗親とのLINEが汚染された ドメインエキスパートと協業する ちなみに 認可定員 = ⾃治体が定めた形式上の受け⼊れ上限数 利⽤定員 = 保育施設が施設状況や職員数に応じて   設定する実際の受け⼊れ上限数

Slide 22

Slide 22 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 22 22 保育施設ドメインの概念‧⾔葉を知った

Slide 23

Slide 23 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 23 23 保育施設の業務を知った 「園児の情報を登録する機能が欲しい」 → 入力するためのデータはどこから来る? → 背景にはどのような業務がある?

Slide 24

Slide 24 text

© 2012-2026 BASE, Inc. 24 24 保育施設の業務を知った 紙の「児童票」を中心とした業務フロー 保護者: 「児童票を記入する」「保育施設に提出する」 施設職員: 「ファイリングする」「連絡先等を参照する」 1. ドメインエキスパートとの協業 ソフトウェアは、 ● 保護者による児童票の記入・提出 ● 職員による児童票の保管・参照 という業務を効率化できる 引用: フレーベル館オンラインショップ https://ec.froebel-kan.co.jp/shop/g/gB-7506602/

Slide 25

Slide 25 text

© 2012-2026 BASE, Inc. 1. ドメインエキスパートとの協業 25 25 現場には、ただのCRUD以上のものがある。 ソフトウェアに閉じずに、 業務ドメインと向き合う重要性を確認した (DDDの意義)

Slide 26

Slide 26 text

2. Agentic Coding による ゼロイチ開発の理想と現実

Slide 27

Slide 27 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 27 27 なろう系と⾔えば

Slide 28

Slide 28 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 28 28 「俺、何かやっちゃいました?」

Slide 29

Slide 29 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 29 29 やっちゃってた むしろ やらかしてた

Slide 30

Slide 30 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 30 30 4コマ漫画⾵の紹介 4連発⾏きます

Slide 31

Slide 31 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 31 31 早すぎるプロトタイプ作成 (2025/12) 「帰省から帰宅後、1週間で  プロトタイプを2パターン   作成!(HTML + CSS)」 「こんなに早く出来んの?めっ  ちゃ良い!使いやすそう。  採⽤!」 1ヶ⽉後 「表側の進捗はなし。裏側を作る  のに時間がかかってて...」 「進めてるって信じてるぞ」 (⽬には光がない) 理想: 爆速プロトタイプ 現実: 技術選定‧モデリング‧ インフラ構築 etc.

Slide 32

Slide 32 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 32 32 作りすぎたガードレール (2026/01) 「コーディングルールとし て、Skill 配下にサンプルコー ドを配置すると良いんだな」 「コノパターンハSkill + Reference ニシテ繰リ返シ参 照シマス」 「Skill内ノコーディングスタイル指 定ガ100パターン以上ダ(混乱)。 ルールガ多スギテ守リキレマセン」 「『コーディングルールを守ってる かチェックするSkill』まで作ったけ ど、厳守させる必要もないよな...」 理想: コーディングルールで    統⼀的なコードベース 現実: 過剰なチェック

Slide 33

Slide 33 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 33 33 作りすぎたガードレール (2026/01)

Slide 34

Slide 34 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 34 34 作りすぎたガードレール (2026/01) ex. 「Entityにはただ のsetterを作らない」 → 全部で150以上の ミニルール

Slide 35

Slide 35 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 35 35 崩壊した実装フロー (2026/01) 「各レイヤーの実装⽤のSkillを 作ったぞ。これを順番に実⾏す るだけで実装が完了する!」 「Entity, Service, Action, Router, Twig デ Skill ガ分カレ テイテ、実装ガ明確デス!」 「/entity, /action create, /action read, /action update, /twig create-form, /twig list...実装の終わり を⾒張って次のスキルを実⾏。PCか ら離れられないよ...」 「実装シタカラレビューシテ。次ノ  指⽰クレ」    (注)この時はAgent Team 機能 がなく、     ウォーターフォールしか出来なかった 理想: 各レイヤーの実装は    対象のSkillを呼び出すだけ 現実: 延々と続くSkill呼び出し

Slide 36

Slide 36 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 36 36 崩壊した実装フロー (2026/01)

Slide 37

Slide 37 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 独⾃パターンでコンテキストを⼤量消費、AIの性能悪化へ (2026/02) 理想: 独⾃パターンで    ライブラリ依存を減らす 現実: 独⾃パターンのロードでコンテキ   ストウィンドウを消費、性能悪化 「Slim を使って依存関係を減 らす。フルスタックフレーム ワークは不要!独⾃のパター ンでSimpleに作る!」 「パターン化サレテイルナラ ナンデモ再現デキマス!」 「ワタシハ知ラナイパターンデス。 Skillノルールヲ参照シマス」 「毎回スキルとコードベースの調査 だけで100k消費だ。compact されず に、実装完了までいけるかな...?」 (注)この時は subagent がなく、調査等全てがメイン コンテキストだけで実施されていた

Slide 38

Slide 38 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 38 38 独⾃パターンとはどんなものだったのか “Parse, Don’t Validate”を実践。 form の⼊⼒を VO or Error Message にする

Slide 39

Slide 39 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 39 39

Slide 40

Slide 40 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 40 40 独⾃パターンでコンテキストを⼤量消費、AIの性能悪化へ (2026/02) フルスタックフレームワークの採⽤を決めた

Slide 41

Slide 41 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 41 41 技術スタック

Slide 42

Slide 42 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 42 42 現在、この不具合は解消しております

Slide 43

Slide 43 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 43 43 1. 早すぎるプロトタイプ作成 この不具合は現在、解消しております → 「いつ動く」という期待値調整を丁寧にした

Slide 44

Slide 44 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 44 44 1. 早すぎるプロトタイプ作成 2. 作りすぎたガードレール この不具合は現在、解消しております → 「いつ動く」という期待値調整を丁寧にした → phpstan-symfony の導⼊で独⾃ルール削除 (PHPUnit + E2Eテストもあるよ)

Slide 45

Slide 45 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 45 45 1. 早すぎるプロトタイプ作成 2. 作りすぎたガードレール 3. 崩壊した実装フロー この不具合は現在、解消しております → 「いつ動く」という期待値調整を丁寧にした → phpstan-symfony の導⼊で独⾃ルール削除 (PHPUnit + E2Eテストもあるよ) → Design Doc(+ ADR)作成後に実装するフローへ

Slide 46

Slide 46 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 46 46 1. 早すぎるプロトタイプ作成 2. 作りすぎたガードレール 3. 崩壊した実装フロー 4. ビッグリライト この不具合は現在、解消しております → 「いつ動く」という期待値調整を丁寧にした → phpstan-symfony の導⼊で独⾃ルール削除 (PHPUnit + E2Eテストもあるよ) → Design Doc(+ ADR)作成後に実装するフローへ → モデルがSymfonyを学習済みなので、   コンテキスト量は⼤幅削減!   websearch で最新情報ゲット

Slide 47

Slide 47 text

© 2012-2026 BASE, Inc. 2. Agentic Coding によるゼロイチ開発の理想と現実 47 47 今はスムーズに開発できています

Slide 48

Slide 48 text

3. まとめ

Slide 49

Slide 49 text

© 2012-2026 BASE, Inc. 3. まとめ 49 49 ● AIで無双は幻想 ○ 実装期間が圧縮された結果、本来なら数ヶ⽉後に表⾯化 する問題が数⽇後に噴出する世界 ○ ただし、失敗の過程は成⻑の過程。AI利⽤に⼀気に習熟 した ● ソフトウェアが対象とするドメインと使ってくれるユー ザーに向き合って着実に作ろう ○ デキるエンジニアが今までやってきたことの延⻑ ○ SaaS は死なないと思う

Slide 50

Slide 50 text

© 2012-2026 BASE, Inc. 3. まとめ 50 50 ● アクセス数はそれほど多くないのにハイスペックなレンタルサーバー ● レンサバのエディタ上で開発されてきたPHPコード(1ページ1PHPファイル、Git 管理なし、フレームワークなし、ORMなし、PHPUnitなし) ● ⼀事業所につき1データベース(セキュリティ⾯が考慮された結果)でDBのマイ グレーションが⼤変 etc. ● AI熱中(AI依存)からの軽い燃え尽きを経験 & 復活 ● ALPSも活⽤したりした 改修ではなくゼロからの作り直しでよかった... (ただし、価値を⽣んでいるコードであり、リスペクトを忘れてはいけない) 今回盛り込めなかったこと (現⾏ソフトウェアのレガシー⾯)

Slide 51

Slide 51 text

© 2012-2026 BASE, Inc. 3. まとめ 51 51 何より、⽗親との会話が増えた ⽬に光が戻った →

Slide 52

Slide 52 text

© 2012-2026 BASE, Inc. 3. まとめ 52 52 ここで⼀句

Slide 53

Slide 53 text

© 2012-2026 BASE, Inc. 3. まとめ 53 53 あなたの川柳/俳句を画像化 | kokun https://kokun.herokuapp.com/

Slide 54

Slide 54 text

付録

Slide 55

Slide 55 text

© 2012-2026 BASE, Inc. 付録 55 55 Design Doc(+ ADR)作成後に実装するフロー ⽣産性アップ: 設計ドキュメント作成 → ドキュメントレビュー → コード出⼒ → コードレビュー → 動作確認 → マージ

Slide 56

Slide 56 text

© 2012-2026 BASE, Inc. 付録 56 56 Design Doc(+ ADR)作成後に実装するフロー ドキュメントレビューのために⾃作ツールを使っている

Slide 57

Slide 57 text

© 2012-2026 BASE, Inc. 付録 57 57 Special Thanks @meihei