Upgrade to Pro — share decks privately, control downloads, hide ads and more …

そのコード、フレームワークの外でも動きますか?

 そのコード、フレームワークの外でも動きますか?

PHPerの皆さんは、日々Webアプリケーションを開発している中で、フレームワークのコードと自分たちのコードを区別できていますか?
自分たちのアプリケーションにとって重要な、業務知識をモデリングして書いたコードは、「いまのフレームワーク」と切り離して動かすことができるでしょうか?

フレームワークのバージョンアップ、あるいはフレームワークの開発終了によって自分たちのアプリケーションの命運が左右されることがないように、フレームワークへの依存を取り除き、大事なコードの可搬性を高めましょう。
ごく一般的な小さなWebアプリケーションを題材に大事なコードを守りつつLaravelからSymfonyにフレームワーク変更する様子を実演しながら、考え方とテクニックについてご紹介します。

Hiromi Hishida

March 28, 2021
Tweet

More Decks by Hiromi Hishida

Other Decks in Programming

Transcript

  1. 1)1FS,BJHJCZ!XFC
    ͦͷίʔυɺϑϨʔϜϫʔΫͷ֎
    Ͱ΋ಈ͖·͔͢ʁ

    View full-size slide

  2. w 1)1ྺ೥ɻϑϦʔϥϯεˠΧϧ
    ςοτίϛϡχέʔγϣϯζ։ൃ
    ෦ɺݱࡏόοΫΤϯυνʔϜͷϦ
    ʔυΤϯδχΞɻ෭ۀͰ
    .JDPXPSLTͰ΋ίʔυॻ͍ͯ·
    ͢ɻ
    w ͲͪΒͷձࣾͰ΋ʮਓʹ࢖ΘΕΔ
    γεςϜʯΛ࡞Γͨͯ͘ɺϝϯςφ
    ϏϦςΟͷߴ͍։ൃΛ໨ࢦͯ͠νʔ
    ϜϝϯόʔͱҰॹʹ೔ʑฃಆதʂ
    ҰॹʹؤுΓ͍ͨ஥ؒืूதʂ
    w NPUIFSPG

    View full-size slide

  3. ͜ͷUBMLͷର৅
    w ࣗࣾαʔϏεΛ࢝Ίͱ͢Δɺॳճ࡞ͬͨޙʹൺֱత௕ظؒӡ༻·ͰؔΘΔ
    8FCΞϓϦέʔγϣϯΛ։ൃ͍ͯ͠Δ1)1FS
    w ໨҆ͱͯ͠਺೥ʙे೥Ҏ্
    w ʢ௥ՃͰʣͳͥυϝΠϯۦಈઃܭ΍ςετۦಈ։ൃ͕ॏࢹ͞ΕΔΑ͏ʹͳͬ
    ͨͷ͔஌Γ͍ͨ1)1FS

    View full-size slide

  4. ΞϓϦέʔγϣϯ௕ظӡ༻ͷน͸ͳʹ͔ʁ

    View full-size slide

  5. ΞϓϦέʔγϣϯ௕ظӡ༻ͷน͸ͳʹ͔ʁ
    w ϏδωεࣗମͷมԽʹΑΔ࢓༷มߋ
    w ϑϨʔϜϫʔΫͷόʔδϣϯΞοϓ
    w ϑϨʔϜϫʔΫͷ։ൃऴྃ
    w ൪֎։ൃ։࢝࣌఺Ͱ͸ϞμϯͰΠέͯͨϑϨʔϜϫʔΫ͕ݹष͍લ࣌୅ͷ΋
    ͷʹͳΔ

    View full-size slide

  6. ΞϓϦέʔγϣϯ௕ظӡ༻ͷน͸ͳʹ͔ʁ
    w ϏδωεࣗମͷมԽʹΑΔ࢓༷มߋ
    w ͜Ε͸ඞཁͳ΍ͭɻ௕ظӡ༻ͷ୉ޣຯʂ
    w ϑϨʔϜϫʔΫͷόʔδϣϯΞοϓ
    w ͱ͖ʹഁյతͳมߋ͕͋Δ͜ͱ΋ʜ
    w ϑϨʔϜϫʔΫͷ։ൃऴྃ
    w ηΩϡϦςΟతʹ΍͹͍ঢ়ଶΛ์ஔ͸ආ͚͍ͨ
    w ൪֎։ൃ։࢝࣌఺Ͱ͸ϞμϯͰΠέͯͨϑϨʔϜϫʔΫ͕ݹष͍લ࣌୅ͷ΋ͷʹͳΔ
    w ϢʔβʔՁ஋తʹ͸ଈ࠲ʹμϝʔδ͸ແ͍͕஝ੵμϝʔδ͸͋ΔʢΤϯδχΞ࠾༻ͱ͔ʣ

    View full-size slide

  7. นʹͿ͔ͭͬͨΒϦϓϨʔεɾϦχϡʔΞϧ
    w Ԧಓతʹ͸ϑϨʔϜϫʔΫͷ։ൃऴྃʹରԠ
    w ϑϨʔϜϫʔΫͷόʔδϣϯΞοϓʹ൐͏ഁյతͳมߋ͕େ͖͗͢Δ৔߹ɺό
    ʔδϣϯΞοϓͰ΋ى͖Δ
    w ׬શϦϓϨʔεʢશମΛϦϓϨʔεʣͰͳͯ͘΋ɺ͋ͬͪ΋ͬͪ͜΋ϑϨʔϜ
    ϫʔΫͷόʔδϣϯΞοϓʹ߹Θͤͯॻ͖׵͑Δύλʔϯ΋͋Δ
    w ϑϨʔϜϫʔΫࣗମͰͳ͘ଞͷ֎෦ཁҼʢϏδωεଆ͔Β࡮৽Λཁ੥͞ΕΔ
    ͱ͔ʣʹΑͬͯඞཁʹͳΔ͜ͱ΋͋Δ

    View full-size slide

  8. ϦϓϨʔεɾϦχϡʔΞϧ
    w ࠷ॳͷϑϨʔϜϫʔΫʹΨοπϦґଘ͍ͯ͠ΔͱɺશϩδοΫΛॻ͖௚͢͜ͱ
    ʹͳΔ
    w Ϣʔβʔମݧͱͯ͠ͷʮͰ͖Δ͜ͱʯ͸มΘΒͳ͍ͷʹ৽ن։ൃฒΈͷ࣌ؒ
    ͕͔͔Δ

    View full-size slide

  9. ϦϓϨʔεɾϦχϡʔΞϧ
    w ࠷ॳͷϑϨʔϜϫʔΫʹΨοπϦґଘ͍ͯ͠ΔͱɺશϩδοΫΛॻ͖௚͢͜ͱ
    ʹͳΔ
    w جຊతʹͰ͖Δ͜ͱ͸มΘΒͳ͍ͷʹ৽ن։ൃฒΈͷ͕͔͔࣌ؒΔ
    ϠμϠμॻ͖௚ͨ͘͠ͳ͍Αʙʙ

    View full-size slide

  10. ϦϓϨʔεɾϦχϡʔΞϧͰർฐ͠ͳ͍ͨΊʹ

    View full-size slide

  11. ϦϓϨʔεɾϦχϡʔΞϧͰർฐ͠ͳ͍ͨΊʹ
    w ϑϨʔϜϫʔΫ͔ΒʮࢲୡͷίʔυʯΛಠཱ͓ͤͯ͘͞
    w ʮࢲୡͷίʔυʯʹۀ຿υϝΠϯͷίʔυ
    w 1)1ࣗମ͸ϑϨʔϜϫʔΫΑΓ΋ޙํޓ׵ੑʹڧ͍
    w ʢ1)1Ͱ͸ܕએݴڧԽͷͨΊʹ݁ߏޙํޓ׵͕ࣺͯΒΕͨͷͰ஫ҙʣ

    View full-size slide

  12. ʮࢲୡͷίʔυʯΛϑϨʔϜϫʔΫʹґଘ͠ͳ͍Ͱॻ͜͏
    w ࣮ԋ͠·͢

    View full-size slide

  13. ʮࢲୡͷίʔυʯΛϑϨʔϜϫʔΫʹґଘ͠ͳ͍Ͱॻ͜͏
    w ͋Γ;Εͨ੕࠲઎͍ΞϓϦέʔγϣϯ
    w ੜ೥݄೔ΛೖΕΔͱࠓ೔ͷӡ੎͕දࣔ͞ΕΔ

    View full-size slide

  14. ίʔυ
    w -BSBWFMͰϕλʹॻ͍ͨ΋ͷIUUQTHJUIVCDPNXFCGPSUVOFUFMMFS
    MBSBWFMUSFFCBTJDMBSBWFM
    w -BSBWFMϦϑΝΫλͯ͠υϝΠϯͷίʔυΛಠཱͤͨ͞΋ͷIUUQT
    HJUIVCDPNXFCGPSUVOFUFMMFSMBSBWFMUSFFNBTUFS
    w 4ZNGPOZʹҠ২ͨ͠΋ͷIUUQTHJUIVCDPNXFCGPSUVOFUFMMFS
    TZNGPOZ

    View full-size slide

  15. ʮࢲୡͷίʔυʯ͸ϙʔλϒϧ͔ʁ

    View full-size slide

  16. ʮࢲୡͷίʔυʯ͸ϙʔλϒϧ͔ʁ
    w ϑϨʔϜϫʔΫʹґଘͤͣʹॻ͍ͨίʔυ͸ϑϨʔϜϫʔΫ͕มΘͬͯ΋࢖͍
    ճͤΔ
    w ಠཱύοέʔδʹͯ྆͠ํ͔ΒDPNQPTFSSFRVJSF͢Δ͙Β͍͕ཧ૝
    w .PSFWBOJMMB1)1
    w SFGT7BOJMMB+4
    w *OUFSGBDF %FQFOEFODZ*OKFDUJPOΛ͏·͘࢖͓͏

    View full-size slide

  17. ʮࢲୡͷίʔυʯ͸ϙʔλϒϧ͔ʁ
    w ʮࢲୡͷίʔυʯͷॏཁͳ෦෼͕Ͳ͜ͳͷ͔໌ࣔͯ͘͠Εͨͷ͸-BSBWFMͱ
    4ZNGPOZͱ͍͏όϦΤʔγϣϯ
    w -BSBWFMWT4ZNGPOZ &MPRVFOU "DUJWF3FDPSE
    WT
    %PDUSJOF %BUB.BQQFS
    ྆ํʹରͯ͠ಈ͘Α͏ʹυϝΠϯίʔυΛॻ͜͏
    ͱ͢Δ͜ͱͰɺڞ௨෦෼ʢྫ͑͹ɺ%FDJEF4JHOΫϥε΍6TF$BTFΫϥεʣ
    ͱՄม෦෼ʢྫ͑͹'FUDI'PSUVOF*OUFSGBDFʣ͕ݟ͑Δ

    View full-size slide

  18. όϦΤʔγϣϯ͸ਓ΋ίʔυ΋ڧ͘͢Δ
    w ҧ͏ϑϨʔϜϫʔΫ
    w ҧ͏03.
    w ҧ͏ݴޠ
    w ҧ͏νʔϜ

    View full-size slide

  19. όϦΤʔγϣϯ͸ਓ΋ίʔυ΋ڧ͘͢Δ
    w &OKPZWBSJBUJPO

    View full-size slide