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

RubyからPHPへ -エンジニアのための思考移行ガイド-

kuromatu
September 14, 2013

RubyからPHPへ -エンジニアのための思考移行ガイド-

社会人になって幸運にも4年間Ruby + Ruby on Railsを使った開発に慣れ親しんだ後に、 PHPを使った歴史あるシステムに2年間携わってきました。 その中で、
* RubyからPHPを使うようになってどう考えが変わったか
* RubyとPHPの両方を見れて良かったこと
* 今後RubyからPHPへ移行する方々へのメッセージ
をお話します。

kuromatu

September 14, 2013
Tweet

More Decks by kuromatu

Other Decks in Programming

Transcript

  1. Ruby͔Β
    PHP΁
    @kuromatu ൃද
    -ΤϯδχΞͷͨΊͷࢥߟҠߦΨΠυ-

    View full-size slide

  2. ͸ͳ͢ͻͱ
    • ຀໺༟೭ʢ@kuromatuʣ
    • גࣜձࣾVOYAGE GROUP ECφϏॴଐ
    • ΤϯδχΞ7೥໨ʢRuby4೥ɺPHP2೥ʣ
    • ήʔϚʔʢఏಜɺङਓɺͳͲͳͲʣ

    View full-size slide

  3. ΤϯδχΞͱͯ͠Ͳ͏Αʁ
    • ࣾձਓʹͳ͔ͬͯΒຊ֨తʹϓϩάϥϛϯά
    Λ࢝Ί·ͨ͠
    • ൃදͰ͖ΔΑ͏ͳେͦΕͨ͜ͱ͸΍ͬͯͳ͍
    ͚Ͳɺͦͦ͜͜ͷ͓࢓ࣄΛ͖ͯͨͭ͠΋Γ
    • ߴͦ͏Ͱߴ͘ͳ͍গ͠ߴ͍ҙࣝ

    View full-size slide

  4. Ruby(Rails)ͷ͓͠͝ͱྺ
    • SNSύοέʔδɾडୗ։ൃ(Rails1.2)Λ2೥ؒ
    • ๭өըϝσΟΞαΠτ(Rails2.2)Λ2೥ؒ
    • Rubyόʔδϣϯ͸1.8.6 / 1.8.7

    View full-size slide

  5. PHPͷ͓͠͝ͱྺ
    • ECφϏ(PHP5)Ͱ3೥໨ɻ৭ʑͱ΍ͬͯ·͢
    ࠓ͸ࣗࣾϙΠϯτίϯςϯπ෦໳୲౰
    ϨΨγʔίʔυ -> ΦϨΦϨϑϨʔϜϫʔΫ
    Ͱͷ࠶ߏங͕࠷ۙͷओͳ͓͠͝ͱ

    View full-size slide

  6. ͜ͷτʔΫͷͬ͘͟Γ಺༰
    • ৽ଔ͔Β࢓ࣄͰRubyɾRuby on RailsͰ։ൃ͠
    ͯࢥͬͨ͜ͱɺ᩵୔ͳ೰Έ
    • ྺ࢙͋ΔPHP੡αʔϏεʹܞΘΓࢥͬͨ͜ͱ
    • ʲຊ୊ʳPHPʹܞΘΔํʑʹݴ͍͍ͨ͜ͱ

    View full-size slide

  7. ͜ͷτʔΫΛฉ͍ͯ΄͍͠ਓ
    • Ruby౳ͷΑ͘ग़དྷͨݴޠ͔ΒPHPʹҠͬͨਓ
    • Pͷͭ͘ݴޠʹܞΘΔͷʹগ͠ർΕͨํ
    • ຾͍ਓɺ΅ʔͬͱ͍ͨ͠ਓ
    • Ϟϯϋϯ4Λ΍Γ͍ͨਓʢ΍ͬͯ΋͍͍Ͱ͢ʣ

    View full-size slide

  8. session_start();

    View full-size slide

  9. ৽ଔ͔ΒRubyͰ

    View full-size slide

  10. Railsͷ্ͷ։ൃ

    View full-size slide

  11. Railsͷ্ͷ։ൃ
    • ؀ڥ͸ࠓఔܙ·Εͯͳ͍͚ͲRubyͳͷͰշద
    • RailsͷίΞ͕೉ͯ͘͠Α͘Θ͔Μͳ͍
    • Rails͔Β֎Εͨ͜ͱ͸͋·Γ΍ͬͯͳ͍
    • ઃܭ͢ΔԼ஍͕ແ͍ɾςετ͕ແ͍ͷͰɺ
    Ϟσϧ΋ίϯτϩʔϥ΋Ϗϡʔ΋Ԛ͍͜ͱ…

    View full-size slide

  12. Railsͷ্ͷ։ൃ
    • ৽ଔ΍Rails࢖ͬͨ͜ͱແ͍ਓ͕ଟΊͰɺ׆
    ༻ɾઃܭʹशख़ͨ͠ΤϯδχΞͱͷ࡞ۀ͸๬
    Έʹ͍͘ঢ়گʹ͋ͬͨ
    • ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭͰ
    ݴ͏ʮརޱͳUIʯʹͳΓ͕ͪͩͬͨ
    ->ϏδωεϩδοΫΛUIʹͿͪ͜Ή΍Γํ

    View full-size slide

  13. Rails࢖͍ͬͯͯ͜͏ࢥͬͨ
    • 2+2=4೥ಇ͍ͯRubyɾRails͸ͦͦ͜͜Θ͔ͬ
    ͚ͨͲɺଞͷٕज़ͱൺֱ͍ͨ͠ΑͶ
    • θϩ͔Βઃܭ࣮ͯ͠૷Ͱ͖ΔΑ͏ʹͳΓ͍ͨ
    • ͪΌΜͱςετॻ͍࣮ͯ૷͍ͨ͠
    • ΋͏ͪΐͬͱۤ࿑ͨ͠ํ͕͍͍Μ͡Όͳ͍͔

    View full-size slide

  14. ͱ͍͏Θ͚Ͱɺ
    ྺ࢙͋ΔPHP੡αʔϏεͷ
    ͋Δձࣾʹస৬͠·ͨ͠ɻ

    View full-size slide

  15. RailsΛ߱ΓͯPHP΁

    View full-size slide

  16. Θ͔ͬͯ͸͍͚ͨͲPHP͸
    • ؔ਺͕ΞϨͩ͠ଟ͖֮͗ͯ͑͢Εͳ͍
    (php.netͱstackoverflow.com͕ແ͍ͱ٧Ή)
    • ௚ײɾ੎͍ɾߟ͑Λίʔυʹ൓ө͠ʹ͍͘
    ൓ө͢Δ·Ͱʹ͕͔͔࣌ؒΓ͗͢Δ

    View full-size slide

  17. ϓϩμΫτ΋݁ߏେม
    • ྺ࢙ -> Ҩ࢈ -> ϨΨγʔίʔυ
    • ΦϨΦϨϑϨʔϜϫʔΫɺSymfony1ܥɺૉͷ
    PHPʹحົͳໟ͕ੜ͑ͨΑ͏ͳ΋ͷɺetc...
    • །ҰΦϨΦϨϑϨʔϜϫʔΫ͕Ұ൪·ͱ΋ͳͷ
    ͰɺͦΕʹ౷Ұ͍͖ͯͬ͘͠Όͳ͍

    View full-size slide

  18. ͜͏͍͏ΞϓϩʔνΛऔͬͨ
    • ૉ๿ͳ࡞ΓͷΦϨΦϨϑϨʔϜϫʔΫ͕Ұ௨Γ
    ͷػೳΛ͍࣋ͬͯͨͷͰɺͦΕΛ֦ு͠࢖͏
    • ݴޠ΋طଘίʔυ΋੍໿ͩΒ͚Ͱઃܭେࣄʹ
    • ୯ମςετʢPHPUnit + PhakeʣΛॻ͍ͯ͘
    • දࣔ֬ೝ͸͓޷͖ʹʢthor + selenium, etcʣ

    View full-size slide

  19. Ͱ΋Rails࢖ͬͯ͜͏ࢥͬͯͨ
    • 2+2=4೥ಇ͍ͯRubyɾRails͸ͦͦ͜͜Θ͔ͬ
    ͚ͨͲɺଞͷٕज़ͱൺֱ͍ͨ͠ΑͶ
    • θϩ͔Βઃܭ࣮ͯ͠૷Ͱ͖ΔΑ͏ʹͳΓ͍ͨ
    • ͪΌΜͱςετॻ͍࣮ͯ૷͍ͨ͠
    • ΋͏ͪΐͬͱۤ࿑ͨ͠ํ͕͍͍Μ͡Όͳ͍͔

    View full-size slide

  20. ࠓͷ͓͠͝ͱ͔ΒݟΔͱ
    • RubyɾRailsҎ֎ͷٕज़ͱൺֱ͍ͨ͠ => OK
    • θϩ͔Βઃܭ࣮ͯ͠૷ => OK
    • ͪΌΜͱςετॻ͍࣮ͯ૷͢Δ => OK
    • ΋͏ͪΐͬͱۤ࿑͢Δ => OK

    View full-size slide

  21. ๬Μͩ௨Γ͡Όͳ͍͔ʂ

    View full-size slide

  22. ͦΕʹ͜Μͳ͍͍͜ͱ΋͋Δ
    • ݴޠͱΦϨΦϨϑϨʔϜϫʔΫͷ੍໿্ɺૉ๿
    ͳ࡞Γʹͤ͟ΔΛಘͳ͍
    ->νʔϜͱͯ͠͸ίʔυڞ༗͠΍͍͢
    • WebΞϓϦέʔγϣϯͷجૅ͔Βߟ͑௚ͤΔ

    View full-size slide

  23. ͦΕʹ͜Μͳ͍͍͜ͱ΋͋Δ
    • ෆ۩߹ʹख͔ͭͣͷ؅ཧը໘Λͪΐ͍ͱ࡞Γ
    ௚͚ͨͩ͠Ͱӡ༻ෛՙେ෯ܰݮ -> େײँ
    • ػೳͱͯ͠͸े෼ͳͷʹ௨஌͕଍Γͯͳ͍ͷ
    Ͱγϯϓϧͳ௨஌ػೳ௥Ճ -> PVര্͛
    • ϨΨγʔίʔυ͕ແ͘ͳͬͨͱ͖ͷṖͷײಈ

    View full-size slide

  24. ͱ͍͏Θ͚Ͱ·ͱΊ
    • Ruby͔ΒPHPʹҠ͍͍ͬͯษڧʹͳͬͯΔ
    • ྲྀߦͷٕज़ʹ௥͍ͭ͘ͷ΋େࣄ͚ͩͲɺͦΕ
    ΛטΈࡅ͍ͯཧղ͢ΔϑΣʔζ΋େࣄͩΑ
    • ݹͯ͘ݱ໾ͳϏδωεϩδοΫΛ͍͍ײ͡ʹ
    ॻ͖׵͑Δ͓࢓ࣄ͸Ձ஋͕͋ΔΑ

    View full-size slide

  25. ͱ͍͏ɺ
    ݸਓతͳ;Γ͔͑ΓͰͨ͠ɻ

    View full-size slide

  26. ʲຊ୊ʳ
    PHPʹܞΘΔΑ͏ʹ
    ͳͬͨ OR ͳΔํʑʹ
    ݴ͍͍ͨ͜ͱ

    View full-size slide

  27. ʲ݁࿦ʳ
    PHP͸΍ͬͺΓ࢖͍ʹ͍͘
    Ϟνϕʔγϣϯ͕Լ͕Δͷ͸
    ͠ΐ͏͕ͳ͍ʂ

    View full-size slide

  28. Ϟνϕʔγϣϯ͸
    ߟ͑ํΛม͑Ε͹OK
    • ࢹ఺Λม͑Α͏
    • ϏδωεΛֶ΅͏
    • ਓΛ஌Ζ͏
    • PHPΛ࠶ධՁ͠Α͏

    View full-size slide

  29. ࢹ఺Λม͑Α͏
    • ϐϯν͸νϟϯε
    • ίʔυ͕Ԛ͗ͯ͢ϝϯςͰ͖ͳ͍ʁςετΛ
    ॻ͍ͯϦϑΝΫλϦϯά͢Δͱ͖ͩʂ
    • ͍ͭͰʹઃܭΛֶͿઈ޷ͷػձͰ͢

    View full-size slide

  30. ࢹ఺Λม͑Α͏
    • ࢓ࣄͰ΋ͳ͍ͱઃܭͱֶ͔͹ͳ͍Ͱ͠ΐʂ
    • ר͖ࠐ·Εܕͷड͚਎ମ࣭ͩͬͨΓɺՆٳΈ
    ͷ॓୊Λ࠷ऴ೔ʹ΍Δਓؒʹ͸͍͍͔΋
    • ҙࣝͷߴ͍օ͞Μ͝ΊΜͳ͍͞

    View full-size slide

  31. ϏδωεΛֶ΅͏
    • ϓϩάϥϛϯάͷ੒ޭ ≠ Ϗδωεͷ੒ޭ
    • ʲॏཁʳେଟ਺ͷਓʹͱͬͯେࣄͳͷ͸ίʔυ
    ϕʔεͰ͸ͳ͘Ϗδωε
    • ໨తͱखஈΛऔΓҧ͑ͪΌμϝ
    • ޿͘࢖ΘΕ͖ͯͨྺ࢙ͱݱঢ়͸ֶͿՁ஋͕͋Δ

    View full-size slide

  32. ਓΛ஌Ζ͏
    • શһ͕ϓϩάϥϛϯάLOVEͳΘ͚͡Ό͋ͳ͍
    • ҙࣝͷ௿͍ਓ΋౰વ͍Δ
    • ޷͖ͳϓϩάϥϛϯά≠ۚͷՔ͛Δϓϩάϥϛϯά
    ͱ͍͏ߟ͑ͷํ΋͍Δ
    • ൴Β൴ঁΒͷࢥ͍Λେࣄʹ͢Δͷ͸ɺؾ࣋ͪΑ͘
    ͓͠͝ͱ͢Δ্Ͱେࣄͳ͜ͱ

    View full-size slide

  33. PHPΛ࠶ධՁ͠Α͏
    • PHP5.5͸͍ͩͿਐԽͨ͠
    • ઃܭ΁ͷҙࣝɾऔΓ૊ΈΛධՁ͠Α͏
    • SlimɺSymfony2ɺBEAR.SundayɺComposer
    • ֶशίετͷ௿͞͸νʔϜ։ൃͰͷϝϦοτ

    View full-size slide

  34. Rubyist͕PHPΛDISΔͷ͸
    ݟ๞͖ͨ͠΋͏΍ΊΑ͏Α
    • ͦ΋ͦ΋ྺ࢙ɾจ຺͕ҧ͏͜ͱΛߟྀ͠Α͏
    • DisΔՋ͕ͳ͍͙Β͍ʹ͸ݟॴ͕͋Γ·͢Α
    • PHPΛ࢖ͬͯ΋ΩϨͳ͍͙Β͍ʹ͸͓͓Β͔
    ͳؾ࣋ͪΛཆ͓͏

    View full-size slide