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
710
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
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
200
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
270
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
330
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
1.3k
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
1k
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
760
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
6
2.2k
PHPer のための プロポーザル駆動アウトプット入門 #phpcon_niigata / PHP Conference Niigata 2025
shogogg
1
760
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
3.8k
Other Decks in Technology
See All in Technology
はじめてのWDM
miyukichi_ospf
1
150
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
550
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
2.6k
ボーイスカウトルールでメモリやスキルを改善しよう
azukiazusa1
4
1.4k
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
390
公式ドキュメントの歩き方etc
coco_se
1
120
見守りエージェントを作ってみた(ローカルLLM + Hermes Agent)
happysamurai294
0
110
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
870
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
110
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
270
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.5k
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
How to train your dragon (web standard)
notwaldorf
97
6.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Building AI with AI
inesmontani
PRO
1
1.1k
How to Talk to Developers About Accessibility
jct
2
370
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
220
The agentic SEO stack - context over prompts
schlessera
0
840
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
How to Ace a Technical Interview
jacobian
281
24k
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 コミッターによる言語ごとの「コードの生成効率」に関する記事