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
僕も、PHPフレームワーク作ってみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kubotak
August 22, 2026
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
僕も、PHPフレームワーク作ってみた
2026/08/22@ShizuokaTECH#2
kubotak
August 22, 2026
More Decks by kubotak
See All by kubotak
ハーネスエンジニアリング白書
kubotak
0
150
Laravelにはdeleted_atがありますけど?
kubotak
2
120
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
2.6k
情報漏洩させないための設計
kubotak
6
3.2k
Svelteコンポーネントの依存関係に秩序を〜
kubotak
0
250
DMARCレポート可視化ツールを SvelteKitで作った話
kubotak
2
710
Superforms本番投入で分かった良さとハマりどころ
kubotak
0
1.1k
Storybookを書くだけでリグレッションテストが 実行される世界へようこそ
kubotak
31
12k
(うまくいった||いかなかった) 技術選定は何を考えていたか
kubotak
1
1.6k
Featured
See All Featured
Between Models and Reality
mayunak
4
470
Embracing the Ebb and Flow
colly
88
5.2k
The Language of Interfaces
destraynor
162
27k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
600
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Docker and Python
trallard
47
4.2k
It's Worth the Effort
3n
188
29k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
How to Ace a Technical Interview
jacobian
280
24k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Transcript
僕も、PHPフレームワーク作ってみた 2026/08/22@ShizuokaTECH#2 Kenjiro Kubota Copyright© M&Aクラウド
Profile 株式会社M&Aクラウド所属 久保⽥ 賢⼆朗 PHP TypeScript kubotak-is kubotak_public https://kubotak.page プロフェッショナルWebプログラミング
Laravel (共著) 愛⽝:⾖柴 Copyright© M&Aクラウド
清⽔出⾝埼⽟在住のWebエンジニアです! 実家は久保⽥⽯材です。よろしくどうぞ。 静岡駅前の家康の台座とか 作ってます。 ※基本的には墓⽯屋 Copyright© M&Aクラウド
polidogさん、多分Relayerの話するだろう‧‧‧ ので、私も同じ話をしよう! Copyright© M&Aクラウド
動機 PHPerなら誰でも⼀度はオレオレフレームワークを作ったことがあるはず。 パーフェクトPHP(本)⽚⼿にフレームワークを写経で作って既存のフレームワーク の有り難みを覚えた当時を思い出し、 「AIにアイデアぶん投げて作らせたらいい感じのフレームワークが作れるのでは?」 Copyright© M&Aクラウド
こんなPHPフレームワークがほしい 私は怠惰なので、ログはフレームワークが勝⼿に記録してほしい スタートアップにかれこれ7年くらい居るのでよく感じているのは、 ログ設計は最初が肝⼼だし、唐突に上場監査のための監査ログの仕組みとか必要にな る! Copyright© M&Aクラウド
あとからログの設計したくない! フレームワークが勝⼿にやってくれ! Copyright© M&Aクラウド
まずは、完成品を紹介 Copyright© M&Aクラウド
名前の由来 Operation中⼼のフレームワークなのでOpsを⼊れたかった。 秘密作戦のことをBlackOpsと呼ぶことを知り、もうこれはアレだ な、と思ったがそのまま命名。中2感あって良さそう Copyright© M&Aクラウド
主な特徴は以下の3つ • Operation • Journal • Headless Copyright© M&Aクラウド
まずはコードを紹介 Copyright© M&Aクラウド
まずはコードを紹介 Operationを実装する Copyright© M&Aクラウド
まずはコードを紹介 アトリビュートでRouteを指定すると、このパスと Operationがルーティングされる=いわゆるコントローラ Copyright© M&Aクラウド
まずはコードを紹介 OperationValueを実装したValueが注⼊される=Request Outcomeを実装したオブジェクトをレスポンスする=Responder Copyright© M&Aクラウド
ちなみにOperationValueはValidationの仕組みも持ってる Copyright© M&Aクラウド
Operationが中⼼のフレームワーク なんでControllerじゃなくてOperationなのか‧‧‧ Copyright© M&Aクラウド
アトリビュートでOperationの戦略を変える このアトリビュートで宣⾔するとコンソールコマンドの⼊⼝になる このアトリビュートで宣⾔するRouteはStatus202を返却してhandle メソッドはJobとしてworkerプロセスで実⾏される Copyright© M&Aクラウド
ぜーんぶOperation Copyright© M&Aクラウド
2つ⽬の特徴「Journal」 JournalはOperationのライフサイクルで発⽣したイベントを記録するログ operation.received Operationを受付した operation.accepted Deferred実⾏をDurableに引き受けた attempt.started Attemptを開始した attempt.succeeded Handlerが成功結果を返した
attempt.failed Attemptが失敗した attempt.retry_scheduled Supervision Policyが次のRetryを予定した operation.completed Operationの最終処理を完了した operation.rejected Validation、Authorization、Business Ruleなどで拒否した operation.failed Retryせず最終失敗にした operation.dead_lettered Deferred Operationを隔離した Copyright© M&Aクラウド
JournalはJSON形式 Operationの実⾏イベント時にこのJSONが記録される。idは UUIDv7で発行され、OperationがDefferd実行や別Operationを 発行した場合 causationIdとして親のOperationIDが設定される ので時系列をつなげて追うことが可能になる。 システムが何時、何を実行したかをフレームワークが勝手に記 録してくれるのであとから監査ログの仕組みを作る必要がない Copyright© M&Aクラウド
Journalに記録してはいけないもの ⽣のパスワード等、Journalとして記録する必要のないものは OperationValueでSensitiveアトリビュートを指定するだけ。 Copyright© M&Aクラウド
アプリが育ったあとに対応するのはめんどくな ログ機能は最初から⼊ってる Copyright© M&Aクラウド
3つ⽬の特徴「Headless」 PHPフレームワークのくせに、Bladeみたいなフロントエンドは提供しません。 RelayerみたいなおしゃれなusePHPとかありません。 HTMLは喋りません。 なのでHeadless。 代わりにTypeScriptのクライアントコードを提供します。 ※Laravel/Wayfinderのアイデアを拝借 Copyright© M&Aクラウド
お好きなJavascript系フロントエンドが使えます php blackops frontend:generateで純粋なTypeScriptのコードを提供するので、フロントエンドは Next.jsでもNuxtJSでもSvelteKitでもなんでもOK Copyright© M&Aクラウド
お好きなJavascript系フロントエンドが使えます php blackops frontend:generateで純粋なTypeScriptのコードを提供するので、フロントエンドは Next.jsでもNuxtJSでもSvelteKitでもなんでもOK Operationを⾃動で読み取り、TypeScriptのクライアントコードと して⽣成する Copyright© M&Aクラウド
お好きなJavascript系フロントエンドが使えます php blackops frontend:generateで純粋なTypeScriptのコードを提供するので、フロントエンドは Next.jsでもNuxtJSでもSvelteKitでもなんでもOK OperationValueの型定義からTypeScriptコードを⽣成するのでプロ パティの型も定義されている Copyright© M&Aクラウド
最近のフロントエンドはJS/TSが鉄板なので丸投げ BlackOpsなだけに、バックエンドの黒⾐に徹します Copyright© M&Aクラウド
つくりかた Copyright© M&Aクラウド
つくりかた AI-DLCのフローを参考に独⾃のフローを構築 Copyright© M&Aクラウド
AI-DLCとは AI-Driven Development Lifecycle(AI駆動開発ライフサイクル)はAWSが提 唱する開発アプローチです。 ⽣成AIを単なる「コーディング⽀援ツール」としてではなく、ソフトウェア 開発の計画から運⽤までの全⼯程を主導する「⾃律的なエージェント」とし て組み込むことが特徴です。 Copyright© M&Aクラウド
従来の開発とAI-DLCの違い 特徴 従来のAI支援(AI-Assisted) AI-DLC(AI-Driven) 主導権 人間(エンジニア) AI(エージェント) 人間の役割 要件定義、設計、コーディング ビジネス意図(
Intent)の伝達、承認 (レビュー) AIの役割 コード補完、特定タスクの自動化 タスクの分解、アーキテクチャ提案、 一気通貫の実装 開発の単位 スクラムであれば、数週間単位の「ス プリント」 数時間〜数日単位の「ボルト (Bolt)」 Copyright© M&Aクラウド
AI-DLCの3つのフェーズ 1. Inception(構想・開始) 人間が「こういうビジネス機能を作りたい」のような意図(Intent)をAIに伝えます。AIはそれを具体的なタスクやユーザース トーリーに分解し、曖昧な点があれば人間に質問(Clarification)を投げます。ここで合意形成を行い、作業単位を定義しま す。 2. Construction(構築) AIがアーキテクチャ設計、ドメインモデリング(DDDなど)、実装、テストコードの生成までを高速で行います。このフェーズは 「ボルト(Bolt)」と呼ばれる極めて短いサイクル(数時間単位など)で反復されます。
人間はAIが提示した設計やコード (ADR:アーキテクチャ決定記録など)をレビューし、 「承認ゲート(Approval Gate)」として機能します。 3. Operations(運用) デプロイ後の継続的改善フェーズです。AIがシステムのモニタリングや障害予測を行い、具体的な改善案やインフラ設定 (IaC)の修正を提案します。人間はそれを承認して次のサイクルへ繋げます。 Copyright© M&Aクラウド
会社ではAI-DLCを実践しているが‧‧‧ 実践しているからこそ、この開発方法は個人開発としてはヘビー (ビジネス要件とかないし・・・) また、ブラウンフィールド(既存実装がある)場合だとAIの出してくる提案やコードを理解しやす いが、グリーンフィールド(ゼロベース開発)は爆発的にコードが増えてもはやレビューできない レベルになる・・・ ※個人の感想 なので、AI-DLCの考え方をベースに個人用に独自のワークフローを組み立て Copyright© M&Aクラウド
つくりかた AI-DLCのフローを参考に独⾃のワークフローを構築 1. 2. 3. 4. 仕様アイデアをAIと壁打ち 確定した仕様はspec/*.mdに残す STATE.mdとTODO.mdでAIに現在の進捗と今後のやることを管理させる オーケストレーションを構築し、指⽰役AIと実⾏AIを分ける
このフローを繰り返すことで機能を拡充していく ※ビジネス課題とか皆無なのでAI-DLCではなく独⾃フローを構築 Copyright© M&Aクラウド
AIとの壁打ちフォーマット 1. AIがdecisions/に連番付きの設計対話ファイルを作成する 2. AIが論点、背景、選択肢、推奨案を記述する 3. ユーザーが各 [ANSWER]ブロックへ回答を記⼊する 4. AIが回答を読み、⽭盾、影響範囲、追加論点を提⽰する
5. 追加質問があれば、同じファイルへ質問と[ANSWER]ブロック を追記する 6. 合意後、AIが[DECISION]と[CONSEQUENCES]を記録する 7. AIが spec/ の該当仕様、README、TODOを決定内容に合わせ て更新する Copyright© M&Aクラウド
全体像 decisions orchestration reports tasks spec STATE.md TODO.md Copyright© M&Aクラウド
全体像 decisions orchestration 仕様アイデアをAIと壁打ちした記録を残す reports tasks spec STATE.md TODO.md Copyright©
M&Aクラウド
全体像 decisions orchestration reports tasks spec 確定した仕様を記録 STATE.md TODO.md Copyright©
M&Aクラウド
全体像 作業AIの進捗管理や作業結果を残す decisions orchestration reports tasks spec 指⽰役AIが作業役AIに渡す資料 STATE.md TODO.md
Copyright© M&Aクラウド
全体像 decisions orchestration reports tasks spec STATE.md TODO.md 現在の進捗と今後のタスクを記録。AIが途中から再 開ができる
Copyright© M&Aクラウド
現在地 • 壁打ちファイルは140ファイルを超えた • 仕様確定ファイルも100ファイルを超えた • ChatGPT Plusプランだとトークンが⾜りずに上位プラン100ドル を使う⽻⽬に、それでも⾜りてない ◦
現在は200ドルプランで運⽤ Copyright© M&Aクラウド
気軽な気持ち出始めたら⽌まらなくなった Copyright© M&Aクラウド
ある程度フレームワークの形になってからサンプルアプリを作らせた • ユーザーの認証‧認可を持つ、掲⽰板アプリ ◦ 初⼿で普通に動くアプリが出てきて感動 • とはいえ、作って初めて分かる微妙な箇所 ◦ configの設定 ◦
認証認可のコードをある程度フレームワーク側に隠蔽したい ◦ artisanのようなCLIがほしい ◦ Seeder...etc Copyright© M&Aクラウド
結構よくできてて脳汁ドパガキ Copyright© M&Aクラウド
おまけ:オーケストレーションの変遷 世代 指示役AI 作業AI やめた理由 初代 GPT5.5-High GLM5.2 OpenCode Goの枠が瞬殺した
二代目 GPT5.5-High GPT5.4-mini 祝GPT5.6リリースで移行 三代目 GPT5.6 Sol-High GPT5.6 Luna-High 200ドルプランで余裕が出たので移行 現在(四代目) GPT5.6 Sol-Max GPT5.6 Luna-Max ※会社ではClaudeCodeを使ってるので個⼈ではあえてCodexを扱っている。OpenCodeのサブス クは流⽯に⾜りなすぎるよ‧‧‧ Copyright© M&Aクラウド
失敗したこと • AI-DLCの簡易版を独自に設計したけど、OpenSpec等のSDD(Spec Driven Development)で良かったんじゃないか? • 雑に作りすぎてMVPとしていたゴールでメジャーバージョンを発行してしまった。(サンプ ルアプリの時点) • このフレームワークで天下を取るぞ!という意気込みは特に無く、「そこにAIがあり、私
はPHPerだから」というゆるい理由で始めてしまったので世の中のエネルギーリソースに 懺悔の気持ちが芽生える Copyright© M&Aクラウド
今後の展望 あんまり考えてないけどやろうと思ってるのは • 最終的にはなんらかアプリを作ってFly.ioに置く • v2まで頑張ろうかな Copyright© M&Aクラウド
今すぐ使えます composerで導入可能です。詳細はドキュメントサイトから https://blackops-php.pages.dev Copyright© M&Aクラウド
echo “thanks watching”; ?> Copyright© M&Aクラウド