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
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-...
Search
Ryo Tomidokoro
May 24, 2025
Technology
9
13k
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
TSKaigi2025の登壇資料です
Ryo Tomidokoro
May 24, 2025
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
14k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
180
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
50k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
10k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4.3k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
5.4k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
5
2.4k
PHPで学ぶ Session の基本と応用 / web-app-session-101-2024
hanhan1978
13
6.1k
Other Decks in Technology
See All in Technology
TypeScript入門
recruitengineers
PRO
35
11k
退屈なことはDevinにやらせよう〜〜Devin APIを使ったVisual Regression Testの自動追加〜
kawamataryo
4
1.1k
役割は変わっても、変わらないもの 〜スクラムマスターからEMへの転身で学んだ信頼構築の本質〜 / How to build trust
shinop
0
150
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
430
Webアクセシビリティ入門
recruitengineers
PRO
3
1.5k
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
430
DDD集約とサービスコンテキスト境界との関係性
pandayumi
2
200
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
110
Function Body Macros で、SwiftUI の View に Accessibility Identifier を自動付与する/Function Body Macros: Autogenerate accessibility identifiers for SwiftUI Views
miichan
2
150
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
0
140
シークレット管理だけじゃない!HashiCorp Vault でデータ暗号化をしよう / Beyond Secret Management! Let's Encrypt Data with HashiCorp Vault
nnstt1
2
130
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
0
240
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Bash Introduction
62gerente
614
210k
Music & Morning Musume
bryan
46
6.8k
How to train your dragon (web standard)
notwaldorf
96
6.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
185
54k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.5k
Why Our Code Smells
bkeepers
PRO
339
57k
Six Lessons from altMBA
skipperchong
28
4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Gamification - CAS2011
davidbonilla
81
5.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Transcript
フロントエンドがTypeScriptなら、 バックエンドはPHPでもいいじゃない @hanhan1978 TSKaigi 2025
@hanhan1978 名前 富所 亮 所属 株式会社カオナビ CTO室 エキスパート BackEnd Re-architecturing
Team (BERT) Blog https://blog.hanhans.net Podcast https://podcasters.spotify.com/pod/show/yokohama-north-am 2
このトークなんなの?
バックエンドに興味をもってもらう
バックエンドに興味をもってもらう PHPの話はオマケ
例えば、弊社の場合
PHPのフルスタックフレームワーク製 Multi Page Application + jQuery
アプリケーション構成の変遷 既存機能 MPA (jQuery) 新規機能 SPA (React) 一部はSPAにリプレース 既存アプリケーションは APIとして利用
チーム構成の変遷 バックエンドエンジニア多数 フロントエンドエンジニアがじわじわ増加 職能単位のチーム プロジェクト単位の混成チーム
フロントエンドエンジニアの状況 • React部分の実装がメイン • UI周り、デザインシステムのメンテ • アクセシビリティの対応
フロントエンドエンジニアの状況 • React部分の実装がメイン • UI周り、デザインシステムのメンテ • アクセシビリティの対応 バックエンドへの関与がほぼ無い
というわけで
バックエンドに興味をもってもらいたい (切実)
目次 1. フロントエンドとは?バックエンドとは? 2. バックエンドは何で必要なのか? 3. システム構成例 4. フロントエンドとバックエンドは分離すべきか? 5.
バックエンドの技術選定 6. あなたにPHPをおすすめする100の理由
1. フロントエンドとは?バックエンドとは?
昔、フロントエンドエンジニアは いなかった
バックエンドエンジニアが JavaScriptも書いていた 今ほどリッチな要素が求められていなかった
フロントエンドはいつ生まれた?
2010年代前半説 エッジはフロントエンドなのか? バックエンドなのか? について考えてみる - Speaker Deck https://speakerdeck.com/aiji42/etuzihahurontondonanoka-batukuendonanoka-nituitekao-etemiru
昔は革命だったインクリメンタルサーチ
WEB+DB PRESS • 2006年10月 Vol.35 Ajaxの定石 • 2010年12月 Vol.60 jQuery実践入門
• 2011年8月 Vol.64 JavaScript最前線 • 2012年4月 Vol.68 Node.js実践入門
こうしてフロントエンドは 高度・複雑化して専門分野として確立
このような歴史的経緯があるため それぞれの強みが異なる
バックエンドエンジニアの強み • インフラ • データベース • サーバー構築 • CI/CD
バックエンドエンジニアの強み • インフラ • データベース • サーバー構築 • CI/CD ※単純にこれらの分野が職域だという話
...
フロントエンドエンジニアの強み • HTML/JS/CSS • アクセシビリティ • UI/UX
フロントエンドエンジニアの強み • HTML/JS/CSS • アクセシビリティ • UI/UX 変化が激しく、キャッチアップも大変。 バックエンドまで領域を伸ばせる人は、そう そういない
2. バックエンドは何で必要なのか?
BaaS, IDaaSがあれば不要なのでは?
バックエンドがないとつらいこと • セキュリティの担保 • 非同期処理・ジョブ実行 • ビジネスロジックの隠蔽 • 外部システム連携
バックエンドがないとつらいこと • セキュリティの担保 • 非同期処理・ジョブ実行 • ビジネスロジックの隠蔽 • 外部システム連携 時間のかかること、秘密にしたいこと
BaaS, IDaaSについて • メリット・デメリットの慎重な検討が必須 • アプリケーションの性質や運用体制によって 正解が異なる
話の都合上 以降はバックエンドは必要という前提
3. システム構成例
フロントエンドファーストでの構成例 Next.js
バックエンドファーストでの構成例 Laravel + Laravel Vite
バックエンドファーストでの構成例 Laravel + Laravel Vite 密結合
明確な分離を目指した構成例 シンプル!
4. フロントエンドとバックエ ンドは分離すべきか?
基本的には分離すべきと考える
分離しておく理由 • Information Leakage • あとから分けるの無理 • アーキテクチャーの柔軟性
Information Leakage 「モジュールが、自分の責任範囲を超えて 他のモジュールの知識や制約に依存してし まっている状態」 FE と BE が癒着するとツライ
あとから分けるの無理 無理
アーキテクチャーの柔軟性 • アーキテクチャー構成が柔軟 • ビルドプロセスの分割 • バージョンアップ、脆弱性対応などなど
よし、じゃあバックエンドを分離しよう! どの言語にしたらいい?
ぶっちゃけどれでもいい • 要点は責任分離 • プログラミング言語そのものは次点
一回目のまとめ • フロントエンドの重要性は今後も増す • バックエンドも依然として重要 • 特別な場合をのぞき、初手の分離が吉
5. PHPをおすすめする100の 理由
注意 この先はPHPを安心して選んでもらうた めのPRです 残り10分くらいだとちょうどいい
PHPを一言で表現すると 現代におけるプロダクト開発とPHPを選定するワケ #phpkansai - Speaker Deck https://speakerdeck.com/potato4d/xian-dai-niokerupurodakutokai-fa-tophpwoxuan-ding-suruwake-number-phpkansai?slide=58
PHPの歴史 JetBrains PHPverse 2025 – Online Event Celebrating 30 Years
of PHP https://lp.jetbrains.com/phpverse-2025/
PHPの歴史 JetBrains PHPverse 2025 – Online Event Celebrating 30 Years
of PHP https://lp.jetbrains.com/phpverse-2025/ 30周年
ウェブサイトの言語割合 Usage statistics of server-side programming languages for websites https://w3techs.com/technologies/overview/programming_language
ウェブサイトの言語割合 Usage statistics of server-side programming languages for websites https://w3techs.com/technologies/overview/programming_language
2025
PHPはハンマーのような単純な道具 PHPの生みの親、ラスマス・ラードフ氏インタビュー | gihyo.jp https://gihyo.jp/news/report/2015/12/1401
PHPの学習曲線(イメージ) 諸説ある
機能面
シェアードナッシング PHP & Shared Nothing Architecture: The Benefits and Downsides
– Tideways https://tideways.com/profiler/blog/php-shared-nothing-architecture-the-benefits-and-downsides
モダン化の流れ • 交差型、合併型、false型... • Immutable classes, properties • Attribute
モダン化の流れ • 非対称可視性 • Property hooks • レイジーオブジェクト • などなど....
けっこうモダンでしょ?
Composer Composer https://getcomposer.org/
PHPUnit PHPUnit: The PHP Testing Framework https://phpunit.de/index.html
PHPStan Find Bugs Without Writing Tests | PHPStan https://phpstan.org/
PHP-CS-Fixer PHP Coding Standards Fixer https://cs.symfony.com/
開発状況
The PHP Foundation The PHP Foundation — The PHP Foundation
— Supporting, Advancing, and Developing the PHP Language https://thephp.foundation/
年1回のアップデート PHP: Supported Versions https://www.php.net/supported-versions
php.internals php.internals mailing list https://news-web.php.net/group.php?group=php.internals
RFCによる機能変更議論 PHP: rfc:immutability https://wiki.php.net/rfc/immutability
PHPコミュニティ
PHPコミュニティ • 海外はある程度一定している • 日本では2023年から謎の盛り上がり... • 若手も流入してきおり活発
ユーザーコミュニティ world-phpcons-history.pdf - Google Drive https://drive.google.com/file/d/14wKvKtVPNtssGyFmlHndsFI3cgp7Uweo/view
ほぼ毎月カンファレンス 2025年に開催される全国のPHPカンファレンスのまとめ #PHP - Qiita https://qiita.com/akase244/items/00323a1bfbb6575f0c94
これから開催 • 2025/5/31 PHPカンファレンス新潟 • 2025/6/28 PHPカンファレンス • 2025/7/19 PHPカンファレンス関西2025
• 2025/11/8 PHPカンファレンス福岡2025 • 2025/11/24 PHPカンファレンス香川2025
• 2025/5/31 PHPカンファレンス新潟 • 2025/6/28 PHPカンファレンス • 2025/7/19 PHPカンファレンス関西2025 •
2025/11/8 PHPカンファレンス福岡2025 • 2025/11/24 PHPカンファレンス香川2025 これから開催 僕と握手!
二回目のまとめ PHP、けっこういいやつじゃん?