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
120
0
Share
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
180
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
240
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
1.2k
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
950
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
710
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
6
2.2k
PHPer のための プロポーザル駆動アウトプット入門 #phpcon_niigata / PHP Conference Niigata 2025
shogogg
1
710
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
3.3k
5分で理解する SOLID 原則 #phpcon_nagoya
shogogg
1
1.2k
Other Decks in Technology
See All in Technology
Java正規表現エンジン(NFA)の仕組みと パフォーマンスを維持するための最適化手法
takeuchi_132917
0
160
ポスター発表&デモと総括 / Poster Presentations & Demonstrations and Summary
ks91
PRO
0
170
Spring Boot における AOT Cache 活用テクニックと 起動時間改善事例
ntt_dsol_java
0
180
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
190
AIプラットフォームを運用し続けるための可観測性
tanimuyk
3
150
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
1.1k
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
140
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
250
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
190
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
1
520
さきさん文庫の書籍ができるまで
sakiengineer
0
320
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
720
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
850
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
150
Practical Orchestrator
shlominoach
191
11k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Scaling GitHub
holman
464
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
330
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
520
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 コミッターによる言語ごとの「コードの生成効率」に関する記事