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 と TypeScript の型システム比較:AI 時代の「型」は誰のためにあるのか? ...
Search
shogogg
June 06, 2026
Technology
590
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHP と TypeScript の型システム比較:AI 時代の「型」は誰のためにあるのか? #frontend_phpcon_do / frontend_phpcon_do_2026
2026年6月6日に行われたフロントエンド・PHPカンファレンス北海道2026の登壇資料です
shogogg
June 06, 2026
More Decks by shogogg
See All by shogogg
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
230
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
280
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
1.2k
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
1k
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
740
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
6
2.2k
PHPer のための プロポーザル駆動アウトプット入門 #phpcon_niigata / PHP Conference Niigata 2025
shogogg
1
740
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
3.4k
5分で理解する SOLID 原則 #phpcon_nagoya
shogogg
1
1.3k
Other Decks in Technology
See All in Technology
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.3k
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
400
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
14
3.9k
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
190
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
260
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
1
2.4k
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
Lightning近況報告
kozy4324
0
180
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.5k
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
130
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.3k
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
170
Featured
See All Featured
Practical Orchestrator
shlominoach
191
11k
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Statistics for Hackers
jakevdp
799
230k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Believing is Seeing
oripsolob
1
150
How GitHub (no longer) Works
holman
316
150k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Transcript
Shogo Kawase / @shogogg PHP と TypeScript の型システム比較 AI 時代の「型」は誰のためにあるのか?
Jun. 6 2026 Frontend PHP Conference Hokkaido 2026
About Me 河瀨 翔吾 / Shogo Kawase エンジニアリングマネージャー PHP
TypeScript I LOVE... 妻 / 型安全 / アジャイル / ももいろクローバーZ 麻雀 / F1 / マリオカート / ACE COMBAT shogogg shogogg 2000年(PHP 4.x) 2012年(TypeScript 0.8)〜
Today’s Goal • PHP と TypeScript の型システムの違いと注意すべきポイントを学ぶ • AI 時代の「型」の考え方を知る
おしながき 1 「型」の基本 2 PHP vs TypeScript「型」の違い 3 AI 時代の「型」
4 まとめ
おしながき 2 PHP vs TypeScript「型」の違い 3 AI 時代の「型」 4 まとめ
1 「型」の基本
静的型付け vs 動的型付け 静的型付け • すべての変数に型が割り当てられ、コンパイル時に決定 • 型エラーはコンパイル時に検出 • 異なる型の値は変数に代入できない
• 例: Java, Go, Rust, C/C++, ... 動的型付け • 変数の型が固定されず、実行時に決定 • 型エラーは実行時に検出 • 異なる型の値を同じ変数に代入できる • 例: Perl, Ruby, Python, JavaScript, ...
強い型付け vs 弱い型付け 強い型付け • あらゆる場面において、厳密に型がチェックされる • 3 - '2'
はエラーとなり、実行不可 • 例: Java, Go, Rust, Ruby, Python, ... 弱い型付け • 暗黙的な型変換 により、コンパイラやランタイムが「空気を読む」 • 3 - '2' の結果は 1 • 例: Perl, JavaScript, C/C++, ...
公称型 vs 構造的部分型 公称型 • 型の互換性は型の継承関係など、明示的な宣言に基づいて判断される • 例: Java, Rust,
C/C++, ... 構造的部分型 • 型の互換性は型の構造やプロパティに基づいて判断される • 例: Go, Python(Protocol), Ruby(RBS), ... ダックタイピング • 呼び出したメソッドや、参照したプロパティが存在すればOK • 例: JavaScript, Perl, Python, Ruby, C++(Template)...
型システムの歴史 黎明期 コンピューターが発明された当初は使えるリソース(メモリ等)が限られており、厳密な型 チェックを行う「静的型付け言語」 が主流。 LL言語の台頭(1990年代後半〜) Web の急速な普及に伴い、厳格さよりも「すぐに書けてすぐに動かせる」LL言語が台頭。 「動的型付け言語」 が普及・流行。
「型」の再評価(2010年代〜) コンピューターの普及により、あらゆるビジネスにソフトウェアが必要となる時代。 ソフトウェアの規模も拡大し、大規模開発に耐える厳格な型システムを持つ言語が人気に。
おしながき 1 「型」の基本 3 AI 時代の「型」 4 まとめ 2 PHP
vs TypeScript「型」の違い
比較項目 PHP TypeScript 型付け 弱い動的型付け 強い静的型付け 検査タイミング 実行時 トランスパイル時 互換性モデル
ダックタイピング + 公称型 構造的部分型 実行時の型情報 保持される 一部を除いて消失 PHP vs TypeScript「型」の違い
PHP の「型」 ✅ 限定的な「強い型付け」 • 厳格モードの有効化により、引数や戻り値、プロパティを強い型付けとすることが可能 ✅ Null許容型・交差型・ユニオン型のサポート • Null
許容型(PHP 7.0〜)や交差型(同8.0〜)、ユニオン型(同8.1〜)もサポート ✅ PHPStan 等による静的解析 • PHPStan 等の静的解析ツールを使えば、実行前に型エラーを検出できる ⚠ 表現力の限界 • 総称型(ジェネリクス)などが(まだ)サポートされていない
TypeScript の「型」 ✅ 圧倒的な表現力 • リテラル型や総称型(ジェネリクス)をサポート • Conditional Type や
Mapped Type により型を「計算」して生み出すことも可能 ✅ 強力な型推論 • 静的型付け言語の弱点であった「冗長なコード」を強力な型推論によって解決 ✅ 構造的部分型と Object • Object と構造的部分型の組み合わせが、軽量なデータ表現を実現 ⚠ 実行時の「割れ窓」 • トランスパイルによって JavaScript に変換されるため、実行時には型情報を持たない • any 型や as による型アサーションを使われると意図しないコードが実行されてしまう
PHP vs TypeScript「型」の違い:まとめ どちらも十分な型システムを持つ • かつてはゆるふわLL言語の代表格だった PHP も、この10年で堅牢な型システムを獲得 • TypeScript
は圧倒的な型の表現力で Web 開発を支えて続けている 型エラーのあるコードが「実行されにくい」PHP • 型エラーのあるコードが実行時エラーとなり、意図しないコードの実行を防ぐ • 静的解析ツールも普及し「動かさないとわからない」は過去の話に 型エラーのあるコードが「出荷されにくい」TypeScript • 型エラーのあるコードが静的に検出され、ビルドプロセスにおいてエラーとなる • 実行時には型情報が残らないため、意図しないコードが実行されてしまう場合も
おしながき 1 「型」の基本 2 PHP vs TypeScript「型」の違い 4 まとめ 3
AI 時代の「型」
AI 時代の「型」は 読み手 のためにある
AI 時代の「型」は 読み手 のためにある
型情報 = コンテキスト
AI時代のコードは 型を明示すべき
AI 時代の「型」は読み手のためにある 「人間」のため • AI がコードを生成する時代になり、人間がコードを書く量・時間は激減 • コードの生成速度向上に伴い、レビュー=読む量・時間が増えている 「AI」のため •
AI もコードを読む機会は多く、型の明記が無駄な推論を減らす • もちろん AI がコードを生成する上での「ハーネス」としても型の明記は重要 「コンパイラ」のため • 型が明記されたコードは型推論のオーバーヘッドを減らし、コンパイル時間を短縮 • PHP の JIT が生成するネイティブコードの実行効率も向上
これからの PHP 型システムの強化と関数型のエッセンス • PHP 7 以降、型システムはどんどん強化されており、今後もその傾向は続く見込み • パイプ演算子など、関数型のエッセンスも積極的に導入 「型推論がないこと」がメリットに
• かつては「型を書かないといけない」ことが書き手にとって手間であり、弱点だった • 今後はむしろ「型を書かざるを得ない」ことが読み手にとってのメリットに 総称型(ジェネリクス)の実現(?) • 実は10年以上前からずっと議論されている • 今年に入って新たな RFC が提案されており、いよいよ実現の可能性が高い
これからの TypeScript TypeScript の「型」は純粋なアノテーション(注釈)へ • TypeScript 7.0 で tsgo が標準化、--outFile
が廃止 • Node.js / Deno / Bun などが TypeScript の直接実行を標準サポート • 型は「ビルド時の制約」から、実行時には消える純粋なアノテーション(注釈)へ 「型推論」との付き合い方の変化 • かつては型推論を駆使し、書き手の負荷を減らすことが正義であった • 今後は積極的に型を明示し、読み手の負荷を減らすことを重視するべき
おしながき 1 「型」の基本 2 PHP vs TypeScript「型」の違い 3 AI 時代の「型」
4 まとめ
「型」の価値が高い時代 • 型にうるさい言語とゆるい言語があり、時代によって主役は入れ替わってきた • 大規模化・複雑化・ AI化により、今後しばらくは型に厳格な言語の人気は続くだろう PHPとTypeScript、どちらも十分な型システムを持つ • かつてはゆるふわLL言語の代表格だった PHP
も、この10年で堅牢な型システムを獲得 • TypeScript は圧倒的な型の表現力で Web 開発を支えて続けている AI 時代の「型」は読み手のためにある • 読み手とは人間・AI・コンパイラ • コード上で型を明示することの重要性が増している まとめ
\中途採用やってます!!/
Appendix • PHP RFC: Generic Types and Functions 従来のジェネリクスの議論 •
PHP RFC: Bound-Erased Generic Types 今年に入って提案されたジェネリクスに関する新しい RFC • Laravel Live Japan – Live from Tachikawa Stage Garden // Day 2 PHP Foundation の Roman Pronskiy 氏が今後の PHP について語っています • Announcing TypeScript 7.0 Beta TypeScript 7.0 のリリースに関する公式アナウンス • Claude Code に向いているプログラミング言語 Ruby コミッターによる言語ごとの「コードの生成効率」に関する記事