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

10年を超えるレガシーwebサービスの重複ライブラリを削除してコード量を2:3にした話

 10年を超えるレガシーwebサービスの重複ライブラリを削除してコード量を2:3にした話

Webアプリケーションのコードも歴史的経緯から歪な形へとなっていくもの。
私の担当しているサービスでは同じPEARライブラリが重複を気にせずたくさん入れられ、
一筋縄では解けないほどの複雑なファイル依存関係が出来上がりました。

一度ハマってしまえば二度と抜け出せない底なし沼のような依存関係を解決すべく、
重複したPEARライブラリと調査・特定・composerへ追い出して
結果的に12万行(リポジトリの1/3)削除した話をしようと思います。

同じようにレガシーPHPを扱っていて、
DRYでないコードに苦しんでいる方々の参考になれたらと思います。

Satoshi Kawashima

July 02, 2016
Tweet

More Decks by Satoshi Kawashima

Other Decks in Technology

Transcript

  1. ΞϓϦέʔγϣϯίʔυͷߏ଄ w ΞϓϦέʔγϣϯϧʔτ഑Լʹ΋ 1&"3ύοέʔδ͕ஔ͔Ε͍ͯΔ w ϥΠϒϥϦஔ͖৔͕̏ͭ͋Γɺ1&"3 ύοέʔδͱࣗ࡞ΫϥεΛஔ͔Εͯ ͍Δ w ʹܭ̐Օॴʹ1&"3ύοέʔδ͕

    ஔ͔Ε͍ͯΔঢ়ଶ w ಉ͡1&"3ύοέʔδ͕߹ܭݸஔ ͔ΕͯΓ͍ͯ͠Δ /path/to/app /path/to/php/lib PEARύοέʔδ … libraryA libraryB PEARύοέʔδ … PEARύοέʔδ … libraryC PEARύοέʔδ …
  2. MJCSBSZ" MJCSBSZ# ϥΠϒϥϦͷ࢖ΘΕํ 1&"3ύοέʔδ 1&"3ύοέʔδ 1&"3ύοέʔδ ࣗ࡞Ϋϥε ΤϯτϦ ϙΠϯτ JODMVEF@QBUIʹ

    MJCSBSZ"Λ௥Ճ 1&"3ύοέʔδ 1&"3ύοέʔδ 1&"3ύοέʔδ ʢಠࣗमਖ਼͋Γʣ ૬ରύεͰͷSFRVJSF ઈରύεͰͷSFRVJSF
  3. ൃੜ͍ͯͨ͠໰୊ͷ۩ମྫ ΤϯτϦ ϙΠϯτ JODMVEF@QBUIʹ MJCSBSZ#Λ௥Ճ MJCSBSZ# MJCSBSZ" 1&"3ύοέʔδ 1&"3ύοέʔδ 1&"3ύοέʔδ

    ࣗ࡞Ϋϥε ΤϯτϦ ϙΠϯτ 1&"3ύοέʔδ 1&"3ύοέʔδ 1&"3ύοέʔδ ʢಠࣗमਖ਼͋Γʣ ಉ͡1&"3ύοέʔδʢʹΫϥεʣͰΫ ϥεೋॏఆٛʹΑΓ'BUBM&SSPS ࣮͸ಉ͡1&"3ύοέʔδʢʹΫϥεʣ ͰɺΫϥεೋॏఆٛʹΑΓ'BUBM&SSPS JODMVEF@QBUIʹΑͬͯ ͳΜ͔ಈ͖ํ͕ҧ͏ ૬ରύεͰͷSFRVJSF ઈରύεͰͷSFRVJSF
  4. SFRVJSF࣌ͷ໰୊ JODMVEF@QBUIʹϥΠϒ ϥϦஔ͖৔#Λ௥Ճ ૬ରύεͰͷSFRVJSF ઈରύεͰͷSFRVJSF MJCSBSZ# MJCSBSZ" 1&"3ύοέʔδ 1&"3ύοέʔδ 1&"3ύοέʔδ

    ࣗ࡞Ϋϥε 1&"3ύοέʔδ 1&"3ύοέʔδ 1&"3ύοέʔδ ʢಠࣗमਖ਼͋Γʣ ΤϯτϦϙΠϯτͬͯͲ͜ʁ ΤϯτϦ ϙΠϯτ ΤϯτϦ ϙΠϯτ
  5. MJCSBSZ# JODMVEF@QBUIΛௐ੔͢Δ )551  QBUIUPQIQMJC )551@)FBEFS  )551@3FRVFTU  JODMVEF@QBUI༏ઌॱҐ

    ߴ ௿ )551@3FRVFTU  ಠ֦ࣗு DPNQPTFS΁ Ҡߦ͢Δ ύοέʔδ ҠߦෆՄ ύοέʔδ %#  ಠࣗमਖ਼
  6. MJCSBSZ# JODMVEF@QBUIΛௐ੔͢Δ )551  QBUIUPQIQMJC )551@)FBEFS  )551@3FRVFTU  JODMVEF@QBUI༏ઌॱҐ

    ߴ ௿ )551@3FRVFTU  ಠ֦ࣗு DPNQPTFS΁ Ҡߦ͢Δ ύοέʔδ ҠߦෆՄ ύοέʔδ DPNQPTFS )551  )551@)FBEFS  )551@3FRVFTU  ಠ֦ࣗு %#  %#  ಠࣗमਖ਼
  7. MJCSBSZ# JODMVEF@QBUIΛௐ੔͢Δ JODMVEF@QBUI༏ઌॱҐ ߴ ௿ DPNQPTFS΁ Ҡߦ͢Δ ύοέʔδ ҠߦෆՄ ύοέʔδ

    DPNQPTFS )551  )551@)FBEFS  )551@3FRVFTU  ಠ֦ࣗு %#  %#  ಠࣗमਖ਼