BEAR.Sunday のはなし - 第89回PHP勉強会@東京

9541b31c963d9dc06901dab9d3049049?s=47 madapaja
April 28, 2015

BEAR.Sunday のはなし - 第89回PHP勉強会@東京

PHP5.5+ リソース指向フレームワークBEAR.Sundayの紹介です。
第89回PHP勉強会@東京で発表。
Ray.Di, Ray.Aop, BEAR.Resource などについて
ブログ→
http://blog.madapaja.net/entry/2015/04/30/200000

9541b31c963d9dc06901dab9d3049049?s=128

madapaja

April 28, 2015
Tweet

Transcript

  1. BEAR.Sunday ͷ͸ͳ͠ ؠ࡚ߊ࢘ʢ@madapajaʣ 2015-04-28 ୈ89ճ PHPษڧձˏ౦ژ

  2. Who am I? • ؠ࡚ߊ࢘ @madapaja • Symfony Ϣʔβʔձ •

    ϦδϣϒͰΤϯδχΞͯ͠·͢ʂ • ࠷ۙͷۀ຿Ͱ͸ Rails ͕ଟ͍ • PHPษڧձ@౦ژͷࢀՃ͸ٱ͠ͿΓ • 1೥൒μΠΤοτͯ͠ΔͷʹҰ޲ʹݮΒͳ͍ମॏʂʢͯ ͔૿͑ͨ……ʣ
  3. ͔ͤͬ͘ϦδϣϒͰ PHPษڧձ@౦ژ Λ ͢Δ͜ͱʹͳͬͨͷͰ ൃදͯ͠Έ·͢ʂ

  4. ͰɺࢿྉΛ࡞ΔͨΊʹ ͍Ζ͍ΖړͬͯͨΒ

  5. ʮୈ61ճPHPษڧձ@౦ژʯͰ΋΍ͬͯͨɻ

  6. ࠓ೔΋ࣅͨΑ͏ͳ࿩Λ͠·͢ m(__)m

  7. BEAR.Sunday ஌ͬͯ·͔͢ʁ

  8. BEAR.Sunday • ܊ࢁ͞Μʢ@koriymʣͷ࡞͍ͬͯΔϑϨʔϜϫʔΫ • PHPNW 2013 Ͱ΋ϓϨθϯςʔγϣϯ͞Εͨ • PHP 5.5+

    Ϧιʔεࢦ޲ϑϨʔϜϫʔΫ • ͜ΜͳαΠτ͕BEAR.SundayͰ࡞ΒΕ͍ͯ·͢ • Woman.exciteϚϚʢhttp://mama.woman.excite.co.jp/ʣ • Project Zuluʢhttp://www.pen-online.jp/ʣ • Pen Onlineʢhttp://www.projectzulu.org/ʣ • ஌ͬͯΔਓ΋ɺ஌Βͳ͍ਓ΋ BEAR.Sunday ৮ΕͯΈ·͠ΐ͏
  9. BEAR.Sunday = DI + AOP + REST(Hypermedia)

  10. BEAR.Sunday = Ray.Di + AOP + REST(Hypermedia)

  11. BEAR.Sunday = Ray.Di + Ray.Aop + REST(Hypermedia)

  12. BEAR.Sunday = Ray.Di + Ray.Aop + BEAR.Resource

  13. BEAR.Sunday = Ray.Di + Ray.Aop + BEAR.Resource 2.1.0 ࡢ೔ϦϦʔε

  14. BEAR.Sunday = Ray.Di + Ray.Aop + BEAR.Resource 2.1.0 ࡢ೔ϦϦʔε 2.1.0

  15. BEAR.Sunday = Ray.Di + Ray.Aop + BEAR.Resource 2.1.0 ࡢ೔ϦϦʔε 2.1.0

    1.0.2
  16. Ұͭͣͭઆ໌͠·͢

  17. DI = ґଘੑͷ஫ೖ ʢDependency injectionʣ

  18. None
  19. ϧʔϧΛهड़͢Δͱ

  20. ϧʔϧΛهड़͢Δͱ ΦϒδΣΫτ͕஫ೖ͞ΕΔ

  21. ϧʔϧΛهड़͢Δͱ ΦϒδΣΫτ͕஫ೖ͞ΕΔ ར༻ͷࡍʹ͸Injector͔ΒPostΠϯελϯεΛऔಘͯ͠ߦ͏

  22. Ray.DiΛར༻͢Δͱ • ؀ڥʹΑΓDBΛม͑ͨΓɺCacheγεςϜΛม͑ͨΓ͢ Δʹ͸ɺModule͚ͩมߋ͢Ε͹ྑ͍ • PostΫϥε͸ΠϯελϯεΛऔಘͨ࣌͠఺ͰඞཁͳΦϒ δΣΫτ͕஫ೖ͞Εͨʢ֎͔Βࣗಈతʹηοτ͞Εͨʣ ঢ়ଶ • PostΫϥε͕

    DBͱ͔Cacheͷ࣮૷Λ஌͍ͬͯΔඞཁ͕ ͳ͍ʢந৅ΫϥεʹͷΈґଘʣ
  23. DIͰಘΒΕΔ͜ͱ • ੜ੒ͱར༻ͷ෼཭ • ґଘੑΛ஫ೖ͢Δ͜ͱͰɺΫϥεؒͷີ݁߹ ౓ΛݮΒ͢

  24. Ray.Di 2.x • hhvm ରԠ • Qualifier Ξϊςʔγϣϯ΁ͷରԠ • toConstructor

    όΠϯσΟϯάʹΑΔ3rdύʔςΟΫϥε΁ͷ
 όΠϯσΟϯάʹରԠ • ScrutinizerΫϦʔϯίʔυΠϯσοΫε10.00ɺςετΧόϨοδ100% • ίʔσΟϯά͕OOPʹ • Ray.CompilerʹΑΔύϑΥʔϚϯε޲্ͱΠϯελϯεੜ੒ίʔυͷ
 ࣗಈੜ੒ʹରԠ(v2.1) • ͳͲ……
  25. AOP
 = ΞεϖΫτࢦ޲ϓϩάϥϛϯά ʢAspect Oriented Programmingʣ

  26. AOP
 = ΞεϖΫτࢦ޲ϓϩάϥϛϯά ʢAspect Oriented Programmingʣ • ΞεϖΫτʢʹԣஅతؔ৺ࣄʣͷॲཧ • ؔ৺ࣄͷ෼཭ʢSoC:

    Separation of Concernsʣ
  27. • Ωϟογϡͷॲཧ͸ Post Ϋϥεͷຊ࣭తؔ৺ࣄͰ͸ͳ͍ • Post Ϋϥε͸શͯͷϙετΛฦ͢ࣄʹઐ೦Ͱ͖Ε͹ɺ ΋ͬͱ޾ͤʹͳΕΔ

  28. Ray.Aop Λ࢖༻͢Δͱ

  29. Ray.Aop Λ࢖༻͢Δͱ PostͰ͸ຊ࣭తؔ৺ࣄʹઐ೦

  30. Ray.Aop Λ࢖༻͢Δͱ • ΩϟογϡͷॲཧΛ෼཭͠ɺଞͷΩϟογϡͷඞཁͳՕॴͰ ΋࠶ར༻Ͱ͖ΔΑ͏ʹͳͬͨ

  31. Ray.Aop Λ࢖༻͢Δͱ CacheInterceptor Ͱԣஅతؔ৺ࣄΛॲཧ • ΩϟογϡͷॲཧΛ෼཭͠ɺଞͷΩϟογϡͷඞཁͳՕॴͰ ΋࠶ར༻Ͱ͖ΔΑ͏ʹͳͬͨ

  32. Ray.Aop Λ࢖༻͢Δͱ

  33. Ray.Aop Λ࢖༻͢Δͱ Module ͰΠϯλʔηϓλʔΛద༻

  34. Πϯλʔηϓλ λΠϚʔ όϦσʔγϣϯ τϥϯβΫγϣϯ ࣮ϝιου • ࣮ϝιουΛแΈࠐΉΑ͏ʹԣஅతؔ৺ࣄΛڬΈࠐΉ͜ͱ͕Ͱ͖Δ

  35. Ray.Aop 2.x • ΞϊςʔγϣϯॱʹΑΔΠϯλʔηϓλͷ࣮ߦ • ΞεϖΫτΫϥεͷΦʔτϩʔμʔొ࿥ • ΧελϜϚονϟʔ΁ͷରԠ • ScrutinizerΫϦʔϯίʔυΠϯσοΫε10.00ɺςε

    τΧόϨοδ100% • ΑΓޮ཰తͳίʔυࣗಈੜ੒ͷ࢓૊Έ͕ಋೖʢ2.1ʣ • ͳͲ……
  36. ROP = Ϧιʔεࢦ޲ϓϩάϥϛϯά ʢResource Oriented Programmingʣ

  37. Ϧιʔεࢦ޲ϓϩάϥϛϯά • MVCͷΑ͏ʹController͕Model͔ΒσʔλΛड ͚औͬͯViewʹ౉͢ͷͰ͸ͳ͘ɺBEARͰ͸֤Ϧ ιʔε͕ϨϯμϥʔΛ࣋ͪϦιʔεΛදݱ͢Δ Request Representation Resource Renderer

  38. ϦιʔεΦϒδΣΫτ • 1ͭͷURIͷϦιʔε͕1ΫϥεʹϚοϓ͞ΕΔ

  39. ϦιʔεΦϒδΣΫτ • @Link ͸ <a> λάͷΑ͏ʹϦιʔεಉ࢜ΛϦϯΫ͢Δ • @Embed͸ <img src="uri">

    λάͷΑ͏ʹϦιʔε͕ଞͷϦιʔεΛຒΊࠐΊΔ
  40. ϦιʔεΦϒδΣΫτ • @Link ͸ <a> λάͷΑ͏ʹϦιʔεಉ࢜ΛϦϯΫ͢Δ • @Embed͸ <img src="uri">

    λάͷΑ͏ʹϦιʔε͕ଞͷϦιʔεΛຒΊࠐΊΔ @Link ΞϊςʔγϣϯʹΑΔϦιʔεಉ࢜ͷ઀ଓ
  41. ϦιʔεΦϒδΣΫτ • @Link ͸ <a> λάͷΑ͏ʹϦιʔεಉ࢜ΛϦϯΫ͢Δ • @Embed͸ <img src="uri">

    λάͷΑ͏ʹϦιʔε͕ଞͷϦιʔεΛຒΊࠐΊΔ @Link ΞϊςʔγϣϯʹΑΔϦιʔεಉ࢜ͷ઀ଓ @Embed ΞϊςʔγϣϯʹΑΔϦιʔεͷຒΊࠐΈ
  42. URIͱΫΤϦʔʹΑΔϦιʔεϦΫΤετ

  43. BEAR.Resource • ΦϒδΣΫτ͕ϦιʔεͷৼΔ෣͍Λ࣋ͭ HypermediaϑϨʔϜϫʔΫ • URIͱΫΤϦʔʹΑΔϦιʔεΦϒδΣΫτ΁ ͷΞΫηε • ϋΠύʔϦϯΫʹΑΔϦιʔεΦϒδΣΫτؒ ͷ࿈ܞʢදݱʣ

  44. DI Ͱߏ଄Λɺ AOPͰԣஅతؔ৺ࣄΛɺ ROPͰϦιʔεಉ࢜Λ ݁ͼ͚ͭΔ Connecting Framework

  45. BEAR.Sunday ͱ͸ • PHP5.5+ʹରԠͨ͠WebΞϓϦέʔγϣϯϑϨʔϜϫʔΫ • RESTͷྗΛҾ͖ग़͠ɺHTTPΛΞϓϦέʔγϣϯϓϩτίϧͱ͠ ͯѻ͏Ϧιʔεࢦ޲ϑϨʔϜϫʔΫ • DIʹΑΔΦϒδΣΫτಉ࢜ɺAOPʹΑΔϨΠϠʔԣஅɺRESTʹ ΑΔ৘ใؒΛ઀ଓ͢ΔConnecting

    ϑϨʔϜϫʔΫ • ࢖͍͜ͳ͢ʹ͸ઃܭྗ͕ࢼ͞ΕΔɻ • ͚Ͳɺ։ൃऀͱ΋೔ຊޠͰձ࿩Ͱ͖ΔͷͰɺੵۃతʹνϟϨϯδ ͯ͠Έͯ͸ʁ • ͱΓ͋͑ͣ http://bearsunday.github.io/manuals/1.0/ja/ ͔Β࢝ ΊͯΈΑ͏ʂ
  46. Madapaja.TwigModule • https://github.com/madapaja/madapaja.twigmodule • BEAR.Sunday ͰͷϦιʔεΛTwigΛ༻͍ͯHTMLͱͯ͠දݱʢϨϯμʔʣ ͢ΔͨΊͷΞμϓλΛ࡞Γ·ͨ͠ʂ • ͍Ζ͍Ζ଍Γͯͳ͍ͷͰɺͪ͜Β΁ͷϓϧϦΫ΋͓଴͍ͪͯ͠·͢ʂ •

    Α͔ͬͨΒࢼ͍ͯͩ͘͠͞ʂ • BEAR.Sunday ͷϚχϡΞϧʹ΋ͪΒͬͱهࡌ͞Ε͍ͯ·͢ʢhttp:// bearsunday.github.io/manuals/1.0/ja/html.htmlʣ • Have fun!
  47. ͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ