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
僕も、PHPフレームワーク作ってみた
Search
kubotak
August 22, 2026
90
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
97
Laravelにはdeleted_atがありますけど?
kubotak
2
110
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
2.3k
情報漏洩させないための設計
kubotak
6
3.2k
Svelteコンポーネントの依存関係に秩序を〜
kubotak
0
240
DMARCレポート可視化ツールを SvelteKitで作った話
kubotak
2
690
Superforms本番投入で分かった良さとハマりどころ
kubotak
0
1.1k
Storybookを書くだけでリグレッションテストが 実行される世界へようこそ
kubotak
31
12k
(うまくいった||いかなかった) 技術選定は何を考えていたか
kubotak
1
1.5k
Featured
See All Featured
Optimizing for Happiness
mojombo
378
71k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Un-Boring Meetings
codingconduct
0
390
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
WCS-LA-2024
lcolladotor
0
800
Writing Fast Ruby
sferik
630
63k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
410
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
Deep Space Network (abreviated)
tonyrice
0
260
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
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クラウド