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.9k
ちょうぜつ改め21世紀ふつうのソフトウェア設計
tanakahisateru
14
8k
まんがのかきかた
tanakahisateru
8
620
10秒で衝突するUUIDの作り方
tanakahisateru
40
38k
これならしんどくないGit運用の考え方
tanakahisateru
21
5.7k
abstract は恥だが役に立つ
tanakahisateru
0
18k
Other Decks in Technology
See All in Technology
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
2
600
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
160
データベース03: 関係データモデル
trycycle
0
110
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
360
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
280
.NET Profiler in 2024.
kkamegawa
2
2.1k
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.2k
いいたいことちゃんという
tkengo
0
250
今日からできる!簡単 .NET 高速化 Tips -2024 edition-
xin9le
7
4.5k
個人のAWSアカウントをマルチ運用してみた
miura55
2
200
Rustで「プリズモイダル法」を利用して「土量計算」をガチでやる
nokonoko1203
1
340
認知症フレンドリーテックとスタックチャン
naokiuc
0
310
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Design by the Numbers
sachag
274
18k
Why Our Code Smells
bkeepers
PRO
331
56k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
A better future with KSS
kneath
231
16k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
GraphQLの誤解/rethinking-graphql
sonatard
56
9.3k
Statistics for Hackers
jakevdp
790
220k
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ӳޠͷΑ͏ͩͱݴΘΕΔॴҎͰ͢