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
Hisateru Tanaka
February 11, 2024
Technology
5
2.4k
ほげ言語にあってPHPにない機能
PHPカンファレンス関西2024発表資料です。
Hisateru Tanaka
February 11, 2024
Tweet
Share
More Decks by Hisateru Tanaka
See All by Hisateru Tanaka
オブジェクト指向宗教史
tanakahisateru
29
15k
君たちはどうプログラミングするか
tanakahisateru
11
1.5k
デバッグ用ロガーの注入どうする?
tanakahisateru
2
480
アンドキュメンテッド ちょうぜつソフトウェア 設計入門 「オブジェクト指向に定義はない」のか?
tanakahisateru
25
8.8k
ちょうぜつ改め21世紀ふつうのソフトウェア設計
tanakahisateru
14
8k
まんがのかきかた
tanakahisateru
8
610
10秒で衝突するUUIDの作り方
tanakahisateru
40
38k
これならしんどくないGit運用の考え方
tanakahisateru
21
5.7k
abstract は恥だが役に立つ
tanakahisateru
0
18k
Other Decks in Technology
See All in Technology
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
260
MapLibreとAmazon Location Service
dayjournal
1
160
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
660
DMM.com アルファ室採用案内資料
hsugita
1
170
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.7k
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
320
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
850
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
200
私が trocco を推す理由
__allllllllez__
1
270
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.4k
VS CodeでAWSを操作しよう
smt7174
8
1.8k
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
390
Featured
See All Featured
What the flash - Photography Introduction
edds
64
11k
Gamification - CAS2011
davidbonilla
76
4.6k
Code Reviewing Like a Champion
maltzj
514
39k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
The Language of Interfaces
destraynor
151
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
The Mythical Team-Month
searls
216
42k
The Cult of Friendly URLs
andyhume
74
5.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
Writing Fast Ruby
sferik
621
60k
Rebuilding a faster, lazier Slack
samanthasiow
73
8.2k
Transcript
΄͛ݴޠʹ͋ͬͯ 1)1ʹͳ͍ػೳ GBMTF )" (&
·͍ͲͰ͓·Μ͕ͳ ؔ1)1Ϣʔβʔ͓͡͞ΜͰ͢ w ʮͪΐ͏ͥͭιϑτΣΞ ઃܭೖʯஶऀ w ؔͷ1)1ίϛϡχςΟʹ ΄Ͳ͍·͢ w ݩͷօ͞Μ͝ແࠫଡͰ͢
Α͏ͦ͜ଞҬͷօ͞Μ !UBOBLBIJTBUFSV ాதͻͯ͞Δ ͪΐ͏ͥͭιϑτΣΞઃܭೖ ʕʕ1)1Ͱཧղ͢ΔΦϒδΣΫτࢦͷ׆༻ ాதͻͯ͞Δஶ *4#/
΄͛ݴޠ ͱʜ
ϙʔϧɾάϨΞϜ ʮී௨ͷౕΒͷ্Λߦ͚ʯͰ
΄͛ݴޠͷύϥυοΫε w ͦͦ͜͜ਓؾͷϓϩάϥϛϯάݴޠΛԾʹʮ΄͛ݴޠʯͱ͢Δ w ΄͛ݴޠ͕࠷ߴͩͱݴ͏ਓɺΑΓػೳͳݴޠΛྼ͍ͬͯΔͱݟԼ͢ w ͱ͜Ζ͕ɺ΄͛ݴޠΑΓߴͳػೳΛ࣋ͭݴޠ࣮ࡏ͢Δ w ͦ͏ݴΘΕͯɺΑΓߴͳݴޠػೳͷҙຯΛೝࣝͰ͖ͳ͍ w
΄͛ݴޠΑΓෳࡶͳݴޠաͰແବͩͱޡೝ͍ͯ͠Δ w ͜ͷؔ૬ରతͰɺ΄͛ݴޠԿʹͰஔ͖͑ͯݴ͏͜ͱ͕Ͱ͖Δ
͜Θ ҙຯΘ͔ΒΜ ͓͓ Ϋιݴޠ͕ ΄͛ݴޠѪऀͷ ೝࣝϨϯδ
΄͛ݴޠ1)1ͩͱͯ͠ɺ ͳ͍ػೳͷඞཁੑΛ͓͖ͬͯ·͠ΐ͏
Ϧετͱࣙॻͷ۠ผ 1)1Ҏ֎ͷ΄ͱΜͲͷݴޠ͔Βݟͯҧײ͋Δͷ͕BSSBZ ɻ ྫ͑1ZUIPOͷجຊܕMJTUͱEJDUͰશ͘ผɻ 1)1ͷྻ1ZUIPOͰݴ͏ͱ0SEFSFE%JDUʹ͋ͨΔɻ 1)1ʙϦετͷΑ͏ʹ͏ͱϦετͱͯ͠࠷దԽ͞ΕΔΑ͏ʹɻ ύϑΥʔϚϯεͳ͘ͳ͚ͬͨͲɺߏจ্BSSBZͷΈɻ %PDίϝϯτͰBSSBZͱMJTUΛ۠ผͯ͠1)14UBOΛཔΔɻ
δΣωϦΫε ܕύϥϝʔλ *UFSBUPS"OJNBMͷΑ͏ͳΈ߹Θͤܕɻ ίϯύΠϧ࣌ʹෆਖ਼Λશʹ͚ͳ͍ॲཧܥͰ͍͠ɻ ͔Ζ͏ͯ͡ྻʹؔͯ͠ɺ%PDίϝϯτͱ੩తղੳͰิॿ͢Δश׳ɻ "OJNBM<>BSSBZTUSJOH "OJNBMMJTU"OJNBMʜ 1)14UBOʹ!UFNQMBUF͕͋Δ͚Ͳɺ5ZQF4DSJQUͷํ͕ང͔ʹʜ
શ͕ͯΦϒδΣΫτ :FT3VCZ 1ZUIPO +BWB4DSJQU 4DBMBʜ มʹଋറͰ͖Δͷશͯɺಉ͡ܗࣜͰϝιουίʔϧՄೳɻ ΦϒδΣΫτҎ֎ͷܕ͕ͳ͍ͷͰΦϑαΠυϧʔϧ͕গͳ͘ͳΔɻ /P$ +BWB (P
3VTUʜ8): ॏࢹͷݴޠͰɺόΠτ෯ΧπΧπͷ࠷దԽΛهड़͍ͨ͠ɻ 4DBMB3VCZͷΑ͏ͳΦϒδΣΫτΛόΠτίʔυʹ࠷దԽɻ 1)1ͱ͔1FSMͱ͔ʜ྆ํͷσϝϦοτΛ࣋ͭײ͡ˠؤுΖ͏ɻ
ύοέʔδ ໊લۭؒ Մࢹੑ +BWBͷσϑΥϧτʮΫϥεͷ࠶ར༻ಉҰύοέʔδʯɻ֎෦ެ ։ʹQVCMJDDMBTTͱࢦఆ͢Δඞཁ͕͋Δɻ GJOBMDMBTTҎ֎ʹTFBMFEDMBTT͋ΔɻܧঝؔΛ࡞ΕΔͷύο έʔδͰ͚ͩɺͷΑ͏ʹ੍ݶͰ͖Δɻ 1)1ͷ3'$ʹQSJWBUFDMBTTͷ͋ͬͨؾ͕͢ΔΜ͚ͩͲͳʜ %PDίϝϯτͰ!JOUFSOBMͳͲΛͬͯҙਤΛද͓ͯ͜͠͏ɻ
UIJT ·ͨTFMG ͷলུ ΫϥεͰࣗΛද͢UIJTΛলུͯ͠ॻ͚Δɻ w ϝιουˠͳ͔ͬͨΒάϩʔόϧؔ w ϩʔΧϧมˠͳ͔ͬͨΒϓϩύςΟˠͳ͔ͬͨΒάϩʔόϧ Ͱ͖Δ$ +BWBܥ
$ 3VCZ ͪΐͬͱΈҧ͏͚Ͳ Ͱ͖ͳ͍1)1 1ZUIPO +BWB4DSJQU (P 3VTUʜ ͲͪΒ͕ྑ͍͔୯७ͳ༏ྼͱݴ͑ͳ͍ɻ Ͱ1)16OJUͷUIJTBTTFSU&RVBMT +6OJUΑΓΊΜͲ͍ͳ
͠͞ͷਪҠੑ ҉ܕมͷݫ͠͞ "##$Ͱ͋Ε"$Ͱ͋Δɻ ʜͱͳΒͳ͍߹͕͋Δɻ WBS@EVNQ GBMTFGBMTFl USVF WBS@EVNQ l
GBMTF ʮ҉Ͱʹมͯ͠ൺֱʯʮԿ͔ͩGBMTFͬΆ͍ʯͱ͍ͬͨΏΔ͍ ՁੑൺֱΛΔํɻ͔ͱ͍ͬͯͰݫ͗͢͠Δ߹ʜ ଞͷݴޠʮൺֱ͢ΔͱΤϥʔʯΛબ͍ͯ͠Δ͜ͱ͕ଟ͍ɻ
จࣈྻҎ֎ͷϋογϡࣙॻΩʔ +BWB0CKFDUʹIBTI$PEF Λ࣋ͭˠԿͰΩʔʹ͑Δɻ DIFTT(SJE.BQQVU OFX1PJOU% QBXO 1ZUIPOͷλϓϧΠϛϡʔλϒϧͳͷͰࣙॻͷΩʔʹͳΔɻ
DIFTT@HSJE@EJDU< >QBXO 3VCZҙͷΦϒδΣΫτ0,ͰɺγϯϘϧܕ͕͍͍ײ͡ɻ +BWB4DSJQUͱ1)1จࣈྻΩʔͷΈɻ
҉มলུͷ໌ࣔతͳఆٛ 4DBMB࣍ͷΑ͏ͳ҉ϧʔϧΛʮఆٛʯ͢Δจ๏Λ࣋ͭ wԋࢉͰܕ͕߹Θͳ͍ͱ͖ͷมΛͲ͏͢Δ͔ wಛఆͷهड़ ྫ͑UIJT Λলུͨ࣌͠ͷڍಈ JNQMJDJUΩʔϫʔυʜ΄͛ݴޠͷϢʔβʔ͕ཧղͰ͖ͳ͍ݴޠػೳͷ ͔ͳΓ্Ґʹ͋ΔΜ͡Όͳ͍Ͱ͠ΐ͏͔ɻ ͰυϝΠϯಛԽݴޠͳΜ͔ʹศརɻٕज़తͳϊΠζݮɻ
طଘΫϥεͷಈతͳ֦ு 3VCZͷಛҟΫϥεɻ3BJMTͰEBZTͱ͔ॻ͚ΔΞϨɻ wϦςϥϧͷ3VCZຊମͷ*OUFHFSΠϯελϯε طଘ wϝιουͷEBZTޙ͚ͷ(FNʹఆٛ͞Ε͍ͯΔ 4DBMBͷ߹ɺଘࡏ͠ͳ͍ϝιουͷίʔϧ࣌ʹɺJNQMJDJUఆٛͨ͠ ϥούʔΫϥε͕উखʹ͔Ϳ͞ΔΑ͏ͳΈͰɺࣅͨΑ͏ͳڍಈΛ ࣮ݱͰ͖Δɻ
ϚΫϩ ϝλϓϩάϥϛϯά -JTQσʔλߏͱϓϩάϥϜίʔυ͕ಉ͡ܗΛ͍ͯ͠Δɻσʔλߏ Λ࡞ΔϓϩάϥϜΛॻ͚ͩ͘ͰɺಈతʹϓϩάϥϜΛੜͰ͖Δɻ 3VCZ4DBMBϓϩάϥϜͰϓϩάϥϜΛ࡞ΔͨΊͷػೳΛ࣋ͭɻ /JN4DBMBͷJNQMJDJUʹࣅͨܗͰɺߏจΧελϚΠζϚΫϩΛ࣋ͭɻ 1)1ʹࠇຐज़༻ͷػೳ͕͋·Γͳ͍ͷͰɺQIQϑΝΠϧʹจࣈྻͰ ϓϩάϥϜίʔυΛॻ͍͍ͯ͘͜ͱʹɻ μα͍
Ͱ࣮ࡍɺςϯϓϨʔτΤϯδϯͳΜ͔ͰΑ͘औΒΕͯΔํ๏ɻ
ԋࢉࢠΦʔόʔϩʔυ $ ͷDPVUl)FMMP8PSMEzFOEMͷͷͱ͜Ζɻ ͦͦจࣈྻͷՃࢉ͕ ͳͷTUSDBU ͷγϣʔτΧοτɻ 3VCZ 4DBMB ͪΐͬͱݶఆత͚ͩͲ1ZUIPO
ΦϒδΣΫτʹԋࢉࢠΛͬ ͨ࣌ͷڍಈΛఆٛͰ͖Δɻ +BWBจࣈྻͷՃࢉ͚ͩͯ͠ɺΧελϚΠζੑΛҙਤతʹഉআɻ 1)11ZUIPOʹࣅͯϚδοΫϝιου͕͋Δ͚ͲɺͰ͖ͳ͞+BWBͱಉ͡ ͙Β͍ɻϢʔβʔ͕Ͱ͖ΔͷQSPQͱQSPQͷϑοΫ͙Β͍ɻ
άϦʔϯεϨουͳඇಉظ*0 04ͷϚϧνεϨουΛΘͣɺݴޠॲཧܥͰฒߦॲཧɻ ཁ1SPNJTFΈ͍ͨͳΞϨɻ+BWB4DSJQUͱ1ZUIPOɺݴޠϨϕϧ ͰBTZODBXBJUΩʔϫʔυΛ࣋ͭɻ (Pશͯͷαϒϧʔνϯίʔϧʹ͓͍ͯɺ໌ࣔతͳBXBJUͳ͠Ͱ*0 ͪඇಉظΛαϙʔτɻ͔͠04ͷฒྻॲཧʹࣗಈόϥϯεɻ 1)1ͩͱ4XPPMF͕͍͚ۙͲɺ(Pඇಉظ*0ͷ؆୯͞ͱ҆શ͞Ͱ܈ Λൈ͍͍ͯΔɻ(PHSPVUJOFͷ%4-ͩͱࢥ͏ɻ
Πϛϡʔλϒϧͳม 1)1ͰɺΦϒδΣΫτͷϓϩύςΟʹSFBEPOMZࢦఆ͕૿͑ͨɻ ʜ͕ɺଟ͘ͷؔܕʹ͋ΔMFUɺ+BWB4DSJQUͷDPOTUͳ͍ɻ 1)1Ͱมͷ্ॻ͖Λ੍ݶͰ͖ͳ͍ˠͷͰؔͷείʔϓখ͞ ͘ดͯ͡Γ·͠ΐ͏ɻ 3VTUσϑΥϧτ͕ΠϛϡʔλϒϧͰɺՄมͳมʹNVUΛ͚ Δɻαϒߏ͕NVUͷͱ͖ɺʹNVU͕ײછ͢Δɻ )BTLFMMʮϞφυͰԿ͔Ͱ ʯ
TDBMBSܕ SFTPVSDFܕ JT@TDBMBS ͋ΔͷʹɺJOUcGMPBUcTUSJOHcCPPMΛ૯শ͢Δܕ͕ͳ͍ɻ Ͳ͏ͤͳΒJT@OVNFSJD ʹରԠ͢ΔOVNFSJDܕ͋ͬͯཉ͍͠ɻ DBMMBCMFͱJUFSBCMFͳΜͯ૯শ͋Δͷʹɻ GPQFO ͷΓʹରԠ͢ΔSFTPVSDFܕ͕ͳ͍ɻͳΜͰ͜͜NJYFE ͳΜͩ
ͬͯͳΔɻ Ұ؏ੑ͕ޙճ͠ʹͳͬͯ͠·͏ݴޠͩͱ͍͏ɻ
6'$4 6OJGPSN'VODUJPO$BMM4ZOUBYͷུɻҎԼͷͭಉ͡ҙຯ wBQQFOE EBUB Y wEBUBBQQFOE Y ͦͷ··ߴ֊ؔΕΔײ͡ͱɺϝιουνΣʔϯ͍͚ͯͦ͠͏ͳͷ
ͷɺͲͬͪͰॻ͍͍͍ͯͱ͍͏ΞΠσΞɻ%ݴޠͱ/JN͕࠾༻ɻ 1)1ͰEBUBBQQFOE ͰDBMMBCMFʹͳΔɻ ͱ͜ΖͰ/JNʜ
ίʔυهड़·ΘΓͷػೳ͕ඇৗʹڧ͍ /JN͚ͩͲɺଟଶੑ όϦΞϯτ Ͱ ։์ดݪଇΛຬͨͤͳ͍ IUUQT[FOOEFWUBOBLBIJTBUFSVBSUJDMFTBG l/JNɺʮ͠ΞϥϯɾέΠ͕ΦϒδΣΫτࢦͱݴΘͳ͔ͬͨΒʯ ͱ͍͏ྺ࢙ͷJGΛײͤͯ͘͡͞ΕΔݴޠͩͱࢥͬͨΛ͠·͢ɻ
࠷ڧͷ΄͛ݴޠ ͳΜ͔͋ΒΜͷ
ͱ͜ΖͰ1)1ͷ࡞ऀʜ ʮ1)1ࣃϒϥγʯ 1)1ࣃϒϥγ͘Β͍ڵฃʹ͢ ΔɻγϯϓϧͰɺຖ͏ศརͳಓ ۩ɻ͔ͩΒͲ͏ͨ͠ɻࣃϒϥγʹ ͍ͭͯॻΛړΔ͕͍ͭΔ͔ʁ
ͦΜͳࣃϒϥγɺͰܕ γεςϜ͕ڧԽ͞Ε͖ͯ·ͨ͠
͍ͬΆ͏ࢲʜ ઌݞγεςϜ͕յΕͯɺࣃϒϥγͷΑ͏ͳͷΛΠϯετʔϧ͠·ͨ͠
HJIZPKQ 1)1ͷੜΈͷɺϥεϚεɾϥʔυϑࢯΠϯλϏϡʔ IUUQTHJIZPKQOFXTSFQPSU z1)1πʔϧͰ͢ɻϋϯϚʔͷΑ͏ͳͷͰ͢ɻԿͷมͳ͍ಓ۩͚ͩΕ ͲɺͦΕΛͬͯ࡞ΒΕͨͷਓʑͷΒ͠Λม͖͑ͯ·ͨ͠ɻ zࣾձΛΓସ͑ͨͷϋϯϚʔΛ࡞ͬͨஉͰͳ͘ɺͦΕͰͷΛ࡞ͬͨ ਓʑͰ͢ɻϋϯϚʔΛͬͨਓʑͰ͢ɻ ˡલͷͰདྷͷͱ͖
ʮϓϩάϥϛϯά ݴޠ खஈʯ ୭͕ݴ͏͔Ͱ͍ͣͿΜҙຯ͕มΘͬͯ͘ΔΑͶ
ϓϩάϥϛϯά ઃܭ ӡ༻ମ੍ ࢿۚ܁Γ ϚʔέςΟϯά Ϣʔβʔαϙʔτ ΤϯυϢʔβʔ ϢʔβʔจԽ ࣾձৗࣝͷมԽ ίϯςϯπ
ίϛϡχέʔγϣϯ ੜ׆Πϯϑϥ σϕϩούʔจԽ γεςϜΠϯϑϥ Χϧνϟʔ ,ʙ.ഒͷ ਓޱنͷࠩ
ʮखஈͳΜͯςΩτʔͰ͍͍Αʯ ͱ୭ݴͬͯͳ͍ɻ
Ϋι࣮͕ؒҧͬͯ ചΕͯ͠·ͬͨྫ खஈภॏͷצҧ͍͕ ى͖ͨ։ൃͷ࿏ ͱ͍͑ɺͬͪ͜·ͩച্ Ͱࢧ͑Εٹ͍͕͋Δ ༧ࢉͷग़ॴͲ͜ʜ
ݴޠҰ؏ੑΑΓखஈɻ తͱ֓೦͕߹͑शಘ͙͢ɻ
͋ͷੈք࠷େऀͷݴޠʜ ྺ࢙తཧ༝ʹΑͬͯ࠷Ұ؏ੑ͕ࣦΘΕͨݴޠ ΠϯυɾϤʔϩούޠͷݯྲྀ ϰΝΠΩϯάͷ৵߈ έϧτจԽ ϑϥϯεͷҰ෦ ͩͬͨ࣌ ΩϦετڭ ϥςϯޠ ݹӳޠʹ໊ࢺҎ֎ͷ୯ޠʹ
֨ͷมԽ͕͋ͬͨɻϰΝΠΩ ϯά࣌ʹ୯७Խ͔ͨ͠ɻ ϑϥϯεޠͱϥςϯޠʹޠኮͷ ಛ͕େ෯ʹ৵ུ͞Εͨɻ ࣮ࡍͷൃԻͱҧ͏εϖϧΛ׆൛ ҹͯ͠͠·ͬͨɻ
खஈͱతΛຬͨ͢࠷దͳͷ ੈքʹͬͱෆࢥٞͳࣗવݴޠ w ؾީɾڥɾจԽʹΑͬͯɺ֓೦Λද͢୯ޠʹଟ͘ͷҧ͍͕͋Δɻ w ͨͱ͑ɺ৭Λද֓͢೦͕ʮനʯʮࠇʯʮʯ͔͠ͳ͍ݴޠ͕࣮ࡏ͢Δɻ w લޙࠨӈͱ͍ͬͨ૬ରతͳ͖Λද͢୯ޠΛ࣋ͨͳ͍ݴޠͷ෦͍Δɻ w ൴Βͷੜ͖ํʹ૬ରํͷ֓೦͕ొ͠ͳ͍ɻ͖Λৗʹ౦ೆͰೝࣝ
͍ͯͯ͠ɺͦΕͰશ͘ࠔ͍ͬͯͳͦ͞͏ɻ w ීวจ๏ ਓྨڞ௨ͷίΞ͕͋Δͱߟ͑ͨ νϣϜεΩʔઌੜͼͬ͘Γ
ʮͰ্ͳݴޠΛѻ͑Δͱɺଧ͍ͪͯ͜ਓ݄ ୯ՁऔΕΔͰ͠ΐʯͬͯ ͋ʔɺ͜ͷͰɺͦ͏͍͏ײ͔֮ͬ͢Γͳ ͘ͳͬͪΌ͍·ͨ͠Ͷɻ
༏ྼͰͳ͘ϑΟʔϧυͷҧ͍ͷཧղΛ ͜ͷຊͰհ͞Ε͍ͯΔݴޠ 3VCZ *P 1SPMPH 4DBMB &SMBOH $MPTVSF )BTLFMM
༁൛ɻ·ͩ+43VTU ͞Εͯͳ͔ͬͨࠒɻ$+BWBؚ·Ε ͳ͍͠ɺ4NBMMUBML1BTDBMͳ͍ɻͦ ΕΒΛؚΊΔͱͭ͡Όࡁ·ͳ͍ɻ ϑΟʔϧυΛݟۃΊͯదʹબͿͷɻ
Ͱ1)1ͷϑΟʔϧυ ༷ʑͳ׆༻ࣄྫΛ͜ͷΧϯϑΝϨϯε དྷ݄࠶དྷ݄ Ͱʹ͠·ͨ͠Ͷ ίϛϡχςΟͷ׆ൃ͞ϑΟʔϧυͷ͞Λද͠·͢ɻ ͜Ε͕ɺ1)1ӳޠͷΑ͏ͩͱݴΘΕΔॴҎͰ͢