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
パイプ演算子の実装を 覗いてみよう
Search
Akinori Takigawa
March 20, 2026
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
パイプ演算子の実装を 覗いてみよう
Akinori Takigawa
March 20, 2026
More Decks by Akinori Takigawa
See All by Akinori Takigawa
Nginxになりきって、FCGIでPHPと喋ろう
akinoriakatsuka
0
86
PHPUnitのテストイベントを使ってテストにかかる時間の計測をしよう
akinoriakatsuka
0
140
PHPでCQRS+ES入門
akinoriakatsuka
0
230
手軽に作れる電卓を作って イベントソーシングに親しもう CQRS+ESカンファレンス2026
akinoriakatsuka
0
900
Rubyで作る物理エンジン - 叡電LT
akinoriakatsuka
0
43
パイプ演算子の実装を覗いてみよう - 【非公式】PHPカンファレンス福岡2025・前日Meetup
akinoriakatsuka
0
50
技術的負債の会計学 - PHPカンファレンス広島2025
akinoriakatsuka
8
1.6k
スクラムをちゃんとやる勇気
akinoriakatsuka
0
69
キャリアを拓く! 登壇のススメ - PHPカンファレンス関西アフターパーティー in スマレジ
akinoriakatsuka
1
160
Featured
See All Featured
BBQ
matthewcrist
89
10k
Done Done
chrislema
186
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Un-Boring Meetings
codingconduct
0
310
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Designing for Timeless Needs
cassininazir
1
260
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Navigating Weather and Climate Data
rabernat
0
220
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Raft: Consensus for Rubyists
vanstee
141
7.5k
Abbi's Birthday
coloredviolet
2
8.1k
4 Signs Your Business is Dying
shpigford
187
22k
Transcript
͖͋ ύΠϓԋࢉࢠͷ࣮Λ ͍ͯΈΑ͏👀 1)1FS,BJHJQIQFSLBJHJ
ϓϩϙʔβϧ 1)1Ͱಋೖ͞ΕͨύΠϓԋࢉࢠʢcʣɺ͏͍ͬͯΔͰ͠ΐ͏͔ʁ ύΠϓԋࢉࢠΛ͏ͱɺ TUSUPVQQFS IFMMP ͱIFMMPcTUSUPVQQFS ͕ಉ͡ҙຯʹͳΓ·͢ɻ
࣮ɺྫʹ͋͛ͨͭͷࣜɺPQDPEFͱͯ͠ಉҰͰ͢ɻ
ϓϩϙʔβϧ ͜ͷτʔΫͰɺQIQTSDͷιʔείʔυΛಡΈղ͖ͳ͕ΒɺύΠϓԋࢉࢠ͕ͲͷΑ ͏ʹ࣮͞Ε͍ͯΔ͔Λݟ͍͖ͯ·͢ɻ ۩ମతʹҎԼͷ༰Λѻ͍·͢ w WMEͰͷPQDPEFͷൺֱ w PQDPEFͷίϯύΠϧʹΘΕΔ[FOE@BTUͱ[OPEF w
ύΠϓԋࢉࢠΛॲཧ͢Δ[FOE@DPNQJMF@QJQF 1)1ͷ৽ػೳΛ௨ͯ͡QIQTSDʹೖͯ͠Έ·͠ΐ͏
ࠓͷඪ w ʮϓϩάϥϛϯάݴޠͷιʔείʔυ໘നͦ͏͔ʁʯͱࢥͬͯΒ͏ 1)1ͷ৽ػೳΛ௨ͯ͡QIQTSDʹೖͯ͠Έ·͠ΐ͏
୍ ܒلʢ28ࡀʣ ͖͋ X: @aki_artisan ؔPHPษڧձओ࠵ PHPerྺͨͿΜ7͘Β͍ ը૾ɿPHPerKaigi
ύΠϓԋࢉࢠͱ
ͦͦʮԋࢉࢠʯͬͯ w ͻͱͭҎ্ͷ͔ΒผͷΛੜΈग़͢ͷ w B ʢՃࢉࢠʣ w ˠʢࢉज़ԋࢉࢠʣ w
DPOEJUJPO IPHFGVHBʢ݅ԋࢉࢠʣ w IUUQTXXXQIQOFUNBOVBMKBMBOHVBHFPQFSBUPSTQIQ
ύΠϓԋࢉࢠͷՃ w 1)1ͰՃ͞Ε߲ͨԋࢉࢠ w ࠨลʹࣜɺӈลʹύϥϝʔλΛͻͱͭऔΔDBMMBCMFΛͱΔ w TUSUPVQQFS bIPHF ͱॻ͘ͷͱɺIPHFcTUSUPVQQFS ʜ
ͱॻ͘ͷ͕ ಉ͡ҙຯʹͳΔ w ԋࢉࢠͷՃ1)1ͷ/VMMηʔϑԋࢉࢠ Ҏདྷ
DBMMBCMF w ݺͼग़͠ՄೳͳԿ͔Λද͢ܕ w 1)1Ͱ͍ΖΜͳͷ͕ίʔϧͰ͖Δ w Ϋϩʔδϟʔ w ໊ؔΛද͢จࣈྻ UJNF
w IUUQTXXXQIQOFUNBOVBMKBMBOHVBHFUZQFTDBMMBCMFQIQ
ࣜ w ʢͪΌΜͱઆ໌͢Δͷ͕͍͘͢͝͠ʣ w ʮ࠷؆୯Ͱ࠷ਖ਼֬ͳࣜͷఆٛɺ͕͋ΔͷશͯͰ͢ʯ ʢ1)1ݴޠϦϑΝϨϯεʣ w ͬ͞ͺΓΘ͔Βͳ͍😅 w ͬ͘͟Γݴ͑ɺͳͲͷͦͷͷɺBͳͲͷมɺBͳͲͷԋ
ࢉࢠΛؚΉͷͳͲ
ࣜͱจ w จલͷηϛίϩϯʢ͘͠ɺ1)1։࢝λάʣ͔Βɺ ηϛίϩϯͰऴΘΔ෦·Ͱ w B w Λฦ͞ͳ͍ w
B C ͱॻ͚ͳ͍ w ରͯ͠ɺB C ͱॻ͚ΔɻC͕ࣜͰ͋ΔͨΊɻ w ҙຯͳ͍͕ͱ͍͏จจ๏తʹڐ༰͞ΕΔ
༨ஊʣೖࣜΛฦ͢ w Bͱ͍͏ࣜʢೖࣜʣͱ͍͏Λฦ͢ w FDIP B ͕ग़ྗ͞ΕΔ w σϞ
w ؔݺͼग़͕͠ೖΕࢠʹͳΔͱ͖ʹಡΈ͘͢ͳΔ ύΠϓԋࢉࢠͷ༻్ #FGPSF "GUFS
͜͜·Ͱͷ·ͱΊ w ԋࢉࢠɺΛड͚औͬͯΛฦ͢ͷ w ύΠϓԋࢉࢠ1)1ͰՃ͞Ε߲ͨԋࢉࢠ w ؔͷೖΕࢠߏΛಡΈ͘͢͢Δͷʹ͑Δ
1)1Ͳ͏ιʔείʔυΛॲཧ͠ ͍ͯΔ͔
ԋࢉࢠͷ࣮Λ͘લʹ w ·ͣɺ1)1͕ͲͷΑ͏ʹಈ͍͍ͯΔ͔ܰ͘Δඞཁ͕͋Δ w HJUIVC্ʹιʔείʔυ͕ެ։͞Ε͍ͯΔ w IUUQTHJUIVCDPNQIQQIQTSD w $ݴޠͰॻ͔Ε͍ͯΔ
;FOE&OHJOF w 1)1ͷݴޠॲཧܥ w 4"1*Λܦ༝ͯ͠;FOE&OHJOFʹ1)1ίʔυύϥϝʔλ͕͞ΕΔ ʢࠓճɺৄࡉׂѪʣ -FYFS 1BSTFS $PNQJMFS 7.
τʔΫϯྻ "45 PQDPEF 1)1ίʔυ
-FYFS w ࣈ۟ղੳ w ιʔείʔυΛτʔΫϯྻʹ͢Δ w τʔΫϯͱιʔείʔυ্Ͱ࠷খͷҙຯͷ͋Δ୯Ґʢ୯ޠΈ͍ͨͳ୯Ґʣ w B
w ʮ͜͜Ͱ͖ͷΛ͵͍Ͱ͍ͩ͘͞ʯࣈ۟ղੳ͕͍͠ w ;FOE[FOE@MBOHVBHF@TDBOOFSM
τʔΫϯ w UPLFO@HFU@BMM ͰτʔΫϯྻΛՄࢹԽͰ͖Δ w σϞ w ͱͰࣈ۟ղੳͷ݁Ռ͕ҟͳΔ
w ߏจղੳ w τʔΫϯྻ͔Β"45Λग़ྗ͢Δ w "CTUSBDU4ZOUBY5SFFʢநߏจʣ w ʮ͍ͷࠇ͍؟ͷେ͖ͳগঁʯ ߏจղੳ͕͍͠ w
;FOE[FOE@MBOHVBHF@QBSTFSZ 1BSTFS IUUQTMFBEJOHFDPKQSE
$PNQJMFSͱ7. w ίϯύΠϥʔͰ"45Λ͞ΒʹPQDPEFͱ͍͏தؒදݱʹม͢Δ w ;FOE7.͕PQDPEFΛ࣮ߦ͢Δ͜ͱͰ1)1͕࠷ऴతʹ࣮ߦ͞ΕΔ w ग़ྗ4"1*ͷϋϯυϥʔΛݺͼग़ͯ͠ߦ͏ w ;FOE[FOE@DPNQJMFD w
;FOE[FOE@FYFDVUFD
͜͜·Ͱͷ·ͱΊ w 1)1ɺࣈ۟ղੳˠߏจղੳˠίϯύΠϧˠ࣮ߦͱ͍͏ྲྀΕͰ࣮ߦ͞ΕΔ -FYFS 1BSTFS $PNQJMFS 7. τʔΫϯྻ "45 PQDPEF
1)1ίʔυ
7-%ΛͬͯPQDPEFΛݟΔ
7-%ͱ w PQDPEFΛग़ྗ͢Δπʔϧ w 7VMDBO-PHJD%VNQFS w IUUQTEFSJDLSFUIBOTOMQSPKFDUTIUNMWME w IUUQTHJUIVCDPNEFSJDLSWME
7-%Ͱग़ྗͨ͠PQDPEFʢύΠϓԋࢉࢠͳ͠ʣ <?php echo strtoupper('hello');
<?php echo 'hello pipe!' |> strtoupper(...); 7-%Ͱग़ྗͨ͠PQDPEFʢύΠϓԋࢉࢠ͋Γʣ
PQDPEFͷൺֱ w PQDPEFͱͯ͠ΦϖϥϯυҎ֎શ͘ಉҰ w ͭ·Γɺ7.ʹ͞ΕΔPQDPEFͷ࣌Ͱؔݺͼग़͠ͱಉ͡ॲཧʹͳͬͯ ͍Δ🕵 w %PDLFSίϯςφͰࢼͤΔڥΛ࡞Γ·ͨ͠ w IUUQTHJUIVCDPNUBLJHBXBBLJOPSJQIQWME
͜͜·Ͱͷ·ͱΊ w PQDPEF7-%ΛͬͯμϯϓͰ͖Δ w ύΠϓԋࢉࢠͱؔݺͼग़͠ͰɺPQDPEF͕ಉҰʹͳΔ
ύΠϓԋࢉࢠͷ࣮
ύΠϓԋࢉࢠͷ1VMM3FRVFTU w ֘ͷϓϧϦΫ w IUUQTHJUIVCDPNQIQQIQTSDQVMM w มߋߦ w ͏ͪςετߦςετ
w ओཁͷػೳ෦ߦ΄ͲͰ࣮ݱ͞Ε͍ͯΔ
ύΠϓԋࢉࢠͷ1VMM3FRVFTU w มߋ w MFYFSͱQBSTFSͱDPNQJMFS w ςετϑΝΠϧͷՃ w /&84ͱ61(3"%*/(
ύΠϓԋࢉࢠͷ࣮ͷ͋Β·͠ w -FYFSͰcΛ5@1*1&τʔΫϯͱͯ͠ड͚औΕΔΑ͏ʹ͢Δ w 1BSTFSͰ5@1*1&τʔΫϯΛड͚औͬͨΒ;&/%@"45@1*1&ϊʔυΛ࡞Δ w $PNQJMFSͰ;&/%@"45@$"--ͳͲͷݺͼग़͠ͷϊʔυʹஔ͖͑Δ -FYFS 1BSTFS $PNQJMFS
7. τʔΫϯྻ "45 PQDPEF 1)1ίʔυ มߋ
ॲཧͷ֩৺෦ w $PNQJMFSͰ;&/%@"45@$"--ͳͲͷݺͼग़͠ͷϊʔυʹஔ͖͑Δ w ύΠϓԋࢉࢠͷOPEF͕དྷͨͱ͖ɺಉ͡ҙຯʹͳΔݺͼग़͠ͷϊʔυʹஔ ͖͍͑ͯΔ w ݺͼग़͠ͷϊʔυʹஔ͖͑ͯ͠·͑ɺ ͦͷઌͷॲཧͰैདྷͱಉ͡ݺͼग़͠ͷPQDPEF͕ग़ྗ͞ΕΔ w
7-%Ͱ֬ೝͨ͠ࣄ࣮ͱҰகʂ
[FOE@DPNQJMF@FYQS w ࠶ؼతʹ[FOE@DPNQJMF@FYQSΛݺͼग़͠ w OPEF͕ͦΕͧΕࢠͱͳΔOPEFΛ͍࣋ͬͯΔ w ߲ԋࢉࢠͰ͋ΕɺMFGUͱSJHIU͕͋Δ w ύΠϓԋࢉࢠͷϊʔυͰ͋Εɺ [FOE@DPNQJMF@FYQS@JOOFSͳͲΛܦ༝ͯ͠
[FOE@DPNQJMF@QJQF͕ݺΕΔ
[FOE@DPNQJMF@QJQF w GDBMM@BTUͱ͍͏ؔݺͼग़͠ͷϊʔυʹม͔͑ͯΒɺ [FOE@DPNQJMF@WBSʹ͍ͯ͠Δ ࡞͍ͬͯΔOPEF;&/%@"45@$"--
·ͱΊ ύΠϓԋࢉࢠͷॲཧ -FYFSͱ1BSTFSͰύΠϓԋࢉࢠͷϊʔυΛ࡞ΕΔΑ͏ʹ͠ɺ $PNQJMFSͰύΠϓԋࢉࢠͷϊʔυΛݺͼग़͠ͷϊʔυʹஔ͢Δ͜ͱͰ ࣮ݱ͞Ε͍ͯΔ
࣌ؒ༨Ε
HECͰ1)1ͷίϯύΠϧॲཧΛͬͯΈΔ w [FOE@DPNQJMF@QJQFʹḷΓண͘·Ͱ
͓͢͢Ίͷࢿྉ
ࠓճɺௐࠪʹཱͬͨπʔϧɾαʔϏε w %FFQ8JLJ w (%# w 7-% w 1)1ϚχϡΞϧ
1)1ʹ৽͍͠ԋࢉࢠΛ࣮͢ΔνϡʔτϦΞϧ w IUUQTCMPHTIJOYDPNFOUSZJNQMFNFOUJOHUIFSBOHFPQSBSBUPSJO QIQ w ࣮ࡍʹखΛಈ͔ͯ͠ɺ3BOHFԋࢉࢠΛՃͰ͖Δ w ʢࠓճ1)1ʹೖͬͨcԋࢉࢠͱඃΔͷͰɺҧ͏จࣈͰదٓಡΈସ͑Δඞཁ ͕͋Δʣ
(PݴޠͰͭ͘ΔΠϯλϓϦλ w ࣈ۟ղੳߏจղੳΛθϩ͔Βཧղ͢Δͷʹ ͱͯॿ͚ʹͳΔ w ະ༁͕ͩɺίϯύΠϥΛ࡞Δଓฤ͋Δ
QIQGQN QIQ ΛϏϧυͯ͠HECͰσόοά࣮ߦͰ͖Δ%PDLFS$PNQPTFڥ Λ࡞ͬͨ w IUUQTCMPHTIJOYDPNFOUSZHECQIQ w HECͷ͍ํͳͲৄ͍͠
QIQTSDΛಡΜͰΈΑ͏ w IUUQTGPSUFFKQQIQDPOQSPQPTBM BEEGEGDFDDD w ͬͱৄ͘͠QIQTSDͷಡΈํΛղઆ͍ͯ͠Δ
5IBOLZPV